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.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 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; /** * 维修工程师 * statusParam 0 待检测,1待跟进,2维修完成 * status 0待接单,1待检测,2待报价,3待确认,4已取消,5待备料,6待回收,7维修中,8待测试, * 9待支付(已完结),10待收货,11已发货,12已评价 */ 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 CheckRegisterVo checkRegisterInfo(String repairId) { Repair repair = repairService.getById(repairId); if(repair == null){ throw new BusinessException(ResultCode.REPAIR_NOT_EXITS); } return repairRegisterService.getCheckVoByRepairId(repairId); } public void checkRegister(CheckRegisterParam param, Long userId) { if(StringUtils.isBlank(param.getRepairId()) || StringUtils.isBlank(param.getCheckResult()) || param.getFaultIds() ==null || param.getFaultIds().size() <=0){ 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() !=1 ){ //待检测 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); repairRegister.setRepairRegisterId(repairRegisterId); repairRegister.setSysUserId(userId); repairRegisterService.saveOrUpdate(repairRegister); List registerParts = repairRegisterPartService.getByRepairId(param.getRepairId()); HashMap partIdMap = new HashMap<>(); registerParts.forEach(entity -> partIdMap.putIfAbsent(entity.getPartId(),entity.getId())); repairLogService.saveBySysUser(userId,repair.getRepairId(),2,"维修登记"); this.addRepairPart(param.getPartList(),repair,repairRegister,partIdMap); 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); } repairLogService.saveBySysUser(userId,repair.getRepairId(),2,"维修登记"); } private void addRepairPart(List partVoList,Repair repair,RepairRegister repairRegister,HashMap partIdMap ) { 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()); if(partIdMap != null && partIdMap.get(partVo.getPartId())!=null){ repairRegisterPart.setId(partIdMap.get(partVo.getPartId())); } repairRegisterPartService.saveOrUpdate(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()); 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() !=7 ){ //维修中 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); repairRegister.setRepairRegisterId(repairRegisterId); repairRegister.setSysUserId(userId); repairRegisterService.saveOrUpdate(repairRegister); this.addRepairPart(param.getPartList(),repair,repairRegister,null); repairLogService.saveBySysUser(userId,repair.getRepairId(),2,"维修中添加备件"); } 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() !=7){ //回收完成 throw new BusinessException(ResultCode.REPAIR_STATUS_NOT_EXITS); } repairRegisterService.repairOver(repair.getRepairId(),param.getRemark()); repairLogService.saveBySysUser(userId,repair.getRepairId(),8,"维修完成"); } }