fix: 同步基础数据处理科室code

jp2demo1.0
wyb 9 months ago
parent ccf210083e
commit aa623490aa

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -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<Tbasic> tbasicList);
}

@ -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<PowerDept> list();
int insert(@Param("list") List<PowerDept> addPowerDeptList);
}

@ -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<Tbasic> tbasicList) {
HANDLE_DEPT_LOCK.lock();
try {
List<PowerDept> powerDeptList= powerDeptMapper.list();
Map<String, PowerDept> powerDeptMap = powerDeptList.stream().collect(Collectors.toMap(PowerDept::getDeptName, Function.identity()));
long maxDeptId=0L;
Optional<Long> 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();
}
}
}

@ -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<TbasicSub> 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<Tbasic> 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<Tbasic> getInsertTbasic(List<Tbasic> oldBasicList, List<CardInfo> cardInfoList) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<CardInfo> cardInfos = cardInfoList.stream().filter(f -> {

@ -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 + "的基础数据成功");

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.demo.mapper.mysql.PowerDeptMapper">
<insert id="insert">
INSERT INTO docus_system.power_dept
(dept_id, dept_code, dept_name,effective)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.deptId},#{item.deptCode},#{item.deptName},1)
</foreach>
</insert>
<select id="list" resultType="com.docus.demo.entity.PowerDept">
select * from docus_system.power_dept
</select>
</mapper>
Loading…
Cancel
Save