RepairPersonnelService.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  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.RepairRegisterCheckVo;
  18. import com.fdkankan.sale.vo.response.RepairRegisterPartVo;
  19. import com.fdkankan.sale.vo.response.RepairerVo;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import javax.swing.text.EditorKit;
  25. import javax.swing.text.html.parser.Entity;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.stream.Collectors;
  30. @Service
  31. public class RepairPersonnelService {
  32. @Autowired
  33. IRepairService repairService;
  34. @Autowired
  35. IRepairLogService repairLogService;
  36. @Autowired
  37. IOrderReceivingService orderReceivingService;
  38. @Autowired
  39. ICustomerService customerService;
  40. @Autowired
  41. ICustomerAddressService customerAddressService;
  42. @Autowired
  43. ICameraService cameraService;
  44. @Autowired
  45. ISysUserService sysUserService;
  46. @Autowired
  47. IRepairRegisterService repairRegisterService;
  48. @Autowired
  49. IRepairRegisterPartService repairRegisterPartService;
  50. @Autowired
  51. IRepairFaultService repairFaultService;
  52. @Autowired
  53. IPriceListService priceListService;
  54. @Autowired
  55. IPartService partService;
  56. @Autowired
  57. IRepairRegisterLogService repairRegisterLogService;
  58. @Autowired
  59. RepairSupplyService repairSupplyService;
  60. /**
  61. * 维修工程师
  62. * statusParam 0 待检测,1待跟进,2维修完成
  63. * * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试,
  64. * * 80待支付(已完结),90待回收,100待发货,110已发货
  65. */
  66. public Object repairerOrderList(RepairParam param) {
  67. List<Integer> repairStatus = StatusUtil.getRepairerStatus(param.getStatusParam());
  68. param.setStatusList(repairStatus);
  69. Page<RepairerVo> voPage = repairService.repairerOrderList(param);
  70. sysUserService.setSaleNameAndRepairManName(voPage.getRecords());
  71. return PageInfo.PageInfo(voPage);
  72. }
  73. public void checkRegister(CheckRegisterParam param, Long userId) {
  74. if(StringUtils.isBlank(param.getRepairId()) || StringUtils.isBlank(param.getCheckResult())
  75. || param.getFaultIds() ==null || param.getFaultIds().size() <=0 || param.getDefineDamage() == null){
  76. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  77. }
  78. Repair repair = repairService.getById(param.getRepairId());
  79. if(repair == null){
  80. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  81. }
  82. if(StatusUtil.getWarranty(repair.getWarrantyType())){
  83. if(param.getPartList().size() >0){
  84. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status())
  85. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status())
  86. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_PREPARED.status())){ //待检测
  87. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  88. }
  89. }else {
  90. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status())
  91. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status())
  92. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //待检测
  93. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  94. }
  95. }
  96. }else {
  97. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status())
  98. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status()) ){ //待检测
  99. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  100. }
  101. }
  102. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  103. if(repairRegister == null){
  104. repairRegister = new RepairRegister();
  105. }
  106. Integer repairRegisterId = repairRegister.getRepairRegisterId();
  107. BeanUtils.copyProperties(param,repairRegister);
  108. if(repairRegister.getDefineDamage() == 1 && repair.getWarrantyType() == 0){
  109. repairService.updateWarrantyType(repair.getRepairId(),1);
  110. }
  111. repairRegister.setRepairRegisterId(repairRegisterId);
  112. repairRegister.setSysUserId(userId);
  113. repairRegisterService.saveOrUpdate(repairRegister);
  114. Integer repairStatus = RepairStatusEnum.TO_BE_QUOTED.status();
  115. if(StatusUtil.getWarranty(repair.getWarrantyType(),repairRegister.getDefineDamage())){
  116. if(param.getPartList().size() >0){
  117. repairStatus = RepairStatusEnum.TO_BE_PREPARED.status();
  118. }else {
  119. repairStatus = RepairStatusEnum.TO_BE_REPAIRED.status();
  120. }
  121. }
  122. repairRegister.setStatus(0);
  123. repairRegisterLogService.delByRepairId(param.getRepairId());
  124. RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister);
  125. repairLogService.saveBySysUser(userId,repair.getRepairId(),repairStatus,repair.getStatus(),"维修检测",null,repairRegisterLog.getRegisterLogId());
  126. //repairRegisterService.delByRepairId(param.getRepairId());
  127. priceListService.delNoCm(param.getRepairId());
  128. repairRegisterPartService.delByRepairId(param.getRepairId());
  129. this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId());
  130. repairFaultService.delByRepairId(repair.getRepairId());
  131. for (Integer faultId : param.getFaultIds()) {
  132. RepairFault fault = new RepairFault();
  133. fault.setRepairId(repair.getRepairId());
  134. fault.setRepairRegisterId(repairRegister.getRepairRegisterId());
  135. fault.setFaultId(faultId);
  136. repairFaultService.save(fault);
  137. }
  138. }
  139. private void addRepairPart(List<RepairRegisterPartVo> partVoList,Repair repair,RepairRegister repairRegister,Integer registerLogId) {
  140. for (RepairRegisterPartVo partVo : partVoList) {
  141. Part part = partService.getById(partVo.getPartId());
  142. if(part == null){
  143. continue;
  144. }
  145. RepairRegisterPart repairRegisterPart = new RepairRegisterPart();
  146. repairRegisterPart.setRepairId(repair.getRepairId());
  147. repairRegisterPart.setRepairRegisterId(repairRegister.getRepairRegisterId());
  148. repairRegisterPart.setPartId(partVo.getPartId());
  149. repairRegisterPart.setPartCount(partVo.getPartCount());
  150. repairRegisterPart.setRegisterLogId(registerLogId);
  151. repairRegisterPartService.save(repairRegisterPart);
  152. PriceList priceList = new PriceList();
  153. priceList.setRepairId(repair.getRepairId());
  154. priceList.setName(part.getPartName());
  155. priceList.setPrice(part.getPartPrice());
  156. priceList.setCount(partVo.getPartCount());
  157. priceList.setPartId(part.getPartId());
  158. priceList.setPriceDiscount(part.getPartPriceDiscount());
  159. if(StatusUtil.getWarranty(repair.getWarrantyType(),repairRegister.getDefineDamage())){
  160. priceList.setStatus(1);
  161. }
  162. priceListService.save(priceList);
  163. }
  164. }
  165. public void repairAddPart(CheckRegisterParam param, Long userId) {
  166. Repair repair = repairService.getById(param.getRepairId());
  167. if(repair == null){
  168. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  169. }
  170. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //维修中
  171. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  172. }
  173. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  174. if(repairRegister == null){
  175. throw new BusinessException(ResultCode.REPAIR_CHECK_EMPTY);
  176. }
  177. repairRegister.setStatus(1);
  178. repairRegister.setCheckResult(param.getCheckResult());
  179. repairRegister.setCheckImg(param.getCheckImg());
  180. RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister);
  181. this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId());
  182. if(StatusUtil.getWarranty(repair.getWarrantyType())){
  183. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_PREPARED.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId());
  184. }else {
  185. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_QUOTED.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId());
  186. }
  187. }
  188. public void repairOver(CheckRegisterParam param, Long userId) {
  189. if(param.getRepairId() == null || StringUtils.isBlank(param.getRemark())){
  190. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  191. }
  192. Repair repair = repairService.getById(param.getRepairId());
  193. if(repair == null){
  194. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  195. }
  196. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){
  197. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  198. }
  199. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),repair.getStatus(),"维修完成");
  200. // List<PriceList> priceListList = priceListService.getByRepairId(repair.getRepairId());
  201. // List<PriceList> collect = priceListList.stream().filter(entity ->entity.getType()== 0 && entity.getRecoveryStatus() == 0).collect(Collectors.toList());
  202. // if(collect.size() >0){
  203. // repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),"维修完成");
  204. // }else {
  205. // repairLogService.saveBySysUser(userId,repair.getRepairId(), RepairStatusEnum.TO_BE_PAID.status(), "维修完成");
  206. // }
  207. repairRegisterService.repairOver(repair.getRepairId(),param.getRemark(),userId);
  208. }
  209. public Object checkRegisterInfo(String repairId) {
  210. RepairRegister repairRegister = repairRegisterService.getByRepairId(repairId);
  211. RepairRegisterCheckVo vo = new RepairRegisterCheckVo();
  212. BeanUtils.copyProperties(repairRegister,vo);
  213. List<RepairFault> repairFaults = repairFaultService.getByRepairId(repairId);
  214. List<Integer> collect = repairFaults.stream().map(RepairFault::getFaultId).collect(Collectors.toList());
  215. vo.setFaultIds(collect);
  216. List<RepairRegisterPart> byRepairId = repairRegisterPartService.getByRepairId(repairId);
  217. HashMap<Integer, Part> hashMap = partService.getHashMap();
  218. List<RepairRegisterPartVo> partVoList = new ArrayList<>();
  219. for (RepairRegisterPart repairRegisterPart : byRepairId) {
  220. RepairRegisterPartVo partVo = new RepairRegisterPartVo();
  221. BeanUtils.copyProperties(repairRegisterPart,partVo);
  222. Part part = hashMap.get(repairRegisterPart.getPartId());
  223. if(part != null){
  224. partVo.setPartNum(part.getPartNum());
  225. partVo.setPartName(part.getPartName());
  226. }
  227. partVoList.add(partVo);
  228. }
  229. vo.setPartList(partVoList);
  230. return vo;
  231. }
  232. }