|
@@ -0,0 +1,93 @@
|
|
|
+package com.hgwebservice.service.syncCdm2;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.hgwebservice.dal.dataobject.data.DispatchDataDO;
|
|
|
+import com.hgwebservice.dal.dataobject.data.DispatchInfoDO;
|
|
|
+import com.hgwebservice.dal.dataobject.data.OperatorDataDO;
|
|
|
+import com.hgwebservice.dal.mysql.data.DispatchDataMapper;
|
|
|
+import com.hgwebservice.dal.mysql.data.DispatchInfoMapper;
|
|
|
+import com.hgwebservice.dal.mysql.data.OperatorDataMapper;
|
|
|
+import com.hgwebservice.entity.hisview.DispatchData;
|
|
|
+import com.hgwebservice.service.HgWebService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class SyncDispatchInfoByDeptCodeImpl implements SyncDispatchInfoByDeptCode {
|
|
|
+ @Autowired
|
|
|
+ OperatorDataMapper operatorDataMapper;
|
|
|
+ @Autowired
|
|
|
+ DispatchInfoMapper dispatchInfoMapper;
|
|
|
+ @Autowired
|
|
|
+ HgWebService hgWebService;
|
|
|
+ @Value("${hospital_id}")
|
|
|
+ private Integer hospitalId;
|
|
|
+ @Override
|
|
|
+ public void saveCdm2(List<DispatchData> dispatchDataParam) {
|
|
|
+ List<OperatorDataDO> operatorDataDOS = operatorDataMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
+ LambdaQueryWrapper<DispatchInfoDO> dispatchInfoDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ dispatchInfoDOLambdaQueryWrapper.eq(DispatchInfoDO::getHospitalId,hospitalId);
|
|
|
+ List<DispatchInfoDO> dispatchInfoDOS = dispatchInfoMapper.selectList(dispatchInfoDOLambdaQueryWrapper);
|
|
|
+ if (CollUtil.isNotEmpty(operatorDataDOS)) {
|
|
|
+ List<String> collect = operatorDataDOS.stream().map(OperatorDataDO::getDeptCode).distinct().collect(Collectors.toList());
|
|
|
+ if (CollUtil.isNotEmpty(collect)) {
|
|
|
+ for (String deptCode : collect) {
|
|
|
+ List<DispatchData> dispatchData1 = dispatchDataParam.stream().filter(item -> item.getDeptCode().equals(deptCode)).collect(Collectors.toList());
|
|
|
+ if (CollUtil.isNotEmpty(dispatchData1)){
|
|
|
+ List<DispatchInfoDO> dispatchData = dispatchData1.stream().map(item -> {
|
|
|
+ DispatchInfoDO dispatchInfoDO = new DispatchInfoDO();
|
|
|
+ dispatchInfoDO.setCode(item.getDispatchNo());
|
|
|
+ dispatchInfoDO.setType(item.getType());
|
|
|
+ dispatchInfoDO.setMessage(item.getMessage());
|
|
|
+ dispatchInfoDO.setFrequency(item.getFrequency());
|
|
|
+ dispatchInfoDO.setDepartCode(item.getDeptCode());
|
|
|
+ dispatchInfoDO.setPatientCode(item.getPatientNo());
|
|
|
+ dispatchInfoDO.setAdmCode(item.getHospitalNo());
|
|
|
+ dispatchInfoDO.setDispatchType(item.getDispatchType());
|
|
|
+ dispatchInfoDO.setHospitalId(hospitalId);
|
|
|
+ return dispatchInfoDO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ List<Integer> deletedIds=new ArrayList<>();
|
|
|
+ List<String> updateIds=new ArrayList<>();
|
|
|
+ List<DispatchInfoDO> collect1 = dispatchInfoDOS.stream().filter(item -> item.getDepartCode().equals(deptCode)).collect(Collectors.toList());
|
|
|
+ for (DispatchInfoDO dispatchDataDO : collect1) {
|
|
|
+ Optional<DispatchInfoDO> first = dispatchData.stream().filter(item -> item.getCode().equals(dispatchDataDO.getCode())).findFirst();
|
|
|
+ if (!first.isPresent()){
|
|
|
+ deletedIds.add(dispatchDataDO.getId());
|
|
|
+ }else{
|
|
|
+ // 如果存在则不用新增
|
|
|
+ updateIds.add(dispatchDataDO.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(deletedIds)){
|
|
|
+ dispatchInfoMapper.deleteBatchIds(deletedIds);
|
|
|
+ }
|
|
|
+ List<DispatchInfoDO> insertDispatchInfo;
|
|
|
+ if (CollUtil.isNotEmpty(updateIds)){
|
|
|
+ insertDispatchInfo=dispatchData.stream().filter(item->!updateIds.contains(item.getCode())).collect(Collectors.toList());
|
|
|
+ }else{
|
|
|
+ insertDispatchInfo=dispatchData;
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(insertDispatchInfo)){
|
|
|
+ List<DispatchInfoDO> dispatchDataDOS = BeanUtil.copyToList(insertDispatchInfo, DispatchInfoDO.class);
|
|
|
+ operatorDataMapper.insertDispatchInfo(dispatchDataDOS,hospitalId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+// List<DispatchData> dispatchData = hgWebService.getDispatchDataByDeptCode("55");
|
|
|
+// if (CollUtil.isNotEmpty(dispatchData)){
|
|
|
+// List<DispatchDataDO> dispatchDataDOS = BeanUtil.copyToList(dispatchData, DispatchDataDO.class);
|
|
|
+// operatorDataMapper.replaceDispatchData(dispatchDataDOS,hospitalId);
|
|
|
+// }
|
|
|
+ }
|
|
|
+}
|