From aa623490aa6a3f4944f0fdcd08a3d58d24b5043b Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Fri, 25 Oct 2024 15:34:36 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5=E5=9F=BA=E7=A1=80?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E7=A7=91=E5=AE=A4code?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/docus/demo/entity/PowerDept.java | 56 ++++++++++++
.../docus/demo/facade/BasicDeptService.java | 18 ++++
.../demo/mapper/mysql/PowerDeptMapper.java | 15 ++++
.../demo/service/BasicDeptServiceImpl.java | 88 +++++++++++++++++++
.../docus/demo/service/SyncBasicDataImpl.java | 7 ++
.../docus/demo/service/SyncBasicFileImpl.java | 4 +
.../mapper/mysql/PowerDeptMapper.xml | 18 ++++
7 files changed, 206 insertions(+)
create mode 100644 src/main/java/com/docus/demo/entity/PowerDept.java
create mode 100644 src/main/java/com/docus/demo/facade/BasicDeptService.java
create mode 100644 src/main/java/com/docus/demo/mapper/mysql/PowerDeptMapper.java
create mode 100644 src/main/java/com/docus/demo/service/BasicDeptServiceImpl.java
create mode 100644 src/main/resources/mapper/mysql/PowerDeptMapper.xml
diff --git a/src/main/java/com/docus/demo/entity/PowerDept.java b/src/main/java/com/docus/demo/entity/PowerDept.java
new file mode 100644
index 0000000..fafa543
--- /dev/null
+++ b/src/main/java/com/docus/demo/entity/PowerDept.java
@@ -0,0 +1,56 @@
+package com.docus.demo.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ *
+ * 科室
+ *
+ *
+ * @author jiashi
+ * @since 2021-04-15
+ */
+@Data
+@ApiModel(value = "PowerDept对象", description = "科室")
+public class PowerDept {
+
+ @ApiModelProperty(value = "科室id")
+ private Long deptId;
+
+ @ApiModelProperty(value = "科室代码")
+ private String deptCode;
+
+ @ApiModelProperty(value = "科室名称")
+ private String deptName;
+
+ @ApiModelProperty(value = "字典id")
+ private Integer dictId;
+
+ @ApiModelProperty(value = "是否有效")
+ private Integer effective;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createDate;
+
+ @ApiModelProperty(value = "创建人")
+ private String creater;
+
+ @ApiModelProperty(value = "更新时间")
+ private Date updateDate;
+
+ @ApiModelProperty(value = "更新人")
+ private String updater;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+ @ApiModelProperty(value = "临床科室排序")
+ private Integer sort;
+
+ @ApiModelProperty(value = "0:非临床科室,1:临床科室")
+ private Integer type;
+}
diff --git a/src/main/java/com/docus/demo/facade/BasicDeptService.java b/src/main/java/com/docus/demo/facade/BasicDeptService.java
new file mode 100644
index 0000000..d9316ce
--- /dev/null
+++ b/src/main/java/com/docus/demo/facade/BasicDeptService.java
@@ -0,0 +1,18 @@
+package com.docus.demo.facade;
+
+import com.docus.demo.entity.Tbasic;
+
+import java.util.List;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/10/25 14:40
+ */
+public interface BasicDeptService {
+ /**
+ * 处理基础数据的科室,根据科室名从科室表获取科室信息填入科室编码,如果没有则新增一个科室
+ * @param tbasicList 基础数据
+ */
+
+ void handleDept(List tbasicList);
+}
diff --git a/src/main/java/com/docus/demo/mapper/mysql/PowerDeptMapper.java b/src/main/java/com/docus/demo/mapper/mysql/PowerDeptMapper.java
new file mode 100644
index 0000000..6619873
--- /dev/null
+++ b/src/main/java/com/docus/demo/mapper/mysql/PowerDeptMapper.java
@@ -0,0 +1,15 @@
+package com.docus.demo.mapper.mysql;
+
+
+import com.docus.demo.entity.PowerDept;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface PowerDeptMapper {
+
+
+ List list();
+
+ int insert(@Param("list") List addPowerDeptList);
+}
diff --git a/src/main/java/com/docus/demo/service/BasicDeptServiceImpl.java b/src/main/java/com/docus/demo/service/BasicDeptServiceImpl.java
new file mode 100644
index 0000000..fd33357
--- /dev/null
+++ b/src/main/java/com/docus/demo/service/BasicDeptServiceImpl.java
@@ -0,0 +1,88 @@
+package com.docus.demo.service;
+
+import com.docus.demo.entity.PowerDept;
+import com.docus.demo.entity.Tbasic;
+import com.docus.demo.facade.BasicDeptService;
+import com.docus.demo.mapper.mysql.PowerDeptMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/10/25 14:40
+ */
+@Slf4j
+@Service
+public class BasicDeptServiceImpl implements BasicDeptService {
+ @Resource
+ private PowerDeptMapper powerDeptMapper;
+ private final ReentrantLock HANDLE_DEPT_LOCK=new ReentrantLock();
+ @Override
+ public void handleDept(List tbasicList) {
+ HANDLE_DEPT_LOCK.lock();
+ try {
+ List powerDeptList= powerDeptMapper.list();
+ Map powerDeptMap = powerDeptList.stream().collect(Collectors.toMap(PowerDept::getDeptName, Function.identity()));
+ long maxDeptId=0L;
+ Optional maxDeptIdOp = powerDeptList.stream().map(PowerDept::getDeptId).max(Comparator.naturalOrder());
+ if (maxDeptIdOp.isPresent()) {
+ maxDeptId=maxDeptIdOp.get();
+ }
+ List< PowerDept> addPowerDeptList = new ArrayList<>();
+ for (Tbasic tbasic : tbasicList) {
+ if(tbasic.getAdmissDeptName() == null){
+ tbasic.setAdmissDeptName("");
+ }
+ if(tbasic.getDisDeptName() == null){
+ tbasic.setDisDeptName("");
+ }
+
+ if (!powerDeptMap.containsKey(tbasic.getAdmissDeptName())) {
+ PowerDept powerDept = new PowerDept();
+ maxDeptId=maxDeptId+1;
+ powerDept.setDeptId(maxDeptId);
+ powerDept.setDeptCode(String.valueOf(maxDeptId));
+ powerDept.setDeptName(tbasic.getAdmissDeptName());
+
+ powerDeptMap.put(powerDept.getDeptName(),powerDept);
+ addPowerDeptList.add(powerDept);
+ }
+
+ if (!powerDeptMap.containsKey(tbasic.getDisDeptName())) {
+ PowerDept powerDept = new PowerDept();
+ maxDeptId=maxDeptId+1;
+ powerDept.setDeptId(maxDeptId);
+ powerDept.setDeptCode(String.valueOf(maxDeptId));
+ powerDept.setDeptName(tbasic.getDisDeptName());
+
+ powerDeptMap.put(powerDept.getDeptName(),powerDept);
+ addPowerDeptList.add(powerDept);
+ }
+
+ PowerDept powerDept1 = powerDeptMap.get(tbasic.getAdmissDeptName());
+ tbasic.setAdmissDept(powerDept1.getDeptCode());
+ PowerDept powerDept2 = powerDeptMap.get(tbasic.getDisDeptName());
+ tbasic.setAdmissDept(powerDept2.getDeptCode());
+
+ }
+
+ if(!addPowerDeptList.isEmpty()){
+ powerDeptMapper.insert(addPowerDeptList);
+ }
+
+ }catch (Exception ex){
+ log.error("处理基础数据科室信息异常,"+ex.getMessage(),ex);
+ } finally {
+ HANDLE_DEPT_LOCK.unlock();
+ }
+
+ }
+
+
+}
diff --git a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
index cb3b6a2..629c60c 100644
--- a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
+++ b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java
@@ -13,6 +13,7 @@ import com.docus.demo.entity.sqlserver.CardInfo;
import com.docus.demo.entity.sqlserver1.Tdiagnose;
import com.docus.demo.entity.sqlserver1.Toperation;
import com.docus.demo.entity.sqlserver1.Tpatientvisit;
+import com.docus.demo.facade.BasicDeptService;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
@@ -40,6 +41,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
private TcardMapper tcardMapper;
@Autowired
private ScanAssortMapper scanAssortMapper;
+ @Autowired
+ private BasicDeptService basicDeptService;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// private final ExecutorService executor = Executors.newFixedThreadPool(7);
@@ -87,6 +90,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
List tbasicSubList = this.getTbasicSubList(tbasicList);
log.info("tbasicSubList"+tbasicSubList.size());
//数据入库
+ basicDeptService.handleDept(tbasicList);
basicMapper.insertOrUpdateByid(tbasicList);
basicMapper.insertOrUpdateTbasicSub(tbasicSubList);
log.info("数据库入库"+tbasicList.size() +"子表"+tbasicSubList.size());
@@ -285,6 +289,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
for (int i = 0; i < tbasicList.size(); i += batchSize) {
int endIndex = Math.min(i + batchSize, tbasicList.size());
List sublist = tbasicList.subList(i, endIndex);
+ basicDeptService.handleDept(tbasicList);
//数据入库
basicMapper.insertOrUpdateByid(sublist);
log.info("数据入库"+sublist.size());
@@ -298,6 +303,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
return CommonResult.success("同步成功");
}
+
+
private List getInsertTbasic(List oldBasicList, List cardInfoList) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List cardInfos = cardInfoList.stream().filter(f -> {
diff --git a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
index b2088fa..4d268d8 100644
--- a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
+++ b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.docus.demo.dto.*;
import com.docus.demo.entity.*;
+import com.docus.demo.facade.BasicDeptService;
import com.docus.demo.facade.ISyncBasicFileService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
@@ -37,6 +38,8 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private PictureMapper pictureMapper;
@Resource
private ScanAssortMapper scanAssortMapper;
+ @Resource
+ private BasicDeptService basicDeptService;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Value("${savePath}")
@@ -233,6 +236,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
//组织基础数据
Tbasic addTbasic = this.getTbasic(fileUploadJpg);
tbasics.add(addTbasic);
+ basicDeptService.handleDept(tbasics);
tbasic = addTbasic;
basicMapper.addBasic(tbasics);
log.info("新增PatientId为:" + patientId + "的基础数据成功");
diff --git a/src/main/resources/mapper/mysql/PowerDeptMapper.xml b/src/main/resources/mapper/mysql/PowerDeptMapper.xml
new file mode 100644
index 0000000..fb2456b
--- /dev/null
+++ b/src/main/resources/mapper/mysql/PowerDeptMapper.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ INSERT INTO docus_system.power_dept
+ (dept_id, dept_code, dept_name,effective)
+ VALUES
+
+ (#{item.deptId},#{item.deptCode},#{item.deptName},1)
+
+
+
+
\ No newline at end of file