RepairSupplyService.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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.CheckRegisterParam;
  16. import com.fdkankan.sale.vo.request.OrderReceivingParam;
  17. import com.fdkankan.sale.vo.request.RecordingParam;
  18. import com.fdkankan.sale.vo.request.RepairParam;
  19. import com.fdkankan.sale.vo.response.RepairRegisterPartVo;
  20. import com.fdkankan.sale.vo.response.RepairerVo;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import java.util.ArrayList;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. @Service
  29. public class RepairSupplyService {
  30. @Autowired
  31. IRepairService repairService;
  32. @Autowired
  33. IRepairLogService repairLogService;
  34. @Autowired
  35. IOrderReceivingService orderReceivingService;
  36. @Autowired
  37. ICustomerService customerService;
  38. @Autowired
  39. ICustomerAddressService customerAddressService;
  40. @Autowired
  41. ICameraService cameraService;
  42. @Autowired
  43. ISysUserService sysUserService;
  44. @Autowired
  45. IRepairRegisterService repairRegisterService;
  46. @Autowired
  47. IRepairRegisterPartService repairRegisterPartService;
  48. @Autowired
  49. IPartService partService;
  50. @Autowired
  51. IPriceListService priceListService;
  52. @Autowired
  53. IPartLogService partLogService;
  54. /**
  55. * 维修备件管理 供应链
  56. * statusParam 0 待备料,1已备料,2待回收
  57. * * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试,
  58. * * 80待支付(已完结),90待回收,100待发货,110已发货
  59. */
  60. public Object supplyOrderList(RepairParam param) {
  61. List<Integer> repairStatus = StatusUtil.getSupplyStatus(param.getStatusParam());
  62. param.setStatusList(repairStatus);
  63. Page<RepairerVo> voPage = repairService.supplyOrderList(param);
  64. sysUserService.setSaleNameAndRepairManName(voPage.getRecords());
  65. return PageInfo.PageInfo(voPage);
  66. }
  67. public List<RepairRegisterPartVo> partInfo(String repairId,Integer type) {
  68. LambdaQueryWrapper<PartLog> wrapper2 = new LambdaQueryWrapper<>();
  69. wrapper2.eq(PartLog::getRepairId,repairId);
  70. if(type == 0 || type == 2){ //出库
  71. wrapper2.eq(PartLog::getStatus,1);
  72. }
  73. if(type == 1){ //回收
  74. wrapper2.eq(PartLog::getStatus,2);
  75. }
  76. List<PartLog> partLogs = partLogService.list(wrapper2);
  77. HashMap<Integer,PartLog> map = new HashMap<>();
  78. for (PartLog partLog : partLogs) {
  79. if(map.get(partLog.getPartId()) != null){
  80. PartLog partLog1 = map.get(partLog.getPartId());
  81. partLog1.setCount(partLog1.getCount() + partLog.getCount());
  82. }else {
  83. map.put(partLog.getPartId(),partLog);
  84. }
  85. }
  86. List<RepairRegisterPartVo> parts = new ArrayList<>();
  87. for (Integer partId : map.keySet()) {
  88. Part part = partService.getById(partId);
  89. if(part == null){
  90. continue;
  91. }
  92. RepairRegisterPartVo vo = new RepairRegisterPartVo();
  93. vo.setPartId(partId);
  94. vo.setPartName(part.getPartName());
  95. vo.setPartCount(map.get(partId).getCount());
  96. vo.setPartNum(part.getPartNum());
  97. parts.add(vo);
  98. }
  99. return parts;
  100. }
  101. public void partOut(Repair param, Long userId) {
  102. if(StringUtils.isBlank(param.getRepairId())){
  103. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  104. }
  105. Repair repair = repairService.getById(param.getRepairId());
  106. if(repair == null){
  107. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  108. }
  109. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_PREPARED.status())){
  110. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  111. }
  112. List<RepairRegisterPartVo> partVoList = this.partInfo(param.getRepairId(),0);
  113. for (RepairRegisterPartVo partVo : partVoList) {
  114. partService.outStockCheck(partVo.getPartId(),partVo.getPartCount(),userId,repair.getRepairId());
  115. }
  116. for (RepairRegisterPartVo partVo : partVoList) {
  117. partService.outStock(partVo.getPartId(),partVo.getPartCount(),userId,repair.getRepairId());
  118. }
  119. repairLogService.saveBySysUser(userId,param.getRepairId(),RepairStatusEnum.TO_BE_REPAIRED.status(),repair.getStatus(),"备件出库");
  120. }
  121. public void partRecovery(Repair param, Long userId) {
  122. if(StringUtils.isBlank(param.getRepairId())){
  123. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  124. }
  125. Repair repair = repairService.getById(param.getRepairId());
  126. if(repair == null){
  127. throw new BusinessException(ResultCode.REPAIR_NOT_EXITS);
  128. }
  129. if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_RECOVERED.status())
  130. && !repair.getStatus().equals(RepairStatusEnum.TO_BE_CANCELED_RECOVERED.status())){
  131. throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS);
  132. }
  133. List<RepairRegisterPartVo> partVoList = this.partInfo(param.getRepairId(),1);
  134. for (RepairRegisterPartVo partVo : partVoList) {
  135. partService.recovery(partVo.getPartId(),partVo.getPartCount(),userId,repair.getRepairId(),repair.getStatus());
  136. }
  137. String remark = null;
  138. if(StringUtils.isNotBlank(param.getRemark())){
  139. remark = "回收备注:"+param.getRemark();
  140. }
  141. repairLogService.saveBySysUser(userId,param.getRepairId(),RepairStatusEnum.TO_BE_SHIPPED.status(),repair.getStatus(),"备件回收",remark);
  142. }
  143. }