package com.fdkankan.sale.service.impl; import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.sale.common.PageInfo; import com.fdkankan.sale.common.RepairStatusEnum; import com.fdkankan.sale.common.ResultCode; import com.fdkankan.sale.entity.*; import com.fdkankan.sale.exception.BusinessException; import com.fdkankan.sale.service.*; import com.fdkankan.sale.util.DateUtil; import com.fdkankan.sale.util.StatusUtil; import com.fdkankan.sale.vo.request.*; import com.fdkankan.sale.vo.response.CheckRegisterVo; import com.fdkankan.sale.vo.response.RepairRegisterCheckVo; import com.fdkankan.sale.vo.response.RepairRegisterPartVo; import com.fdkankan.sale.vo.response.RepairerVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.swing.text.EditorKit; import javax.swing.text.html.parser.Entity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @Service public class RepairPersonnelService { @Autowired IRepairService repairService; @Autowired IRepairLogService repairLogService; @Autowired IOrderReceivingService orderReceivingService; @Autowired ICustomerService customerService; @Autowired ICustomerAddressService customerAddressService; @Autowired ICameraService cameraService; @Autowired ISysUserService sysUserService; @Autowired IRepairRegisterService repairRegisterService; @Autowired IRepairRegisterPartService repairRegisterPartService; @Autowired IRepairFaultService repairFaultService; @Autowired IPriceListService priceListService; @Autowired IPartService partService; @Autowired IRepairRegisterLogService repairRegisterLogService; @Autowired RepairSupplyService repairSupplyService; /** * 维修工程师 * statusParam 0 待检测,1待跟进,2维修完成 * * status 0待接单,10待检测,20待报价,30待确认,40已取消,50待备料,60维修中,70待测试, * * 80待支付(已完结),90待回收,100待发货,110已发货 */ public Object repairerOrderList(RepairParam param) { List repairStatus = StatusUtil.getRepairerStatus(param.getStatusParam()); param.setStatusList(repairStatus); Page voPage = repairService.repairerOrderList(param); sysUserService.setSaleNameAndRepairManName(voPage.getRecords()); return PageInfo.PageInfo(voPage); } public void checkRegister(CheckRegisterParam param, Long userId) { if(StringUtils.isBlank(param.getRepairId()) || StringUtils.isBlank(param.getCheckResult()) || param.getFaultIds() ==null || param.getFaultIds().size() <=0 || param.getDefineDamage() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } Repair repair = repairService.getById(param.getRepairId()); if(repair == null){ throw new BusinessException(ResultCode.REPAIR_NOT_EXITS); } if(StatusUtil.getWarranty(repair.getWarrantyType())){ if(param.getPartList().size() >0){ if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status()) && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status()) && !repair.getStatus().equals(RepairStatusEnum.TO_BE_PREPARED.status())){ //待检测 throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } }else { if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status()) && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status()) && !repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //待检测 throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } } }else { if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.status()) && !repair.getStatus().equals(RepairStatusEnum.TO_BE_QUOTED.status()) ){ //待检测 throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } } RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId()); if(repairRegister == null){ repairRegister = new RepairRegister(); } Integer repairRegisterId = repairRegister.getRepairRegisterId(); BeanUtils.copyProperties(param,repairRegister); if(repairRegister.getDefineDamage() == 1 && repair.getWarrantyType() == 0){ repairService.updateWarrantyType(repair.getRepairId(),1); } repairRegister.setRepairRegisterId(repairRegisterId); repairRegister.setSysUserId(userId); repairRegisterService.saveOrUpdate(repairRegister); Integer repairStatus = RepairStatusEnum.TO_BE_QUOTED.status(); if(StatusUtil.getWarranty(repair.getWarrantyType(),repairRegister.getDefineDamage())){ if(param.getPartList().size() >0){ repairStatus = RepairStatusEnum.TO_BE_PREPARED.status(); }else { repairStatus = RepairStatusEnum.TO_BE_REPAIRED.status(); } } repairRegister.setStatus(0); repairRegisterLogService.delByRepairId(param.getRepairId()); RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister); repairLogService.saveBySysUser(userId,repair.getRepairId(),repairStatus,repair.getStatus(),"维修检测",null,repairRegisterLog.getRegisterLogId()); //repairRegisterService.delByRepairId(param.getRepairId()); priceListService.delNoCm(param.getRepairId()); repairRegisterPartService.delByRepairId(param.getRepairId()); this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId()); repairFaultService.delByRepairId(repair.getRepairId()); for (Integer faultId : param.getFaultIds()) { RepairFault fault = new RepairFault(); fault.setRepairId(repair.getRepairId()); fault.setRepairRegisterId(repairRegister.getRepairRegisterId()); fault.setFaultId(faultId); repairFaultService.save(fault); } } private void addRepairPart(List partVoList,Repair repair,RepairRegister repairRegister,Integer registerLogId) { for (RepairRegisterPartVo partVo : partVoList) { Part part = partService.getById(partVo.getPartId()); if(part == null){ continue; } RepairRegisterPart repairRegisterPart = new RepairRegisterPart(); repairRegisterPart.setRepairId(repair.getRepairId()); repairRegisterPart.setRepairRegisterId(repairRegister.getRepairRegisterId()); repairRegisterPart.setPartId(partVo.getPartId()); repairRegisterPart.setPartCount(partVo.getPartCount()); repairRegisterPart.setRegisterLogId(registerLogId); repairRegisterPartService.save(repairRegisterPart); PriceList priceList = new PriceList(); priceList.setRepairId(repair.getRepairId()); priceList.setName(part.getPartName()); priceList.setPrice(part.getPartPrice()); priceList.setCount(partVo.getPartCount()); priceList.setPartId(part.getPartId()); priceList.setPriceDiscount(part.getPartPriceDiscount()); if(StatusUtil.getWarranty(repair.getWarrantyType(),repairRegister.getDefineDamage())){ priceList.setStatus(1); } priceListService.save(priceList); } } public void repairAddPart(CheckRegisterParam param, Long userId) { Repair repair = repairService.getById(param.getRepairId()); if(repair == null){ throw new BusinessException(ResultCode.REPAIR_NOT_EXITS); } if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ //维修中 throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } RepairRegister repairRegister = repairRegisterService.getByRepairId(repair.getRepairId()); if(repairRegister == null){ throw new BusinessException(ResultCode.REPAIR_CHECK_EMPTY); } repairRegister.setStatus(1); repairRegister.setCheckResult(param.getCheckResult()); repairRegister.setCheckImg(param.getCheckImg()); RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister); this.addRepairPart(param.getPartList(),repair,repairRegister,repairRegisterLog.getRegisterLogId()); if(StatusUtil.getWarranty(repair.getWarrantyType())){ repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_PREPARED.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId()); }else { repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_QUOTED.status(),repair.getStatus(),"维修中添加备件",null,repairRegisterLog.getRegisterLogId()); } } public void repairOver(CheckRegisterParam param, Long userId) { if(param.getRepairId() == null || StringUtils.isBlank(param.getRemark())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } Repair repair = repairService.getById(param.getRepairId()); if(repair == null){ throw new BusinessException(ResultCode.REPAIR_NOT_EXITS); } if(!repair.getStatus().equals(RepairStatusEnum.TO_BE_REPAIRED.status())){ throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),repair.getStatus(),"维修完成"); // List priceListList = priceListService.getByRepairId(repair.getRepairId()); // List collect = priceListList.stream().filter(entity ->entity.getType()== 0 && entity.getRecoveryStatus() == 0).collect(Collectors.toList()); // if(collect.size() >0){ // repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_TESTED.status(),"维修完成"); // }else { // repairLogService.saveBySysUser(userId,repair.getRepairId(), RepairStatusEnum.TO_BE_PAID.status(), "维修完成"); // } repairRegisterService.repairOver(repair.getRepairId(),param.getRemark(),userId); } public Object checkRegisterInfo(String repairId) { RepairRegister repairRegister = repairRegisterService.getByRepairId(repairId); RepairRegisterCheckVo vo = new RepairRegisterCheckVo(); BeanUtils.copyProperties(repairRegister,vo); List repairFaults = repairFaultService.getByRepairId(repairId); List collect = repairFaults.stream().map(RepairFault::getFaultId).collect(Collectors.toList()); vo.setFaultIds(collect); List byRepairId = repairRegisterPartService.getByRepairId(repairId); HashMap hashMap = partService.getHashMap(); List partVoList = new ArrayList<>(); for (RepairRegisterPart repairRegisterPart : byRepairId) { RepairRegisterPartVo partVo = new RepairRegisterPartVo(); BeanUtils.copyProperties(repairRegisterPart,partVo); Part part = hashMap.get(repairRegisterPart.getPartId()); if(part != null){ partVo.setPartNum(part.getPartNum()); partVo.setPartName(part.getPartName()); } partVoList.add(partVo); } vo.setPartList(partVoList); return vo; } }