RepairPersonnelService.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. /**
  56. * 维修工程师
  57. * statusParam 0 待检测,1待跟进,2维修完成
  58. * * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试,
  59. * * 80待支付(已完结),90待回收,100待发货,110已发货
  60. */
  61. public Object repairerOrderList(RepairParam param) {
  62. List<Integer> repairStatus = StatusUtil.getRepairerStatus(param.getStatusParam());
  63. param.setStatusList(repairStatus);
  64. Page<RepairerVo> voPage = repairService.repairerOrderList(param);
  65. sysUserService.setSaleNameAndRepairManName(voPage.getRecords());
  66. return PageInfo.PageInfo(voPage);
  67. }
  68. public CheckRegisterVo checkRegisterInfo(String repairId) {
  69. Repair repair = repairService.getById(repairId);
  70. if(repair == null){
  71. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  72. }
  73. return repairRegisterService.getCheckVoByRepairId(repairId);
  74. }
  75. public void checkRegister(CheckRegisterParam param, Long userId) {
  76. if(StringUtils.isBlank(param.getRepairId()) || StringUtils.isBlank(param.getCheckResult())
  77. || param.getFaultIds() ==null || param.getFaultIds().size() <=0 || param.getDefineDamage() == null){
  78. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  79. }
  80. Repair repair = repairService.getById(param.getRepairId());
  81. if(repair == null){
  82. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  83. }
  84. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status())){ //待检测
  85. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  86. }
  87. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  88. if(repairRegister == null){
  89. repairRegister = new RepairRegister();
  90. }
  91. Integer repairRegisterId = repairRegister.getRepairRegisterId();
  92. BeanUtils.copyProperties(param,repairRegister);
  93. if(repairRegister.getDefineDamage() == 1 && repair.getWarrantyType() == 0){
  94. repairService.updateWarrantyType(repair.getRepairId(),1);
  95. }
  96. repairRegister.setRepairRegisterId(repairRegisterId);
  97. repairRegister.setSysUserId(userId);
  98. repairRegisterService.saveOrUpdate(repairRegister);
  99. List<RepairRegisterPart> registerParts = repairRegisterPartService.getByRepairId(param.getRepairId());
  100. HashMap<Integer,Integer> partIdMap = new HashMap<>();
  101. registerParts.forEach(entity -> partIdMap.putIfAbsent(entity.getPartId(),entity.getId()));
  102. Integer repairStatus = RepairStatusEnum.TO_BE_QUOTED.status();
  103. if(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){
  104. if(param.getPartList().size() >0){
  105. repairStatus = RepairStatusEnum.TO_BE_PREPARED.status();
  106. }else {
  107. repairStatus = RepairStatusEnum.TO_BE_REPAIRED.status();
  108. }
  109. }
  110. repairLogService.saveBySysUser(userId,repair.getRepairId(),repairStatus,"维修检测");
  111. this.addRepairPart(param.getPartList(),repair,repairRegister,partIdMap);
  112. repairFaultService.delByRepairId(repair.getRepairId());
  113. for (Integer faultId : param.getFaultIds()) {
  114. RepairFault fault = new RepairFault();
  115. fault.setRepairId(repair.getRepairId());
  116. fault.setRepairRegisterId(repairRegister.getRepairRegisterId());
  117. fault.setFaultId(faultId);
  118. repairFaultService.save(fault);
  119. }
  120. }
  121. private void addRepairPart(List<RepairRegisterPartVo> partVoList,Repair repair,RepairRegister repairRegister,HashMap<Integer,Integer> partIdMap ) {
  122. for (RepairRegisterPartVo partVo : partVoList) {
  123. Part part = partService.getById(partVo.getPartId());
  124. if(part == null){
  125. continue;
  126. }
  127. RepairRegisterPart repairRegisterPart = new RepairRegisterPart();
  128. repairRegisterPart.setRepairId(repair.getRepairId());
  129. repairRegisterPart.setRepairRegisterId(repairRegister.getRepairRegisterId());
  130. repairRegisterPart.setPartId(partVo.getPartId());
  131. repairRegisterPart.setPartCount(partVo.getPartCount());
  132. if(partIdMap != null && partIdMap.get(partVo.getPartId())!=null){
  133. repairRegisterPart.setId(partIdMap.get(partVo.getPartId()));
  134. }
  135. repairRegisterPartService.saveOrUpdate(repairRegisterPart);
  136. PriceList priceList = new PriceList();
  137. priceList.setRepairId(repair.getRepairId());
  138. priceList.setName(part.getPartName());
  139. priceList.setPrice(part.getPartPrice());
  140. priceList.setCount(partVo.getPartCount());
  141. priceList.setPartId(part.getPartId());
  142. priceList.setPriceDiscount(part.getPartPriceDiscount());
  143. if(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){
  144. priceList.setStatus(1);
  145. }
  146. priceListService.save(priceList);
  147. }
  148. }
  149. public void repairAddPart(CheckRegisterParam param, Long userId) {
  150. Repair repair = repairService.getById(param.getRepairId());
  151. if(repair == null){
  152. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  153. }
  154. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //维修中
  155. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  156. }
  157. RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId());
  158. if(repairRegister == null){
  159. repairRegister = new RepairRegister();
  160. }
  161. Integer repairRegisterId = repairRegister.getRepairRegisterId();
  162. BeanUtils.copyProperties(param,repairRegister);
  163. repairRegister.setRepairRegisterId(repairRegisterId);
  164. repairRegister.setSysUserId(userId);
  165. repairRegisterService.saveOrUpdate(repairRegister);
  166. this.addRepairPart(param.getPartList(),repair,repairRegister,null);
  167. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_QUOTED.status(),"维修中添加备件");
  168. }
  169. public void repairOver(CheckRegisterParam param, Long userId) {
  170. if(param.getRepairId() == null || StringUtils.isBlank(param.getRemark())){
  171. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  172. }
  173. Repair repair = repairService.getById(param.getRepairId());
  174. if(repair == null){
  175. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  176. }
  177. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){
  178. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  179. }
  180. repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),"维修完成");
  181. // List<PriceList> priceListList = priceListService.getByRepairId(repair.getRepairId());
  182. // List<PriceList> collect = priceListList.stream().filter(entity ->entity.getType()== 0 && entity.getRecoveryStatus() == 0).collect(Collectors.toList());
  183. // if(collect.size() >0){
  184. // repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),"维修完成");
  185. // }else {
  186. // repairLogService.saveBySysUser(userId,repair.getRepairId(), RepairStatusEnum.TO_BE_PAID.status(), "维修完成");
  187. // }
  188. repairRegisterService.repairOver(repair.getRepairId(),param.getRemark());
  189. }
  190. }