RepairPersonnelService.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package com.fdkankan.sale.service.impl;
  2. import java.math.BigDecimal;
  3. import java.util.Date;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.sale.common.PageInfo;
  8. import com.fdkankan.sale.common.RepairStatusEnum;
  9. import com.fdkankan.sale.common.ResultCode;
  10. import com.fdkankan.sale.entity.*;
  11. import com.fdkankan.sale.exception.BusinessException;
  12. import com.fdkankan.sale.service.*;
  13. import com.fdkankan.sale.util.DateUtil;
  14. import com.fdkankan.sale.util.StatusUtil;
  15. import com.fdkankan.sale.vo.request.*;
  16. import com.fdkankan.sale.vo.response.CheckRegisterVo;
  17. import com.fdkankan.sale.vo.response.RepairRegisterPartVo;
  18. import com.fdkankan.sale.vo.response.RepairerVo;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import javax.swing.text.EditorKit;
  24. import javax.swing.text.html.parser.Entity;
  25. import java.util.ArrayList;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.stream.Collectors;
  29. @Service
  30. public class RepairPersonnelService {
  31. @Autowired
  32. IRepairService repairService;
  33. @Autowired
  34. IRepairLogService repairLogService;
  35. @Autowired
  36. IOrderReceivingService orderReceivingService;
  37. @Autowired
  38. ICustomerService customerService;
  39. @Autowired
  40. ICustomerAddressService customerAddressService;
  41. @Autowired
  42. ICameraService cameraService;
  43. @Autowired
  44. ISysUserService sysUserService;
  45. @Autowired
  46. IRepairRegisterService repairRegisterService;
  47. @Autowired
  48. IRepairRegisterPartService repairRegisterPartService;
  49. @Autowired
  50. IRepairFaultService repairFaultService;
  51. @Autowired
  52. IPriceListService priceListService;
  53. @Autowired
  54. IPartService partService;
  55. @Autowired
  56. IRepairRegisterLogService repairRegisterLogService;
  57. /**
  58. * 维修工程师
  59. * statusParam 0 待检测,1待跟进,2维修完成
  60. * * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试,
  61. * * 80待支付(已完结),90待回收,100待发货,110已发货
  62. */
  63. public Object repairerOrderList(RepairParam param) {
  64. List<Integer> repairStatus = StatusUtil.getRepairerStatus(param.getStatusParam());
  65. param.setStatusList(repairStatus);
  66. Page<RepairerVo> voPage = repairService.repairerOrderList(param);
  67. sysUserService.setSaleNameAndRepairManName(voPage.getRecords());
  68. return PageInfo.PageInfo(voPage);
  69. }
  70. public void checkRegister(CheckRegisterParam param, Long userId) {
  71. if(StringUtils.isBlank(param.getRepairId()) || StringUtils.isBlank(param.getCheckResult())
  72. || param.getFaultIds() ==null || param.getFaultIds().size() <=0 || param.getDefineDamage() == null){
  73. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  74. }
  75. Repair repair = repairService.getById(param.getRepairId());
  76. if(repair == null){
  77. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  78. }
  79. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status())){ //待检测
  80. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  81. }
  82. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  83. if(repairRegister == null){
  84. repairRegister = new RepairRegister();
  85. }
  86. Integer repairRegisterId = repairRegister.getRepairRegisterId();
  87. BeanUtils.copyProperties(param,repairRegister);
  88. if(repairRegister.getDefineDamage() == 1 && repair.getWarrantyType() == 0){
  89. repairService.updateWarrantyType(repair.getRepairId(),1);
  90. }
  91. repairRegister.setRepairRegisterId(repairRegisterId);
  92. repairRegister.setSysUserId(userId);
  93. repairRegisterService.saveOrUpdate(repairRegister);
  94. Integer repairStatus = RepairStatusEnum.TO_BE_QUOTED.status();
  95. if(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){
  96. if(param.getPartList().size() >0){
  97. repairStatus = RepairStatusEnum.TO_BE_U8SEND.status();
  98. }else {
  99. repairStatus = RepairStatusEnum.TO_BE_REPAIRED.status();
  100. }
  101. }
  102. repairRegister.setStatus(0);
  103. RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister);
  104. repairLogService.saveBySysUser(userId,repair.getRepairId(),repairStatus,repair.getStatus(),"维修检测",null,repairRegisterLog.getRegisterLogId());
  105. this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId());
  106. repairFaultService.delByRepairId(repair.getRepairId());
  107. for (Integer faultId : param.getFaultIds()) {
  108. RepairFault fault = new RepairFault();
  109. fault.setRepairId(repair.getRepairId());
  110. fault.setRepairRegisterId(repairRegister.getRepairRegisterId());
  111. fault.setFaultId(faultId);
  112. repairFaultService.save(fault);
  113. }
  114. }
  115. private void addRepairPart(List<RepairRegisterPartVo> partVoList,Repair repair,RepairRegister repairRegister,Integer registerLogId) {
  116. for (RepairRegisterPartVo partVo : partVoList) {
  117. Part part = partService.getById(partVo.getPartId());
  118. if(part == null){
  119. continue;
  120. }
  121. RepairRegisterPart repairRegisterPart = new RepairRegisterPart();
  122. repairRegisterPart.setRepairId(repair.getRepairId());
  123. repairRegisterPart.setRepairRegisterId(repairRegister.getRepairRegisterId());
  124. repairRegisterPart.setPartId(partVo.getPartId());
  125. repairRegisterPart.setPartCount(partVo.getPartCount());
  126. repairRegisterPart.setRegisterLogId(registerLogId);
  127. repairRegisterPartService.save(repairRegisterPart);
  128. PriceList priceList = new PriceList();
  129. priceList.setRepairId(repair.getRepairId());
  130. priceList.setName(part.getPartName());
  131. priceList.setPrice(part.getPartPrice());
  132. priceList.setCount(partVo.getPartCount());
  133. priceList.setPartId(part.getPartId());
  134. priceList.setPriceDiscount(part.getPartPriceDiscount());
  135. if(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){
  136. priceList.setStatus(1);
  137. }
  138. priceListService.save(priceList);
  139. }
  140. }
  141. public void repairAddPart(CheckRegisterParam param, Long userId) {
  142. Repair repair = repairService.getById(param.getRepairId());
  143. if(repair == null){
  144. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  145. }
  146. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //维修中
  147. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  148. }
  149. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  150. if(repairRegister == null){
  151. throw new BusinessException(ResultCode.REPAIR_CHECK_EMPTY);
  152. }
  153. repairRegister.setStatus(1);
  154. repairRegister.setCheckResult(param.getCheckResult());
  155. repairRegister.setCheckImg(param.getCheckImg());
  156. RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister);
  157. this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId());
  158. if(repair.getWarrantyType() == 0){
  159. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_U8SEND.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId());
  160. }else {
  161. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_QUOTED.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId());
  162. }
  163. }
  164. public void repairOver(CheckRegisterParam param, Long userId) {
  165. if(param.getRepairId() == null || StringUtils.isBlank(param.getRemark())){
  166. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  167. }
  168. Repair repair = repairService.getById(param.getRepairId());
  169. if(repair == null){
  170. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  171. }
  172. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){
  173. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  174. }
  175. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),repair.getStatus(),"维修完成");
  176. // List<PriceList> priceListList = priceListService.getByRepairId(repair.getRepairId());
  177. // List<PriceList> collect = priceListList.stream().filter(entity ->entity.getType()== 0 && entity.getRecoveryStatus() == 0).collect(Collectors.toList());
  178. // if(collect.size() >0){
  179. // repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),"维修完成");
  180. // }else {
  181. // repairLogService.saveBySysUser(userId,repair.getRepairId(), RepairStatusEnum.TO_BE_PAID.status(), "维修完成");
  182. // }
  183. repairRegisterService.repairOver(repair.getRepairId(),param.getRemark(),userId);
  184. }
  185. }