20250407 更新

master
陈江保 3 months ago
parent 89073cd746
commit 321756c05f
  1. 51
      src/main/java/digital/laboratory/platform/entrustment/controller/PushDataToLabsCareController.java
  2. 11
      src/main/java/digital/laboratory/platform/entrustment/service/EntrustmentIdentificationMaterialService.java
  3. 15
      src/main/java/digital/laboratory/platform/entrustment/service/PushDataToLabsCareService.java
  4. 39
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentIdentificationMaterialServiceImpl.java
  5. 18
      src/main/java/digital/laboratory/platform/entrustment/service/impl/EntrustmentServiceImpl.java
  6. 49
      src/main/java/digital/laboratory/platform/entrustment/service/impl/PushDataToLabsCareServiceImpl.java

@ -0,0 +1,51 @@
package digital.laboratory.platform.entrustment.controller;
import cn.hutool.json.JSONObject;
import digital.laboratory.platform.common.core.util.R;
import digital.laboratory.platform.entrustment.service.PushDataToLabsCareService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author ChenJiangBao
* @version 1.0
* @description: 推送数据到LabsCare平台接口管理
* @date 2025/4/3 10:48
*/
@RestController
@RequestMapping("/pushDataToLabsCare")
@Api(tags = "19-推送数据到LabsCare平台接口管理", description = "推送数据到LabsCare平台接口管理")
public class PushDataToLabsCareController {
@Resource
private PushDataToLabsCareService pushDataToLabsCareService;
@ApiOperation("获取推送鉴定委托书的数据")
@PostMapping("/entrustLetter")
public R<JSONObject> entrustLetter(@RequestParam("entrustId") String entrustId) {
try {
return R.ok(pushDataToLabsCareService.fetchEntrustLetterData(entrustId));
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
@ApiOperation("获取推送鉴定事项确认书的数据")
@PostMapping("/itemConfirmLetter")
public R<JSONObject> itemConfirmLetter(@RequestParam("entrustId") String entrustId) {
try {
return R.ok(pushDataToLabsCareService.fetchItemConfirmLetterData(entrustId));
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
}

@ -93,7 +93,6 @@ public interface EntrustmentIdentificationMaterialService extends IService<Entru
EntrustmentIdentificationMaterial settingAcceptSampleInfoDivide(EntrustmentIdentificationMaterial material); EntrustmentIdentificationMaterial settingAcceptSampleInfoDivide(EntrustmentIdentificationMaterial material);
//设置送检单位初始分样信息 //设置送检单位初始分样信息
EntrustmentIdentificationMaterial settingProviderSampleInfo(EntrustmentIdentificationMaterial material); EntrustmentIdentificationMaterial settingProviderSampleInfo(EntrustmentIdentificationMaterial material);
EntrustmentIdentificationMaterial settingAcceptSampleInfoNoDivide(EntrustmentIdentificationMaterial material); EntrustmentIdentificationMaterial settingAcceptSampleInfoNoDivide(EntrustmentIdentificationMaterial material);
@ -106,7 +105,7 @@ public interface EntrustmentIdentificationMaterialService extends IService<Entru
List<EntrustmentIdentificationMaterial> createNewIm(List<EntrustmentIdentificationMaterial> identificationMaterial, DLPUser dlpUser); List<EntrustmentIdentificationMaterial> createNewIm(List<EntrustmentIdentificationMaterial> identificationMaterial, DLPUser dlpUser);
public List<String> printLabel(List<PrintDTO> printDTOList); List<String> printLabel(List<PrintDTO> printDTOList);
List<String> printManyLabel(List<PrintDTO> printDTOList); List<String> printManyLabel(List<PrintDTO> printDTOList);
@ -114,7 +113,13 @@ public interface EntrustmentIdentificationMaterialService extends IService<Entru
void conformityDrugs(List<EntrustmentIdentificationMaterial> list); void conformityDrugs(List<EntrustmentIdentificationMaterial> list);
List<EntrustmentIdentificationMaterial> sortByAcceptNo(List<EntrustmentIdentificationMaterial> materials); /**
* 处理检材重量四舍五入
* 设置检材列表, 对检材的重量进行处理 小于100的保留两位小数100以上保留一位小数
* @param entrustId 委托ID
* @return 处理后的检材列表
*/
List<EntrustmentIdentificationMaterial> handleMaterialWeightRounding(String entrustId);
List<EntrustmentIdentificationMaterialVO> sortVoByAcceptNo(List<EntrustmentIdentificationMaterialVO> materials); List<EntrustmentIdentificationMaterialVO> sortVoByAcceptNo(List<EntrustmentIdentificationMaterialVO> materials);
} }

@ -1,5 +1,6 @@
package digital.laboratory.platform.entrustment.service; package digital.laboratory.platform.entrustment.service;
import cn.hutool.json.JSONObject;
import digital.laboratory.platform.entrustment.vo.EntrustmentVO; import digital.laboratory.platform.entrustment.vo.EntrustmentVO;
@ -24,4 +25,18 @@ public interface PushDataToLabsCareService {
* @param entrustVO * @param entrustVO
*/ */
void pushEntrustLetterData(EntrustmentVO entrustVO) throws IllegalAccessException; void pushEntrustLetterData(EntrustmentVO entrustVO) throws IllegalAccessException;
/**
* 获取推送鉴定委托书的数据
* @param entrustId 委托id
* @return
*/
JSONObject fetchEntrustLetterData(String entrustId);
/**
* 获取推送鉴定事项确认书的数据
* @param entrustId 委托id
* @return
*/
JSONObject fetchItemConfirmLetterData(String entrustId);
} }

@ -52,6 +52,7 @@ import javax.annotation.Resource;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@ -1532,7 +1533,11 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
return entrustmentIdentificationMaterial; return entrustmentIdentificationMaterial;
} }
//用作于处理一些打印委托书或鉴定事项确认书时的字段类型转换 /**
* 处理一些打印委托书或鉴定事项确认书时的字段类型转换
*
* @param list 包含委托书或鉴定事项确认书材料的列表
*/
@Override @Override
public void conformityDrugs(List<EntrustmentIdentificationMaterial> list) { public void conformityDrugs(List<EntrustmentIdentificationMaterial> list) {
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
@ -1628,15 +1633,31 @@ public class EntrustmentIdentificationMaterialServiceImpl extends ServiceImpl<En
return cj; return cj;
} }
/**
* 处理检材重量四舍五入
* 设置检材列表, 对检材的重量进行处理 小于100的保留两位小数100以上保留一位小数
* @param entrustId 委托ID
* @return 处理后的检材列表
*/
@Override @Override
public List<EntrustmentIdentificationMaterial> sortByAcceptNo(List<EntrustmentIdentificationMaterial> materials){ public List<EntrustmentIdentificationMaterial> handleMaterialWeightRounding(String entrustId) {
materials.sort(Comparator.comparing((EntrustmentIdentificationMaterial m) -> { List<EntrustmentIdentificationMaterial> materialList = super.list(
String[] parts = m.getAcceptNo().split("-"); Wrappers.<EntrustmentIdentificationMaterial>lambdaQuery()
return new int[]{Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2])}; .eq(EntrustmentIdentificationMaterial::getEntrustmentId, entrustId)
}, Comparator.comparingInt((int[] arr) -> arr[0]) // 按年份排序 .orderByAsc(EntrustmentIdentificationMaterial::getOrderNo)
.thenComparingInt(arr -> arr[1]) // 按流水号排序 );
.thenComparingInt(arr -> arr[2]))); // 按子流水号排序 conformityDrugs(materialList);
return materials; //设置检材列表, 对检材的重量进行处理 小于100的保留两位小数,100以上保留一位小数
BigDecimal compareNumber = new BigDecimal(100);
for (EntrustmentIdentificationMaterial entrustmentIdentificationMaterial : materialList) {
BigDecimal quantity = entrustmentIdentificationMaterial.getQuantity();
if (quantity.compareTo(compareNumber) >= 0) {
entrustmentIdentificationMaterial.setQuantity(quantity.setScale(1, RoundingMode.HALF_UP));
} else {
entrustmentIdentificationMaterial.setQuantity(quantity.setScale(2, RoundingMode.HALF_UP));
}
}
return materialList;
} }
@Override @Override

@ -2176,27 +2176,13 @@ public class EntrustmentServiceImpl extends ServiceImpl<EntrustmentMapper, Entru
SysOrg org = commonFeignService.remoteGetSysOrg(ev.getClientOrgId()); SysOrg org = commonFeignService.remoteGetSysOrg(ev.getClientOrgId());
dm.put("clientOrg", ClassUtils.objectToMap(org)); dm.put("clientOrg", ClassUtils.objectToMap(org));
List<EntrustmentIdentificationMaterial> materialList = entrustmentIdentificationMaterialService.list( List<EntrustmentIdentificationMaterial> materialList = entrustmentIdentificationMaterialService.handleMaterialWeightRounding(ev.getId());
Wrappers.<EntrustmentIdentificationMaterial>query()
.eq("entrustment_id", ev.getId())
.orderByAsc("order_no")
);
entrustmentIdentificationMaterialService.conformityDrugs(materialList);
//设置检材描述 //设置检材描述
dm.put("materialDes", this.buildMaterialDes(materialList)); dm.put("materialDes", this.buildMaterialDes(materialList));
//设置鉴定要求 //设置鉴定要求
//dm.put("identifyReq",entrustmentService.buildIdentfyReq(materialList)); //dm.put("identifyReq",entrustmentService.buildIdentfyReq(materialList));
dm.put("identifyReq", ev.getEntrustRequirement()); dm.put("identifyReq", ev.getEntrustRequirement());
//设置检材列表, 对检材的重量进行处理 小于100的保留两位小数,100以上保留一位小数
BigDecimal compareNumber = new BigDecimal(100);
for (EntrustmentIdentificationMaterial entrustmentIdentificationMaterial : materialList) {
BigDecimal quantity = entrustmentIdentificationMaterial.getQuantity();
if (quantity.compareTo(compareNumber) >= 0) {
entrustmentIdentificationMaterial.setQuantity(quantity.setScale(1, RoundingMode.HALF_UP));
} else {
entrustmentIdentificationMaterial.setQuantity(quantity.setScale(2, RoundingMode.HALF_UP));
}
}
dm.put("materialList", materialList); dm.put("materialList", materialList);
// QR Code // QR Code
// BufferedImage bufferedImage = QRCodeUtils.genQRCode(ev.getEntrustmentNo(), 100, 100); // BufferedImage bufferedImage = QRCodeUtils.genQRCode(ev.getEntrustmentNo(), 100, 100);

@ -3,6 +3,7 @@ package digital.laboratory.platform.entrustment.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import digital.laboratory.platform.common.core.exception.CheckedException;
import digital.laboratory.platform.entrustment.config.properties.ApiPathProperties; import digital.laboratory.platform.entrustment.config.properties.ApiPathProperties;
import digital.laboratory.platform.entrustment.entity.Entrustment; import digital.laboratory.platform.entrustment.entity.Entrustment;
import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial; import digital.laboratory.platform.entrustment.entity.EntrustmentIdentificationMaterial;
@ -140,8 +141,7 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
*/ */
@Override @Override
public void pushEntrustLetterData(EntrustmentVO entrustVO) throws IllegalAccessException { public void pushEntrustLetterData(EntrustmentVO entrustVO) throws IllegalAccessException {
Map<String, Object> dataMap = entrustmentService.buildEntrustLetterDataMap(entrustVO); JSONObject jsonObject = buildEntrustLetterJsonPayload(entrustVO);
JSONObject jsonObject = buildEntrustLetterJsonPayload(entrustVO, dataMap);
String successFlag = ENTRUST_LETTER + ":true"; String successFlag = ENTRUST_LETTER + ":true";
String failureFlag = ENTRUST_LETTER + ":false"; String failureFlag = ENTRUST_LETTER + ":false";
@ -161,15 +161,38 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
} }
} }
/**
* 获取推送鉴定委托书的数据
* @param entrustId 委托id
* @return
*/
@Override
public JSONObject fetchEntrustLetterData(String entrustId) {
// 获取委托信息
EntrustmentVO entrustVO = validFetchParam(entrustId);
return buildEntrustLetterJsonPayload(entrustVO);
}
/**
* 获取推送鉴定事项确认书的数据
* @param entrustId 委托id
* @return
*/
@Override
public JSONObject fetchItemConfirmLetterData(String entrustId) {
// 获取委托信息
EntrustmentVO entrustVO = validFetchParam(entrustId);
return buildItemConfirmLetterJsonPayload(entrustVO);
}
/** /**
* 构建委托函的JSON负载 * 构建委托函的JSON负载
* *
* @param entrustVO 委托VO对象 * @param entrustVO 委托VO对象
* @param dataMap 数据映射
* @return 构建好的JSON对象 * @return 构建好的JSON对象
*/ */
private JSONObject buildEntrustLetterJsonPayload(EntrustmentVO entrustVO, Map<String, Object> dataMap) { private JSONObject buildEntrustLetterJsonPayload(EntrustmentVO entrustVO) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.set("afsj", entrustVO.getHappenTime()); // 案发时间 jsonObject.set("afsj", entrustVO.getHappenTime()); // 案发时间
jsonObject.set("ajmc", entrustVO.getCaseName()); // 案事件名称 jsonObject.set("ajmc", entrustVO.getCaseName()); // 案事件名称
@ -186,7 +209,7 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
jsonObject.set("yjdqk", entrustVO.getOldIdentificationResult()); jsonObject.set("yjdqk", entrustVO.getOldIdentificationResult());
// 组装材料信息 // 组装材料信息
List<EntrustmentIdentificationMaterial> materialList = (List<EntrustmentIdentificationMaterial>) dataMap.get("materialList"); List<EntrustmentIdentificationMaterial> materialList = entrustmentIdentificationMaterialService.handleMaterialWeightRounding(entrustVO.getId());
AtomicInteger index = new AtomicInteger(1); AtomicInteger index = new AtomicInteger(1);
List<JSONObject> table = materialList.stream().map(material -> { List<JSONObject> table = materialList.stream().map(material -> {
JSONObject materialJson = new JSONObject(); JSONObject materialJson = new JSONObject();
@ -305,5 +328,19 @@ public class PushDataToLabsCareServiceImpl implements PushDataToLabsCareService
.set(Entrustment::getPushFlag, String.join(",", flagList))); .set(Entrustment::getPushFlag, String.join(",", flagList)));
} }
/**
* 根据委托ID验证并获取委托信息
*
* @param entrustId 委托ID
* @return 委托信息对象 EntrustmentVO
* @throws CheckedException 当未找到对应的委托信息时抛出此异常
*/
private EntrustmentVO validFetchParam(String entrustId) {
EntrustmentVO entrustVO = entrustmentService.getEntrustmentVOById(entrustId);
if (entrustVO == null) {
log.error("未找到委托信息, entrustId={}", entrustId);
throw new CheckedException(String.format("未找到委托信息, entrustId=%s", entrustId));
}
return entrustVO;
}
} }

Loading…
Cancel
Save