From aba87556bef34a8252b930a90e83c5268d5eac13 Mon Sep 17 00:00:00 2001 From: mx <1289317512@qq.com> Date: Fri, 29 Nov 2024 17:57:26 +0800 Subject: [PATCH] bug --- .../pusong/common/core/utils/DateUtils.java | 10 ++ .../pusong/business/domain/bo/AppointBo.java | 2 +- .../business/domain/vo/PsCompanyInfoVo.java | 5 + .../business/domain/vo/PsCustomInfoVo.java | 5 +- .../business/domain/vo/PsTaskMainVo.java | 5 + .../impl/PsCompanyInfoServiceImpl.java | 11 +- .../impl/PsContractInfoServiceImpl.java | 16 ++- .../service/impl/PsCustomInfoServiceImpl.java | 29 ++++- .../service/impl/PsTaskServiceImpl.java | 108 +++++++++--------- 9 files changed, 127 insertions(+), 64 deletions(-) diff --git a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java index 0452d52..3d1fb35 100644 --- a/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java +++ b/pusong-common/pusong-common-core/src/main/java/com/pusong/common/core/utils/DateUtils.java @@ -196,6 +196,16 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { // 使用formatter转换LocalDate到字符串 return date.format(formatter); } + public static String toString(Date date, String from){ + if (date == null){ + return null; + } + // 创建一个DateTimeFormatter实例来定义日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(from); + + // 使用formatter转换LocalDate到字符串 + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().format(formatter); + } public static String toString(LocalDate date){ return toString(date,"yyyy-MM-dd"); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java index 1fc5286..852d6b1 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/AppointBo.java @@ -18,7 +18,7 @@ public class AppointBo { * 任务主表id */ @NotNull - private Long id; + private List id; /** * 执行者用户id */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java index d82b333..c6bf9b3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCompanyInfoVo.java @@ -271,4 +271,9 @@ public class PsCompanyInfoVo implements Serializable { private String contractCode; private PsApproverRecordVo psApproverRecordVo; + + /** + * 公司类型 + */ + private String companyType; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java index 43e1816..b092a4d 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsCustomInfoVo.java @@ -183,7 +183,10 @@ public class PsCustomInfoVo implements Serializable { * 公司信息DTO */ private List psCompanyInfoVos; - + /** + * 服务公司信息DTO + */ + private List psCompanySerivceVo; /** * 服务类别 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java index 632b473..0f24fc3 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsTaskMainVo.java @@ -173,5 +173,10 @@ public class PsTaskMainVo implements Serializable { * 服务项目 */ List psContractBusinesses; + + /** + * 工单时间 + */ + private Date createTime; } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java index 3597d22..4601579 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCompanyInfoServiceImpl.java @@ -186,7 +186,7 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { sql.append("and business_type = '2' and is_proxy = '2'"); } lqw.exists(bo.getType() != 1, sql.toString()); - lqw.orderByAsc("bus.min_end_date"); + lqw.orderByAsc("CASE WHEN bus.min_end_date IS NULL THEN 1 ELSE 0 END"); lqw.orderByDesc("finish_date"); // lqw.groupBy("com.id"); Page result = baseMapper.selectPageList2(pageQuery.build(), lqw); @@ -208,14 +208,21 @@ public class PsCompanyInfoServiceImpl implements IPsCompanyInfoService { } for (PsCompanyInfoVo record : result.getRecords()) { record.setFollowUsers(userMap.get(record.getId())); - record.setBusinessVoList(contractBusinessVoMap.get(record.getId())); + if (record.getBusinessVoList() == null){ continue; } + boolean hasDate = false; for (PsContractBusinessVo psContractBusinessVo : record.getBusinessVoList()) { + if (psContractBusinessVo.getEndDate() != null){ + hasDate = true; + } int diffDay = DateUtils.diffDay(new Date(), psContractBusinessVo.getEndDate()); psContractBusinessVo.setRemainingDay(diffDay); } + if (hasDate){ + record.setBusinessVoList(contractBusinessVoMap.get(record.getId())); + } } } diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index 40efbb8..cba2e3e 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -908,6 +908,10 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //派单者 if (task != null){ serviceScheduleVo.setAppoint(new ServiceScheduleVo.UserAndStatus(task.getOperateUser(), task.getCreateTime())); + }else{ + if ("1".equals(contractInfo.getIsDue())){ + serviceScheduleVo.setAppoint(new ServiceScheduleVo.UserAndStatus(0l, 1, null)); + } } if(CollectionUtils.isNotEmpty(appointList)){ appointList.forEach(item->{ @@ -922,9 +926,19 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { } //回传 Long rollPdfUid = StringUtils.equals(CommonStatusEnum.SUCCESS.getCode(), contractInfo.getRollBackStatus()) ? customer.getCustomManager() : null; - if (rollPdfUid != null){ + if (rollPdfUid != null) { PsApproverRecordVo psApproverRecordVo = approverRecordService.queryLast(contractInfo.getContractCode(), ApproverTypeEnum.ROLBACK.getCode()); serviceScheduleVo.setRollBack(new ServiceScheduleVo.UserAndStatus(rollPdfUid, psApproverRecordVo != null ? psApproverRecordVo.getApplyDate() : null)); + }else{ + PsContractInfoVo info = this.queryContractByCode(contractCode); + if (!CommonStatusEnum.SUCCESS.getCode().equals(info.getSignStatus())){ + if (info.getContractAmount().doubleValue() < 8000) { + if (!info.isTuoguanService() || info.getIsDue().equals("1")) { + //status = 1客户端显示无需回传合同 + serviceScheduleVo.setRollBack(new ServiceScheduleVo.UserAndStatus(0l, 1, null)); + } + } + } } if(vo.getResidualMoney().compareTo(BigDecimal.ZERO) <= 0 && CollectionUtils.isNotEmpty(payVoList)){ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java index 66083c2..812d229 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsCustomInfoServiceImpl.java @@ -75,15 +75,17 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { public List> listByLoginUser(String name) { //查询客户基本信息 - List list = baseMapper.selectList(new QueryWrapper().select("id", "custom_name","custom_mobile") + List list = baseMapper.selectList(new QueryWrapper().select("id", "custom_name","custom_mobile","create_time","custom_source") .lambda().eq(PsCustomInfo::getDelFlag, 0).isNotNull(PsCustomInfo::getCustomName).ne(PsCustomInfo::getCustomName,"").ne(PsCustomInfo::getCustomName,"无") .and(StringUtils.isNotBlank(name),wq->wq.like(PsCustomInfo::getCustomName,name).or().like(PsCustomInfo::getCustomMobile,name))); List> listmap = new ArrayList<>(); list.forEach(item->{ Map map = new HashMap<>(); - map.put("id",item.getId()); - map.put("customName",item.getCustomName()); - map.put("custom_mobile",item.getCustomMobile()); + map.put("id", item.getId()); + map.put("customName", item.getCustomName()); + map.put("custom_mobile", item.getCustomMobile()); + map.put("createTime", DateUtils.toString(item.getCreateTime(),"yyyy-MM-dd")); + map.put("customSource", item.getCustomSource()); listmap.add(map); }); @@ -154,7 +156,8 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { List companyInfoVos = companyInfoMapper.selectVoList(Wrappers.lambdaQuery() .in(PsCompanyInfo::getCustomId, ids) .eq(PsCompanyInfo::getDelFlag, 0) - .eq(PsCompanyInfo::getCompanyType, "1")); +// .eq(PsCompanyInfo::getCompanyType, "1") + ); Map> id_companyMap = new HashMap<>(); if(CollectionUtils.isNotEmpty(companyInfoVos)){ //分组 @@ -171,7 +174,21 @@ public class PsCustomInfoServiceImpl implements IPsCustomInfoService { //装填报价金额vo info.setPsCustomPriceVo(id_piceMap.get(info.getId())); //装填公司信息vo - info.setPsCompanyInfoVos(id_companyMap.get(info.getId())); + List allPsCompanyInfoVos = id_companyMap.get(info.getId()); + if (allPsCompanyInfoVos != null){ + List psCompanyInfoVos = new ArrayList<>(); + List psServiceCompanyInfoVos = new ArrayList<>(); + for (PsCompanyInfoVo psCompanyInfoVo : allPsCompanyInfoVos) { + if ("1".equals(psCompanyInfoVo.getCompanyType())){ + psCompanyInfoVos.add(psCompanyInfoVo); + }else if ("2".equals(psCompanyInfoVo.getCompanyType())){ + psServiceCompanyInfoVos.add(psCompanyInfoVo); + } + } + info.setPsCompanyInfoVos(psCompanyInfoVos); + info.setPsCompanySerivceVo(psServiceCompanyInfoVos); + } + //报价金额 if(CollectionUtils.isNotEmpty(info.getPsCustomPriceVo())){ info.setPrice(info.getPsCustomPriceVo().stream().map(PsCustomPriceVo::getServicePrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)); diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java index 8f1fada..da41311 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsTaskServiceImpl.java @@ -152,7 +152,7 @@ public class PsTaskServiceImpl implements IPsTaskService { for (PsTaskMainVo vo : page.getRecords()) { if(vo.getStartDate() != null){ - vo.setNumOfDat(DateUtils.calWorkDate(vo.getStartDate(),new Date())); + vo.setNumOfDat(DateUtils.calWorkDate(vo.getCreateTime(), new Date())); } //任务作废审批 vo.setTaskStatusDesc(approverRecordService.getLastFail(vo.getId() + "",null,List.of(ApproverTypeEnum.TASKCANCE.getCode()))); @@ -317,8 +317,8 @@ public class PsTaskServiceImpl implements IPsTaskService { .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) .entrySet().stream().anyMatch(e -> e.getValue() > 1); if(repetition){ - log.error("请求的任务类型重复"); - throw new ServiceException("请求的任务类型重复,请刷新页面重试"); +// log.error("请求的任务类型重复"); +// throw new ServiceException("请求的任务类型重复,请刷新页面重试"); } } @@ -363,60 +363,62 @@ public class PsTaskServiceImpl implements IPsTaskService { @Override @Transactional public void appoint(AppointBo bo){ - //前置校验 - PsTaskMain mainTask = baseMapper.selectById(bo.getId()); - if(!TaskStatusEnum.canAppoint(mainTask.getTaskStatus())){ - throw new ServiceException("任务已完成,无法继续派单"); - } - if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(),mainTask.getTaskType())){ - throw new ServiceException("发票任务无需派单"); - } + for (Long taskId : bo.getId()) { + //前置校验 + PsTaskMain mainTask = baseMapper.selectById(taskId); + if(!TaskStatusEnum.canAppoint(mainTask.getTaskStatus())){ + throw new ServiceException("任务已完成,无法继续派单"); + } + if(StringUtils.equals(TaskTypeEnum.INVOICE.getCode(),mainTask.getTaskType())){ + throw new ServiceException("发票任务无需派单"); + } - List list = appointMapper.selectList(Wrappers.lambdaQuery() - .eq(PsTaskAppoint::getDelFlag,"0").eq(PsTaskAppoint::getTaskId, bo.getId()) - .eq(PsTaskAppoint::getAppointType, bo.getAppointType()) - .ne(PsTaskAppoint::getAppointStatus, AppointStatusEnum.CANCEL.getCode())); - if(CollectionUtils.isNotEmpty(list)){ - throw new ServiceException("操作失败,任务已委派"); - } - //如果是第一次派单,需要修改任务状态 - if(StringUtils.equals(TaskStatusEnum.INIT.getCode(),mainTask.getTaskStatus())){ - PsTaskMain update = new PsTaskMain(); - update.setId(mainTask.getId()); - update.setTaskStatus(TaskStatusEnum.ING.getCode()); - update.setStartDate(new Date()); - update.setOperateUser(LoginHelper.getUserId()); - baseMapper.updateById(update); - contractInfoMapper.update(Wrappers.lambdaUpdate().set(PsContractInfo::getContractStatus, ContractStatusEnum.EXECUTION.getCode()) - .eq(PsContractInfo::getContractCode,mainTask.getContractCode()).eq(PsContractInfo::getDelFlag,0)); - } + List list = appointMapper.selectList(Wrappers.lambdaQuery() + .eq(PsTaskAppoint::getDelFlag,"0").eq(PsTaskAppoint::getTaskId, bo.getId()) + .eq(PsTaskAppoint::getAppointType, bo.getAppointType()) + .ne(PsTaskAppoint::getAppointStatus, AppointStatusEnum.CANCEL.getCode())); + if(CollectionUtils.isNotEmpty(list)){ + throw new ServiceException("操作失败,任务已委派"); + } + //如果是第一次派单,需要修改任务状态 + if(StringUtils.equals(TaskStatusEnum.INIT.getCode(),mainTask.getTaskStatus())){ + PsTaskMain update = new PsTaskMain(); + update.setId(mainTask.getId()); + update.setTaskStatus(TaskStatusEnum.ING.getCode()); + update.setStartDate(new Date()); + update.setOperateUser(LoginHelper.getUserId()); + baseMapper.updateById(update); + contractInfoMapper.update(Wrappers.lambdaUpdate().set(PsContractInfo::getContractStatus, ContractStatusEnum.EXECUTION.getCode()) + .eq(PsContractInfo::getContractCode,mainTask.getContractCode()).eq(PsContractInfo::getDelFlag,0)); + } - List insertList = new ArrayList<>(); - for (Long userId : bo.getUserIds()) { - PsTaskAppoint psTaskAppoint = new PsTaskAppoint(); - psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode()); - psTaskAppoint.setAppointType(bo.getAppointType()); - psTaskAppoint.setContractCode(mainTask.getContractCode()); - psTaskAppoint.setTaskId(mainTask.getId()); - psTaskAppoint.setExecutor(userId); - psTaskAppoint.setTaskContentDesc(bo.getTaskContentDesc()); - insertList.add(psTaskAppoint); - } - appointMapper.insert(insertList); + List insertList = new ArrayList<>(); + for (Long userId : bo.getUserIds()) { + PsTaskAppoint psTaskAppoint = new PsTaskAppoint(); + psTaskAppoint.setAppointStatus(AppointStatusEnum.ING.getCode()); + psTaskAppoint.setAppointType(bo.getAppointType()); + psTaskAppoint.setContractCode(mainTask.getContractCode()); + psTaskAppoint.setTaskId(mainTask.getId()); + psTaskAppoint.setExecutor(userId); + psTaskAppoint.setTaskContentDesc(bo.getTaskContentDesc()); + insertList.add(psTaskAppoint); + } + appointMapper.insert(insertList); - PsCompanyInfoVo psCompanyInfoVo = null; - if (mainTask != null){ - psCompanyInfoVo = companyInfoService.queryById(mainTask.getServiceCompanyId()); - } - if (psCompanyInfoVo != null){ - for (PsTaskAppoint psTaskAppoint : insertList) { - if ("1".equals(bo.getAppointType())){ - noticeService.sendNotice(SysNoticeBo.getNqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); - }else if ("2".equals(bo.getAppointType())){ - noticeService.sendNotice(SysNoticeBo.getWqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); - }else if ("3".equals(bo.getAppointType())){ - noticeService.sendNotice(SysNoticeBo.getTqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); + PsCompanyInfoVo psCompanyInfoVo = null; + if (mainTask != null){ + psCompanyInfoVo = companyInfoService.queryById(mainTask.getServiceCompanyId()); + } + if (psCompanyInfoVo != null){ + for (PsTaskAppoint psTaskAppoint : insertList) { + if ("1".equals(bo.getAppointType())){ + noticeService.sendNotice(SysNoticeBo.getNqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); + }else if ("2".equals(bo.getAppointType())){ + noticeService.sendNotice(SysNoticeBo.getWqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); + }else if ("3".equals(bo.getAppointType())){ + noticeService.sendNotice(SysNoticeBo.getTqResetInstance(psTaskAppoint.getExecutor(), psCompanyInfoVo.getCompanyName(), "")); + } } } }