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.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; /** * 维修工程师 * 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(!repair.getStatus().equals(RepairStatusEnum.TO_BE_CHECK.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(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){ if(param.getPartList().size() >0){ repairStatus = RepairStatusEnum.TO_BE_PREPARED.status(); }else { repairStatus = RepairStatusEnum.TO_BE_REPAIRED.status(); } } repairRegister.setStatus(0); RepairRegisterLog repairRegisterLog = repairRegisterLogService.saveLog(repairRegister); repairLogService.saveBySysUser(userId,repair.getRepairId(),repairStatus,"维修检测",null,repairRegisterLog.getRegisterLogId()); 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(repairRegister.getDefineDamage() == 0 && repair.getWarrantyType() == 0){ 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(repair.getWarrantyType() == 0){ repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_PREPARED.status(),"维修中添加备件"); }else { repairLogService.saveBySysUser(userId,repair.getRepairId(),RepairStatusEnum.TO_BE_QUOTED.status(),"维修中添加备件"); } } 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(),"维修完成"); // 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); } }