TbIndentController.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package com.sqx.modules.errand.controller;
  2. import com.sqx.common.exception.SqxException;
  3. import com.sqx.common.utils.DateUtils;
  4. import com.sqx.common.utils.Result;
  5. import com.sqx.modules.app.entity.UserEntity;
  6. import com.sqx.modules.app.service.UserService;
  7. import com.sqx.modules.common.entity.CommonInfo;
  8. import com.sqx.modules.common.service.CommonInfoService;
  9. import com.sqx.modules.datacentre.query.DataCenterQuery;
  10. import com.sqx.modules.errand.entity.TbIndent;
  11. import com.sqx.modules.errand.entity.TransferRecordEntity;
  12. import com.sqx.modules.errand.service.TbIndentService;
  13. import com.sqx.modules.errand.service.TransferRecordService;
  14. import com.sqx.modules.order.entity.TbOrder;
  15. import com.sqx.modules.order.service.AppOrderService;
  16. import com.sqx.modules.riderStation.entity.RiderStation;
  17. import com.sqx.modules.riderStation.service.RiderStationService;
  18. import com.sqx.modules.utils.SenInfoCheckUtil;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.GetMapping;
  24. import org.springframework.web.bind.annotation.PostMapping;
  25. import org.springframework.web.bind.annotation.RequestMapping;
  26. import org.springframework.web.bind.annotation.RestController;
  27. import java.text.SimpleDateFormat;
  28. import java.util.ArrayList;
  29. import java.util.Date;
  30. import java.util.List;
  31. @RestController
  32. @RequestMapping("/admin/tbindent")
  33. @Api(value = "管理端-跑腿订单", tags = {"管理端-跑腿订单"})
  34. public class TbIndentController {
  35. @Autowired
  36. private TbIndentService tbIndentService;
  37. @Autowired
  38. private UserService userService;
  39. @Autowired
  40. private CommonInfoService commonInfoService;
  41. @Autowired
  42. private AppOrderService appOrderService;
  43. @Autowired
  44. private RiderStationService riderStationService;
  45. @Autowired
  46. private TransferRecordService transferRecordService;
  47. @ApiOperation("查看所有派单任务")
  48. @GetMapping(value = "findallIndent")
  49. public Result findallIndent(Integer page, Integer limit, Long userId, Long riderUserId, Long shopId,Integer indentType,String ordersNo,Integer status,String riderPhone){
  50. return tbIndentService.findallIndent(page, limit, userId, riderUserId, shopId,indentType,ordersNo,status,riderPhone);
  51. }
  52. @ApiOperation("任务中心 查看所有订单")
  53. @PostMapping(value = "findAllIndent")
  54. public Result findAllIndent(String indentType, String phone, String indentState, Integer page, Integer limit, String date, String dateType,String riderPhone){
  55. return tbIndentService.findAllIndent(indentType, phone, indentState, page, limit, date, dateType,riderPhone);
  56. }
  57. @ApiOperation("任务中心 查看所有订单")
  58. @PostMapping(value = "findAllIndents")
  59. public Result findAllIndents(String indentType, String phone, String indentState, Integer page, Integer limit, String date, String dateType,String riderPhone){
  60. return tbIndentService.findAllIndents(indentType, phone, indentState, page, limit, date, dateType,riderPhone);
  61. }
  62. @ApiOperation("订单中心")
  63. @PostMapping(value = "IndentCenter")
  64. public Result IndentCenter(Integer page, Integer limit, String indentType, String indentNumber, String indentState, String phone, String date, String dateType){
  65. return tbIndentService.IndentCenter(page, limit, indentType, indentNumber, indentState, phone, date, dateType);
  66. }
  67. @ApiOperation("管理端修改订单状态")
  68. @PostMapping(value = "updateIndentState")
  69. public Result updateIndentState(String indentNumber, String indentState){
  70. return tbIndentService.updateIndentState(indentNumber, indentState);
  71. }
  72. @ApiOperation("管理员下架订单")
  73. @PostMapping(value = "adminSoldOutIndent")
  74. public Result adminSoldOutIndent(String indentNumber){
  75. return tbIndentService.adminSoldOutIndent(indentNumber);
  76. }
  77. @PostMapping(value = "riderCancleIndent")
  78. @ApiOperation("骑手取消订单")
  79. public Result riderCancleIndent(String indentNumber){
  80. return tbIndentService.riderCancleIndent(indentNumber,2);
  81. }
  82. @ApiOperation("数据中心")
  83. @GetMapping(value = "findDataCenter")
  84. public Result findDataCenter(){
  85. return tbIndentService.findDataCenter();
  86. }
  87. @ApiOperation("任务分析")
  88. @GetMapping(value = "taskAnalysis")
  89. public Result taskAnalysis(DataCenterQuery query, String indentState){
  90. return tbIndentService.taskAnalysis(query, indentState);
  91. }
  92. @ApiOperation("订单分析")
  93. @GetMapping(value = "selectOrderByStatus")
  94. public Result selectOrderByStatus(DataCenterQuery query){
  95. return tbIndentService.selectOrderByStatus(query);
  96. }
  97. @ApiOperation("骑手收入统计 完成订单数统计")
  98. @GetMapping(value = "findIncome")
  99. public Result findIncome(Long userId, String date, String dateType, Integer page, Integer limit){
  100. return tbIndentService.findIncome(userId, date, dateType, page, limit);
  101. }
  102. @ApiOperation("转单")
  103. @PostMapping("/transferOfOrder")
  104. public Result transferOfOrder(Long indentId,Long riderUserId){
  105. TbIndent indent = tbIndentService.getById(indentId);
  106. if("5".equals(indent.getIndentType())){
  107. TbOrder tbOrder = appOrderService.getById(indent.getOrderId());
  108. if(tbOrder.getAutoSendOrder()!=null && tbOrder.getAutoSendOrder()==1){
  109. return Result.error("商家配送不允许转单!");
  110. }
  111. }
  112. if (!"3".equals(indent.getIndentState()) && !"4".equals(indent.getIndentState())) {
  113. throw new SqxException("订单状态发生变更,请刷新后重试!");
  114. }
  115. UserEntity indentuserEntity = userService.selectUserById(indent.getRiderUserId());
  116. if(indentuserEntity == null){
  117. throw new SqxException("订单骑手已失效,无法发起转单!");
  118. }
  119. UserEntity userEntity = userService.selectUserById(riderUserId);
  120. if(userEntity == null){
  121. throw new SqxException("被转单骑手已失效,无法发起转单!");
  122. }
  123. if(userEntity.getRiderStationId().intValue() != indentuserEntity.getRiderStationId().intValue()){
  124. throw new SqxException("无法选择其他站点骑手进行转单操作!");
  125. }
  126. CommonInfo one1 = commonInfoService.findOne(273);
  127. Double cashDeposit = Double.parseDouble(one1.getValue());
  128. if(userEntity.getCashDeposit().doubleValue()<cashDeposit){
  129. return Result.error("骑手保证金不足!");
  130. }
  131. if(!"1".equals(userEntity.getCheckCertification())){
  132. return Result.error("骑手未进行实名认证!");
  133. }
  134. if(indent.getRiderUserId()!=null && userEntity.getUserId().equals(indent.getRiderUserId())){
  135. return Result.error("不能选择相同的骑手!");
  136. }
  137. indent.setRiderUserId(riderUserId);
  138. indent.setIsRider(1);
  139. tbIndentService.updateById(indent);
  140. //获取站点内容
  141. RiderStation station = riderStationService.stationById(userEntity.getRiderStationId());
  142. if(station != null){
  143. userEntity.setStationName(station.getStationName());
  144. }
  145. String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
  146. TransferRecordEntity tr = new TransferRecordEntity();
  147. tr.setUserId(userEntity.getUserId());
  148. tr.setUserName(userEntity.getUserName());
  149. tr.setUserPhone(userEntity.getPhone());
  150. tr.setOrderId(indent.getOrderId());
  151. tr.setReceveTime(format);
  152. tr.setStationName(station.getStationName());
  153. tr.setDeleteFlag(0);
  154. transferRecordService.insertPrintInfo(tr);
  155. UserEntity user = userService.getById(indent.getUserId());
  156. CommonInfo one = commonInfoService.findOne(335);
  157. List<String> msgList=new ArrayList<>();
  158. msgList.add(0,indent.getIndentNumber());
  159. if("3".equals(indent.getIndentState())){
  160. msgList.add(1,"已接单");
  161. }else if("4".equals(indent.getIndentState())){
  162. msgList.add(1,"已取货");
  163. }else{
  164. msgList.add(1,"进行中");
  165. }
  166. msgList.add(2,"骑手已更换,新骑手将尽快为您送达");
  167. msgList.add(3, DateUtils.format(new Date()));
  168. if(StringUtils.isNotEmpty(user.getOpenId())){
  169. SenInfoCheckUtil.sendMsg(user.getOpenId(),one.getValue(),msgList,5);
  170. }
  171. if(StringUtils.isNotEmpty(user.getClientid())){
  172. userService.pushToSingle("更换骑手","骑手已更换,新骑手将尽快为您送达",user.getClientid());
  173. }
  174. return Result.success();
  175. }
  176. }