From 536c183fb6e5beec4c7b15285dc7e313e792ea26 Mon Sep 17 00:00:00 2001 From: litao Date: Wed, 30 Nov 2022 18:31:23 +0800 Subject: [PATCH] =?UTF-8?q?2022=E5=B9=B411=E6=9C=8830=E6=97=A518:30:49?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lims/entry/ContractSample.java | 4 +- .../goods/controller/ContractController.java | 1 + .../controller/ContractSampleController.java | 2 - .../lims/controller/EntrustController.java | 37 +++++ .../lims/controller/ExamineController.java | 62 +-------- .../controller/ExamineItemController.java | 16 +++ .../controller/ExamineResultController.java | 125 ++++++++++++----- .../lims/service/IContractService.java | 1 + .../lims/service/IEntrtrustService.java | 1 + .../lims/service/IExamineService.java | 2 + .../service/impl/ContractServiceImpl.java | 16 ++- .../lims/service/impl/EntrustServiceImpl.java | 99 ++++++++++++-- .../lims/service/impl/ExamineServiceImpl.java | 126 +++++++++++++++++- 13 files changed, 380 insertions(+), 112 deletions(-) diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ContractSample.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ContractSample.java index 8dd21de..a0b0d36 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ContractSample.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/ContractSample.java @@ -43,8 +43,10 @@ public class ContractSample extends BaseEntity implements Serializable { private String recessiveNum; // 实验编号 private String experimentNum; - // 领样人 + // 领样人id private String sampleReceiver; + // 领样人姓名 + private String sampleReceiverName; // 领样日期 private Date sampleReceiverTime; // 备注 diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java index e672314..177c0aa 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java @@ -367,6 +367,7 @@ public class ContractController extends BladeController { contractDetailService.updateBatchById(detailList); Contract contract = new Contract(); + contract.setId(contractVO.getId()); Double goodsNum = 0.00; Double inNum = 0.00; diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ContractSampleController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ContractSampleController.java index cb1a7bf..424abe3 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ContractSampleController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ContractSampleController.java @@ -17,6 +17,4 @@ public class ContractSampleController extends BladeController { private final IContractSampleService contractSampleService; - - } \ No newline at end of file diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java index b1238ae..08ad922 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java @@ -1526,4 +1526,41 @@ public class EntrustController extends BladeController { // } return R.data(map); } + + /** + * 收样登记表打印 + */ + @GetMapping("/sampleRegister") + public void sampleRegister(String id, HttpServletResponse response) { + service.sampleRegister(id, response); + } + + /** + * 获取合同下所有委托单 + */ + @GetMapping("/getEntrusts") + public R> getEntrusts(String id) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Entrust::getContractId, id); + wrapper.eq(Entrust::getEntrustStatus, "7"); + return R.data(service.list(wrapper)); + } + + /** + * 结束合同 + */ + @PostMapping("/endContract") + public R endContract(@RequestBody Contract contract) throws Exception { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Entrust::getContractId, contract.getId()); + List entrusts = service.list(wrapper); + if (CollectionUtils.isNotEmpty(entrusts)) { + for (Entrust entrust : entrusts) { + if (!"-1".equals(entrust.getEntrustStatus()) && !"7".equals(entrust.getEntrustStatus())) { + throw new Exception("还有实验未完成,等完成后在操作!!!"); + } + } + } + return R.status(contractService.updateById(contract)); + } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java index 8a53328..5b4e90f 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java @@ -1,6 +1,8 @@ package org.springblade.lims.controller; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -56,8 +58,6 @@ public class ExamineController extends BladeController { private final IExamineResultService examineResultService; - private final IMessageClient messageClient; - private final ISysClient sysClient; /** @@ -415,63 +415,7 @@ public class ExamineController extends BladeController { */ @PostMapping("/receiveSubmit") public void receiveSubmit(@RequestBody Examine examine) throws Exception { + examineService.receiveSubmit(examine); - // 刷新本任务书下所有检验的样品所在位置 - examineService.updateSimpleCurrPlace(examine.getTempTaskId(), examine.getDeptId(), 1); - - String userId = AuthUtil.getUserId().toString(); - Examine examine1 = examineService.getById(examine.getId()); - if (userId.equals(examine1.getLockBy())) { - if (examine.getExamineBy() == null || "".equals(examine.getExamineBy())) { - examine.setExamineBy(userId); - } - examine.setReceiveTime(new Date()); - examine.setIsDistribute(1); -// examine.setIsFinished("-1"); - examine.setLockBy(""); -// examine.setLockTime(null); - if (examine.getSimpleReceiver() != null) { - R userR = userClient.userInfoById(Long.valueOf(examine.getSimpleReceiver())); - examine.setSimpleReceiverName(userR.getData().getName()); - } - examineService.updateById(examine); - } else { - throw new Exception("实验正在领取中,不可提交!"); - } - // 获取本科室对应的实验 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Examine::getETaskId, examine1.getETaskId()); - List examineList = examineService.list(wrapper); - // 如果实验被全部领取,子任务状态改为1(待检测) - ETask eTask = new ETask(); - eTask.setId(examine1.getETaskId()); - eTask.setSimpleSource(examine.getSimpleSource()); - eTask.setSimpleReceiver(examine.getSimpleReceiver()); - eTask.setSimpleReceiverName(examine.getSimpleReceiverName()); - eTask.setSimpleReceiveTime(examine.getReceiveTime()); - int a = 0; - if (examineList != null && examineList.size() > 0) { - for (Examine examine2 : examineList) { - if (examine2.getIsDistribute() == 0) { - examine2.setSimpleSource(examine.getSimpleSource()); - examine2.setSimpleReceiver(examine.getSimpleReceiver()); - examine2.setSimpleReceiverName(examine.getSimpleReceiverName()); - examine2.setSimpleReceiverTime(examine.getReceiveTime()); - } else if (examine2.getIsDistribute() == 1) { - a += 1; - } - } - examineService.updateBatchById(examineList); - } - if (a == examineList.size()) { - eTask.setStatus(1); - } - taskService.updateById(eTask); - // 发送提示消息 - User user = userClient.userInfoById(AuthUtil.getUserId()).getData(); - if (!"1432876315142520834".equals(user.getRoleId())) { - messageClient.event(SysTypeEnum.INFORM.getValue(), "填写实验", - "你有新的检验数据待提交,请及时查看", 1, 5, examine.getExamineBy(),"/plugin/workflow/process/experimentcrew"); - } } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java index 46cd76a..1dff7f5 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineItemController.java @@ -241,6 +241,22 @@ public class ExamineItemController extends BladeController { // } // } } + if (CollectionUtils.isNotEmpty(reagentList)) { + for (Reagent reagent : reagentList) { + List instrumentList = new ArrayList<>(); + if (reagent != null && reagent.getInstrumentId() != null && !"".equals(reagent.getInstrumentId())) { + // 根据仪器id查数据 + String[] split1 = reagent.getInstrumentId().split(","); + for (String s1 : split1) { + Instrument instrument = instrumentService.getById(s1); + instrumentList.add(instrument); + } + } + reagent.setInstrumentList(instrumentList); + List list = JSON.parseArray(reagent.getTypeAndOperation(), TypeAndOperation.class); + reagent.setOperationList(list); + } + } return R.data(reagentList); } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java index b5d170b..ce94a3f 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java @@ -2039,9 +2039,9 @@ public class ExamineResultController extends BladeController { for (int i = 0; i < group; i++) { List>> mapList = new ArrayList<>(); List excels = map.get(i + 1 + ""); - double code1 = Double.parseDouble(excels.get(0).getCode1()); - double code2 = Double.parseDouble(excels.get(1).getCode1()); - double v1 = (code1 + code2) / 2; +// double code1 = Double.parseDouble(excels.get(0).getCode1()); +// double code2 = Double.parseDouble(excels.get(1).getCode1()); +// double v1 = (code1 + code2) / 2; DecimalFormat df = new DecimalFormat("#0.000"); for (int j = 0; j < excels.size(); j++) { // 行标头:前端渲染需要A、B、C.... @@ -2052,61 +2052,115 @@ public class ExamineResultController extends BladeController { Map> map2 = new HashMap<>(); - String PI = "0.00"; + // 一行有四组数据,一组数据对应一个样品,一个样品做三次实验,有三个结果(牛型PPD,禽型PPD,PBS抗原) for (int n = 1; n <= filedsLength; n++) { + int num; String code; + String code1; + String code2; + String code3; switch (n) { case 1: + code1 = examineExcel.getCode1(); + code2 = examineExcel.getCode2(); + code3 = examineExcel.getCode3(); code = examineExcel.getCode1(); + num = 0; break; case 2: + code1 = examineExcel.getCode1(); + code2 = examineExcel.getCode2(); + code3 = examineExcel.getCode3(); code = examineExcel.getCode2(); + num = 0; break; case 3: + code1 = examineExcel.getCode1(); + code2 = examineExcel.getCode2(); + code3 = examineExcel.getCode3(); code = examineExcel.getCode3(); + num = 0; break; case 4: + code1 = examineExcel.getCode4(); + code2 = examineExcel.getCode5(); + code3 = examineExcel.getCode6(); code = examineExcel.getCode4(); + num = 1; break; case 5: + code1 = examineExcel.getCode4(); + code2 = examineExcel.getCode5(); + code3 = examineExcel.getCode6(); code = examineExcel.getCode5(); + num = 1; break; case 6: + code1 = examineExcel.getCode4(); + code2 = examineExcel.getCode5(); + code3 = examineExcel.getCode6(); code = examineExcel.getCode6(); + num = 1; break; case 7: + code1 = examineExcel.getCode7(); + code2 = examineExcel.getCode8(); + code3 = examineExcel.getCode9(); code = examineExcel.getCode7(); + num = 2; break; case 8: + code1 = examineExcel.getCode7(); + code2 = examineExcel.getCode8(); + code3 = examineExcel.getCode9(); code = examineExcel.getCode8(); + num = 2; break; case 9: + code1 = examineExcel.getCode7(); + code2 = examineExcel.getCode8(); + code3 = examineExcel.getCode9(); code = examineExcel.getCode9(); + num = 2; break; case 10: + code1 = examineExcel.getCode10(); + code2 = examineExcel.getCode11(); + code3 = examineExcel.getCode12(); code = examineExcel.getCode10(); + num = 3; break; case 11: + code1 = examineExcel.getCode10(); + code2 = examineExcel.getCode11(); + code3 = examineExcel.getCode12(); code = examineExcel.getCode11(); + num = 3; break; case 12: + code1 = examineExcel.getCode10(); + code2 = examineExcel.getCode11(); + code3 = examineExcel.getCode12(); code = examineExcel.getCode12(); + num = 3; break; default: + code1 = "0"; + code2 = "0"; + code3 = "0"; code = "0"; + num = 0; } Map mapResult = new HashMap<>(); int index = (n - 1) * 8 + j + 1; //n是列,j是行 ,我们定义index是一列列的定义 - if (StringUtil.isNoneBlank(code)) { - if (j > 5 || n > 1) { - if (v1 != 0) { - PI = df.format((v1 - Double.parseDouble(code)) / v1); - } + if (StringUtil.isNoneBlank(code1) && StringUtil.isNoneBlank(code2) && StringUtil.isNoneBlank(code3)) { + if (j > 1 || n > 3) { mapResult.put("originResult", code); - mapResult.put("value", df.format(Double.parseDouble(PI) * 100) + "%"); - mapResult.put("num", "1"); - if (Double.parseDouble(PI) >= 0.5) { + mapResult.put("value", code); + int indexNum = (i * 32) + (num * 8 + j) - ((i + 1) * 2); + mapResult.put("num", split[indexNum]); + if (Double.parseDouble(code1) - Double.parseDouble(code3) >= 0.2 && Double.parseDouble(code1) - Double.parseDouble(code2) >= 0.2) { mapResult.put("result", "阳性"); } else { mapResult.put("result", "阴性"); @@ -2133,7 +2187,6 @@ public class ExamineResultController extends BladeController { throw new Exception("该试剂未维护公式计算,请联系相关开发人员!"); } - // for (int i = 0; i < group; i++) { // List>> mapList = new ArrayList<>(); // List excels = map.get(i + 1 + ""); @@ -2511,32 +2564,34 @@ public class ExamineResultController extends BladeController { // } // map1.put("g" + (i + 1), mapList); // } + // 不是该试剂的才去赋值检测编号 + if (!"1570297053211455490".equals(reagentId)) { + Collections.sort(list, new Comparator>() { + @Override + public int compare(Map o1, Map o2) { + Integer id1 = (Integer) o1.get("order"); + Integer id2 = (Integer) o2.get("order"); + // 升序 + return id1.compareTo(id2); + } + }); - Collections.sort(list, new Comparator>() { - @Override - public int compare(Map o1, Map o2) { - Integer id1 = (Integer) o1.get("order"); - Integer id2 = (Integer) o2.get("order"); - // 升序 - return id1.compareTo(id2); + int numIndex = 0; + for (Map stringObjectMap : list) { + String num = (String) stringObjectMap.get("num"); + if (num != null && !"".equals(num)) { + num = split[numIndex]; + stringObjectMap.put("num", num); + numIndex++; + } } - }); - - int numIndex = 0; - for (Map stringObjectMap : list) { - String num = (String) stringObjectMap.get("num"); - if (num != null && !"".equals(num)) { - num = split[numIndex]; - stringObjectMap.put("num", num); - numIndex++; +// System.out.println("split.length: " + split.length); +// System.out.println("numIndex: " + numIndex); + // 判断分配样品数量与检测样品数量是否一致 + if (split.length != numIndex) { + throw new Exception("分配样品数量与检测样品数量不一致!"); } } - System.out.println("split.length: " + split.length); - System.out.println("numIndex: " + numIndex); - // 判断分配样品数量与检测样品数量是否一致 - if (split.length != numIndex) { - throw new Exception("分配样品数量与检测样品数量不一致!"); - } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ExamineResult::getExamineId, examineId); diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IContractService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IContractService.java index 15a6127..b2da457 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IContractService.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IContractService.java @@ -16,4 +16,5 @@ import javax.servlet.http.HttpServletResponse; public interface IContractService extends BaseService { void contractReview(String id, HttpServletResponse response); + } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IEntrtrustService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IEntrtrustService.java index 7f4945d..163509d 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IEntrtrustService.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IEntrtrustService.java @@ -41,4 +41,5 @@ public interface IEntrtrustService extends BaseService { void repairPrint(String id, HttpServletResponse response); + void sampleRegister(String id, HttpServletResponse response); } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IExamineService.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IExamineService.java index 296a1b8..de0cf7b 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IExamineService.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/IExamineService.java @@ -14,4 +14,6 @@ import org.springblade.lims.entry.Examine; public interface IExamineService extends BaseService { void updateSimpleCurrPlace(Long taskId, Long deptId, int operateType); + + void receiveSubmit(Examine examine) throws Exception; } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ContractServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ContractServiceImpl.java index fbc652c..6197bb2 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ContractServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ContractServiceImpl.java @@ -1,28 +1,32 @@ package org.springblade.lims.service.impl; - import cn.afterturn.easypoi.word.WordExportUtil; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.AllArgsConstructor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.lims.entry.Contract; +import org.springblade.lims.entry.ContractSample; +import org.springblade.lims.entry.Entrust; import org.springblade.lims.mapper.ContractMapper; +import org.springblade.lims.service.IContractSampleService; import org.springblade.lims.service.IContractService; +import org.springblade.lims.service.IEntrtrustService; import org.springblade.system.cache.DictBizCache; import org.springblade.system.enums.DictBizEnum; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; - /** - * - * @author swj - * @since 2022年6月2日15:53:01 */ @Service @AllArgsConstructor @@ -85,4 +89,6 @@ public class ContractServiceImpl extends BaseServiceImpl // arrVO1.setValue(format1); // arrVO1.setResult(" "); // list1.add(arrVO1); - for (int j = 0; j < 96; j++) { ExamineDataArrVO vo = list.get((i * 96) + j); if (vo.getNum() != null && !"".equals(vo.getNum())) { @@ -2701,7 +2700,6 @@ public class EntrustServiceImpl extends BaseServiceImpl // arrVO1.setValue(format1); // arrVO1.setResult(" "); // list1.add(arrVO1); - for (int j = 0; j < 96; j++) { if ((i * 96) + j > list.size() - 1) { break; @@ -3147,9 +3145,9 @@ public class EntrustServiceImpl extends BaseServiceImpl // 阳性对照OD值 double b1 = Double.parseDouble(list.get((i * 96) + 2).getOriginResult()); double b2 = Double.parseDouble(list.get((i * 96) + 3).getOriginResult()); + double c1 = 0.00; double c2 = 0.00; - if (StringUtils.isNotBlank(list.get((i * 96) + 4).getOriginResult())) { c1 = Double.parseDouble(list.get((i * 96) + 4).getOriginResult()); } @@ -3313,7 +3311,19 @@ public class EntrustServiceImpl extends BaseServiceImpl map3.put("5", "成立"); resultList3.add(map3); } - + // 牛结核病γ-干扰素ELISA检测试剂盒---武汉科前生物股份有限公司 + else if ("1570297053211455490".equals(reagentId)) { + double yin1 = Double.parseDouble(list.get((i * 96)).getOriginResult()); + double yin2 = Double.parseDouble(list.get((i * 96) + 8).getOriginResult()); + double yin3 = Double.parseDouble(list.get((i * 96) + 16).getOriginResult()); + double yang1 = Double.parseDouble(list.get((i * 96) + 1).getOriginResult()); + double yang2 = Double.parseDouble(list.get((i * 96) + 9).getOriginResult()); + double yang3 = Double.parseDouble(list.get((i * 96) + 17).getOriginResult()); + map1.put("2", "阴性对照的平均值"); + map1.put("3", df.format((yin1 + yin2 + yin3) / 3)); + map2.put("2", "阳性对照的平均值"); + map2.put("3", df.format((yang1 + yang2 + yang3) / 3)); + } map1.put("5", "成立"); map2.put("5", "成立"); resultList3.add(map1); @@ -3561,7 +3571,7 @@ public class EntrustServiceImpl extends BaseServiceImpl @Override public void eTaskPrint(String id, String deptId, HttpServletResponse response) { Map result = new HashMap<>(); - Entrust entrust = this.getById(id); +// Entrust entrust = this.getById(id); //任务书 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TaskBlueprint::getEntrustId, id); @@ -3690,18 +3700,19 @@ public class EntrustServiceImpl extends BaseServiceImpl //模板地址 // String handleUrl = "C://Users//AAA//Desktop//烁今//打印模板//检测任务书(模板).docx"; String url = DictBizCache.getKey(DictBizEnum.PRINT_URL.getName(), "eTaskPrint"); +// System.out.println("==============================================="); +// System.out.println("url:" + url); +// System.out.println("result:" + result); +// System.out.println("==============================================="); XWPFDocument doc = null; // FileOutputStream fos = null; try { doc = WordExportUtil.exportWord07(url, result); // fos = new FileOutputStream("C://Users//AAA//Desktop//烁今//打印模板//检测任务书.docx"); -// String filename = "测试.docx"; + String filename = "测试.docx"; response.setContentType("application/octet-stream"); response.setHeader("content-disposition", "attachment;filename=12344.docx"); - doc.write(response.getOutputStream()); - - } catch (Exception e) { e.printStackTrace(); } finally { @@ -4331,6 +4342,76 @@ public class EntrustServiceImpl extends BaseServiceImpl } } + @Override + public void sampleRegister(String id, HttpServletResponse response) { + Map result = new HashMap<>(); + List> list = new ArrayList<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ContractSample::getEntrustId, id); + List contractSamples = contractSampleService.list(wrapper); + if (CollectionUtils.isNotEmpty(contractSamples)) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + for (ContractSample contractSample : contractSamples) { + Map map = new HashMap<>(); + map.put("1", contractSample.getCity()); + map.put("2", contractSample.getFarmName()); + map.put("3", contractSample.getFarmAddress()); + map.put("4", contractSample.getLivestockOwnerName()); + map.put("5", contractSample.getPhone()); + map.put("6", format.format(contractSample.getCollectSampleTime())); + map.put("7", contractSample.getSampleName()); + map.put("8", contractSample.getSampleCount()); + map.put("9", contractSample.getOriginalNum()); + map.put("10", contractSample.getExperimentNum()); + map.put("11", contractSample.getSampleReceiverName()); + map.put("12", format.format(contractSample.getSampleReceiverTime())); + list.add(map); + } + result.put("list", list); + } + + //模板地址 + String url = DictBizCache.getKey(DictBizEnum.PRINT_URL.getName(), "sampleRegisterPrint"); +// String handleUrl = "C://Users//AAA//Desktop//烁今//打印模板//委托单(模板).docx"; + + XWPFDocument doc = null; +// FileOutputStream fos = null; + try { + doc = WordExportUtil.exportWord07(url, result); +// fos = new FileOutputStream("C://Users//AAA//Desktop//shuojin//dayin//委托单.docx"); + String filename = "测试.docx"; + + response.setContentType("application/octet-stream"); + response.setHeader("content-disposition", "attachment;filename=12344.docx"); + doc.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + } finally { +// if (null != doc) { +//// doc.close(); +// try { +// doc.write(fos); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// if (null != fos) { +// try { +// fos.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } + if (null != doc) { + try { + doc.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + /** * 根据网络图片URL转成字节数组(弃用) */ diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineServiceImpl.java index 2ae1d03..07376ad 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineServiceImpl.java @@ -2,17 +2,30 @@ package org.springblade.lims.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.AllArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.lims.entry.ContractSample; import org.springblade.lims.entry.ETask; import org.springblade.lims.entry.Examine; +import org.springblade.lims.entry.Simple; import org.springblade.lims.mapper.ExamineMapper; +import org.springblade.lims.service.IContractSampleService; import org.springblade.lims.service.IETaskService; import org.springblade.lims.service.IExamineService; +import org.springblade.lims.service.ISimpleService; +import org.springblade.resource.enums.SysTypeEnum; +import org.springblade.resource.feign.IMessageClient; import org.springblade.system.feign.ISysClient; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @@ -30,9 +43,16 @@ public class ExamineServiceImpl extends BaseServiceImpl private final IETaskService taskService; - private final ExamineMapper examineMapper; + private final IMessageClient messageClient; + + private final IContractSampleService contractSampleService; + + private final IUserClient userClient; + + private final ISimpleService simpleService; @Override + @Transactional(rollbackFor = Exception.class) public void updateSimpleCurrPlace(Long taskId, Long deptId, int operateType) { // 上上游task @@ -103,4 +123,108 @@ public class ExamineServiceImpl extends BaseServiceImpl updateBatchById(examineList); } } + + @Override + @Transactional(rollbackFor = Exception.class) + public void receiveSubmit(Examine examine) throws Exception { + + // 刷新本任务书下所有检验的样品所在位置 + this.updateSimpleCurrPlace(examine.getTempTaskId(), examine.getDeptId(), 1); + + String userId = AuthUtil.getUserId().toString(); + Examine examine1 = this.getById(examine.getId()); + if (userId.equals(examine1.getLockBy())) { + if (examine.getExamineBy() == null || "".equals(examine.getExamineBy())) { + examine.setExamineBy(userId); + } + examine.setReceiveTime(new Date()); + examine.setIsDistribute(1); +// examine.setIsFinished("-1"); + examine.setLockBy(""); +// examine.setLockTime(null); + if (examine.getSimpleReceiver() != null) { + R userR = userClient.userInfoById(Long.valueOf(examine.getSimpleReceiver())); + examine.setSimpleReceiverName(userR.getData().getName()); + } + this.updateById(examine); + } else { + throw new Exception("实验正在领取中,不可提交!"); + } + // 获取本科室对应的实验 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Examine::getETaskId, examine1.getETaskId()); + List examineList = this.list(wrapper); + // 如果实验被全部领取,子任务状态改为1(待检测) + ETask eTask = new ETask(); + eTask.setId(examine1.getETaskId()); + eTask.setSimpleSource(examine.getSimpleSource()); + eTask.setSimpleReceiver(examine.getSimpleReceiver()); + eTask.setSimpleReceiverName(examine.getSimpleReceiverName()); + eTask.setSimpleReceiveTime(examine.getReceiveTime()); + int a = 0; + if (CollectionUtils.isNotEmpty(examineList)) { + for (Examine examine2 : examineList) { + if (examine2.getIsDistribute() == 0) { + examine2.setSimpleSource(examine.getSimpleSource()); + examine2.setSimpleReceiver(examine.getSimpleReceiver()); + examine2.setSimpleReceiverName(examine.getSimpleReceiverName()); + examine2.setSimpleReceiverTime(examine.getReceiveTime()); + } else if (examine2.getIsDistribute() == 1) { + a += 1; + } + } + this.updateBatchById(examineList); + } + if (a == examineList.size()) { + eTask.setStatus(1); + } + taskService.updateById(eTask); + // 发送提示消息 + User user = userClient.userInfoById(AuthUtil.getUserId()).getData(); + if (!"1432876315142520834".equals(user.getRoleId())) { + messageClient.event(SysTypeEnum.INFORM.getValue(), "填写实验", + "你有新的检验数据待提交,请及时查看", 1, 5, examine.getExamineBy(),"/plugin/workflow/process/experimentcrew"); + } + + // 样品收样登记表信息修改(合同评审) + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ContractSample::getEntrustId,examine1.getEntrustId()); + List contractSamples = contractSampleService.list(queryWrapper); + + if (CollectionUtils.isNotEmpty(contractSamples)) { + if (StringUtils.isBlank(contractSamples.get(0).getSampleReceiver())) { + for (ContractSample contractSample : contractSamples) { + // 领样人 + contractSample.setSampleReceiver(examine.getSimpleReceiver()); + contractSample.setSampleReceiverName(examine.getSimpleReceiverName()); + // 领样时间 + contractSample.setSampleReceiverTime(examine.getSimpleReceiverTime()); + // 获取第一个原始编号对应的样品 + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(Simple::getEntrustId, contractSample.getEntrustId()); + qw.eq(Simple::getIsReagent, "0"); + qw.eq(Simple::getRecessiveNum, contractSample.getRecessiveNum().split("-")[0]); + qw.orderByAsc(Simple::getSort); + List simples1 = simpleService.list(qw); + + // 获取最后一个原始编号对应的样品 + qw.clear(); + qw.eq(Simple::getEntrustId, contractSample.getEntrustId()); + qw.eq(Simple::getIsReagent, "0"); + qw.eq(Simple::getRecessiveNum, contractSample.getRecessiveNum().split("-")[1]); + qw.orderByDesc(Simple::getSort); + List simples2 = simpleService.list(qw); + + // 第一个样品编号 + String experieNum = simples1.get(0).getExperieNum(); + // 最后一个样品编号序号 + String[] strings = simples2.get(0).getExperieNum().split("-"); + // 拼接收样登记表需要样品编号 + String num = experieNum + "-" + strings[strings.length - 1]; + contractSample.setExperimentNum(num); + } + contractSampleService.updateBatchById(contractSamples); + } + } + } }