diff --git a/doc/assets/2024-12-23-11-13-59-image.png b/doc/assets/2024-12-23-11-13-59-image.png new file mode 100644 index 0000000..828ebbe Binary files /dev/null and b/doc/assets/2024-12-23-11-13-59-image.png differ diff --git a/doc/assets/2024-12-23-11-14-56-image.png b/doc/assets/2024-12-23-11-14-56-image.png new file mode 100644 index 0000000..8db552b Binary files /dev/null and b/doc/assets/2024-12-23-11-14-56-image.png differ diff --git a/doc/贵阳禁毒送检受理委托新增需求文档.md b/doc/贵阳禁毒送检受理委托新增需求文档.md index 44730b3..de22ba7 100644 --- a/doc/贵阳禁毒送检受理委托新增需求文档.md +++ b/doc/贵阳禁毒送检受理委托新增需求文档.md @@ -268,3 +268,19 @@ DESC LIMIT 1; ### 1 解决方案 通过在远接口添加参数解决 + + + +## 20241223-1 鉴定事项确认书需要委托单位打印,也就是委托单位需要在审核完成并委托送件后,同时能够打印委托书与确认书。 + +### 1 主要问题 + +目前主要是解决确认书生成数据缺失的问题,因为委托方在送检后,受理方可能还未受理,也就导致了数据缺失,生成失败的问题。 + +### 2 解决方案 + +在生成鉴定事项确认书时,在代码上进行逻辑判断,如果是在未受理前则不填充相关的受理数据,检材排序时使用生成的检材编号排序,受理后的逻辑不变。下面是修改后的代码 + +![](assets/2024-12-23-11-13-59-image.png) + +![](assets/2024-12-23-11-14-56-image.png) diff --git a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java index 396052c..6e93add 100644 --- a/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java +++ b/src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java @@ -440,17 +440,22 @@ public class EntrustmentServiceImpl extends ServiceImplquery() - .eq("id", entrustId)); - List materialList = entrustmentIdentificationMaterialService.list(Wrappers.query() - .eq("entrustment_id", entrustId) - .orderByAsc("accept_no")); - Collections.sort(materialList, new Comparator() { - @Override - public int compare(EntrustmentIdentificationMaterial o1, EntrustmentIdentificationMaterial o2) { - return Integer.parseInt(o1.getAcceptNo().split("-")[2]) - Integer.parseInt(o2.getAcceptNo().split("-")[2]); - } - }); + Entrustment entrustment = this.getOne(Wrappers.query().eq("id", entrustId)); + // 标记该委托是否已经受理 + int isAccepted = entrustment.getStatus().compareTo(EntrustmentStatusConstants.ENTRUSTMENT_STATUS_ACCEPTED.getStatus()); + List materialList = entrustmentIdentificationMaterialService.list(Wrappers.lambdaQuery() + .eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId) + .orderByAsc(isAccepted != -1, EntrustmentIdentificationMaterial::getAcceptNo) + .orderByAsc(isAccepted == -1, EntrustmentIdentificationMaterial::getImNo)); + if (isAccepted != -1) { + // 受理过的才进行排序,否则采用检材编号排序 + Collections.sort(materialList, new Comparator() { + @Override + public int compare(EntrustmentIdentificationMaterial o1, EntrustmentIdentificationMaterial o2) { + return Integer.parseInt(o1.getAcceptNo().split("-")[2]) - Integer.parseInt(o2.getAcceptNo().split("-")[2]); + } + }); + } CaseEvent caseEvent = caseEventService.getOne(Wrappers.query() .eq("id", entrustment.getCaseId())); String templatePath = OSSDirectoryConstants.IDENTIFY_BOOK_DIRECTORY + "/" + entrustment.getId() + "/" + "鉴定事项确认书-" + entrustment.getAcceptNo(); @@ -465,7 +470,7 @@ public class EntrustmentServiceImpl extends ServiceImpl data = generateIdentifyItemsData(caseEvent, entrustment, materialList); + Map data = generateIdentifyItemsData(caseEvent, entrustment, materialList, isAccepted); R ret = remoteGenerateWordService.generateWord(templateName, originalFilename, templatePath, fileType, QRContent, listNameCollection, false, data); if (ret.getCode() == 0) { System.out.println("鉴定事项书生成完毕..........................."); @@ -482,11 +487,10 @@ public class EntrustmentServiceImpl extends ServiceImpl generateIdentifyItemsData(CaseEvent caseEvent, Entrustment entrustment, List materialList) { - R sysUserR = remoteUserService.innerGetById(entrustment.getAcceptUser()); - String acceptName = sysUserR.getData().getName(); + private Map generateIdentifyItemsData(CaseEvent caseEvent, Entrustment entrustment, List materialList, int isAccepted) { Map dm = new HashMap<>(); //构建案件部分需要的参数值 dm.put("caseName", caseEvent.getCaseName()); @@ -506,8 +510,6 @@ public class EntrustmentServiceImpl extends ServiceImpl sysUserR = remoteUserService.innerGetById(entrustment.getAcceptUser()); + String acceptName = sysUserR.getData().getName(); + dm.put("acceptDate", LocalDateTimeUtil.format(entrustment.getAcceptTime(), "yyyy年MM月dd日"));//受理日期 + dm.put("acceptName", acceptName); + dm.put("ac_yy", entrustment.getAcceptTime().getYear());//受理年 + dm.put("ac_mm", entrustment.getAcceptTime().getMonthValue());//受理月 + dm.put("ac_day", entrustment.getAcceptTime().getDayOfMonth());//受理日 + } dm.put("value1", "☑");//受理日 //条形码 因为调用feign接口的原因,图片传输过程中会受影响,这里改为在生成的地方再生成 return dm;