|
|
|
|
@ -80,7 +80,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
assort.setIsCheck(1);
|
|
|
|
|
List<Zd_Assort> assortList = assortMapper.selectAll(assort);
|
|
|
|
|
//循环遍历list集合判断是否完整,完整isCheck赋值1,且批量更新LockInfo字段为完整
|
|
|
|
|
checkSuccess(list, details, assortList);
|
|
|
|
|
updateMasterBySuccess(list, details, assortList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
long end = System.currentTimeMillis();
|
|
|
|
|
@ -94,7 +94,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
* @param details
|
|
|
|
|
* @param assortList
|
|
|
|
|
*/
|
|
|
|
|
private void checkSuccess(List<Archive_Master_Vo> list, List<Archive_Detail> details, List<Zd_Assort> assortList) {
|
|
|
|
|
private void updateMasterBySuccess(List<Archive_Master_Vo> list, List<Archive_Detail> details, List<Zd_Assort> assortList) {
|
|
|
|
|
//循环遍历list集合判断是否完整,完整isCheck赋值1,且批量更新LockInfo字段为完整
|
|
|
|
|
//定义通过完整性校验的masterIds
|
|
|
|
|
StringBuilder masterIds = new StringBuilder();
|
|
|
|
|
@ -120,7 +120,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
//如果成功匹配个数和需校验分类个数相等,全部匹配
|
|
|
|
|
if(successCount == assortList.size()){
|
|
|
|
|
//list的isSuccess字段值赋值1
|
|
|
|
|
master.setIsSuccess(1);
|
|
|
|
|
master.setIsSuccess("1");
|
|
|
|
|
//不完整的批量更新为完整
|
|
|
|
|
if(!"完整".equals(master.getLockinfo())) {
|
|
|
|
|
if (StringUtils.isBlank(masterIds)) {
|
|
|
|
|
@ -222,18 +222,18 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
//计算属于哪种审核角色
|
|
|
|
|
Msg role = getRole();
|
|
|
|
|
if(null != role) {
|
|
|
|
|
for (Archive_Master_Vo master_vo : list) {
|
|
|
|
|
String archivestate = master_vo.getArchivestate();
|
|
|
|
|
for (Archive_Master_Vo masterVo : list) {
|
|
|
|
|
String archivestate = masterVo.getArchivestate();
|
|
|
|
|
if (StringUtils.isNotBlank(archivestate)) {
|
|
|
|
|
//转换中文状态
|
|
|
|
|
boolean numeric = isNumeric(archivestate);
|
|
|
|
|
if (numeric) {
|
|
|
|
|
Integer status = Integer.valueOf(archivestate);
|
|
|
|
|
archivestate = EnumVerify.DocState.GetStepName(status, role.getCode());
|
|
|
|
|
master_vo.setStatus(archivestate);
|
|
|
|
|
masterVo.setStatus(archivestate);
|
|
|
|
|
//获取审核按钮和退回按钮集合
|
|
|
|
|
String btns = getBtns(status, flowRoles, master_vo.getId());
|
|
|
|
|
master_vo.setBtns(btns);
|
|
|
|
|
String btns = getBtns(status, flowRoles, masterVo.getId());
|
|
|
|
|
masterVo.setBtns(btns);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -586,7 +586,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
//循环添加进流转记录和缺陷记录
|
|
|
|
|
for(Integer backToCode : backToCodeList){
|
|
|
|
|
//获取当前节点和下个节点对象集合
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(targetCode, backToCode);
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(targetCode, backToCode,archiveFlowRoles);
|
|
|
|
|
//添加进流转记录
|
|
|
|
|
Integer flowInfoId = flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date());
|
|
|
|
|
emrFaultDetail.setParentId(flowInfoId);
|
|
|
|
|
@ -659,32 +659,122 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
@Override
|
|
|
|
|
public Msg updateStateByArchivId(Archive_Master_Vo master) throws Exception{
|
|
|
|
|
//修改病案归档状态
|
|
|
|
|
//计算审核状态code
|
|
|
|
|
String archivestate = master.getArchivestate();
|
|
|
|
|
if (StringUtils.isNotBlank(archivestate)) {
|
|
|
|
|
Integer code = Integer.valueOf(archivestate);
|
|
|
|
|
if (StringUtils.isNotBlank(master.getArchivestate())) {
|
|
|
|
|
StringBuilder masterIds = new StringBuilder();
|
|
|
|
|
//查询审核角色集合,根据有效进行计算状态code
|
|
|
|
|
List<ArchiveFlowRole> archiveFlowRoles = flowRoleMapper.selectAll();
|
|
|
|
|
Integer role = master.getRole();
|
|
|
|
|
//计算状态code
|
|
|
|
|
//code:当前状态code,role:角色1医生2护士3护士长,archiveFlowRoles:根据有效的审核角色进行计算
|
|
|
|
|
int statuCode = EnumVerify.DocState.GetNextStepCode(code,role, archiveFlowRoles);
|
|
|
|
|
master.setArchivestate(statuCode+"");
|
|
|
|
|
//复制对象
|
|
|
|
|
Archive_Master archiveMaster = new Archive_Master();
|
|
|
|
|
BeanUtils.copyProperties(master,archiveMaster);
|
|
|
|
|
//更新
|
|
|
|
|
updateByClo(archiveMaster);
|
|
|
|
|
//获取当前节点和下个节点对象集合
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(master.getStatus()+"", null);
|
|
|
|
|
//添加进流转记录
|
|
|
|
|
flowInfoService.insertFlowInfo(master.getId(),master.getRemark(),currentRoleAndNextRole.get(0),new ArchiveFlowRole(),new Date());
|
|
|
|
|
return Msg.success();
|
|
|
|
|
//获取目前code集合
|
|
|
|
|
String[] archivestates = master.getArchivestate().split(",");
|
|
|
|
|
//获取主键id集合
|
|
|
|
|
String[] ids = master.getId().split(",");
|
|
|
|
|
//获取审核角色集合
|
|
|
|
|
String[] roleArr = master.getRoles().split(",");
|
|
|
|
|
//获取当前操作code集合
|
|
|
|
|
String[] roleCodes = master.getStatus().split(",");
|
|
|
|
|
//获取资料完整标识集合
|
|
|
|
|
String[] isSuccesses = master.getIsSuccess().split(",");
|
|
|
|
|
for (int i = 0; i < archivestates.length; i++) {
|
|
|
|
|
if(StringUtils.isNotBlank(archivestates[i])){
|
|
|
|
|
//完整或只有一个
|
|
|
|
|
if("1".equals(isSuccesses[i]) || ids.length == 1){
|
|
|
|
|
updateApprove(ids[i],master.getRemark(), roleArr[i], archiveFlowRoles, archivestates[i], roleCodes[i]);
|
|
|
|
|
}else{
|
|
|
|
|
if(StringUtils.isBlank(masterIds)){
|
|
|
|
|
masterIds.append("'").append(ids[i]).append("'");
|
|
|
|
|
}else{
|
|
|
|
|
masterIds.append(",'").append(ids[i]).append("'");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//不完整,根据不完整主键集合组织不对应不完整分类集合
|
|
|
|
|
List<Archive_Master_Vo> unSuccessList = new ArrayList<>();
|
|
|
|
|
if(StringUtils.isNotBlank(masterIds)){
|
|
|
|
|
unSuccessList = selectUnSuccessAssortByMasterIds(masterIds);
|
|
|
|
|
}
|
|
|
|
|
if(!CollectionUtils.isEmpty(unSuccessList)){
|
|
|
|
|
//存在不完整
|
|
|
|
|
return Msg.success().add("unSuccessList",unSuccessList);
|
|
|
|
|
}else{
|
|
|
|
|
//全部完整返回
|
|
|
|
|
return Msg.success();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return Msg.fail("初始状态出错了!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 当次初审
|
|
|
|
|
* @param remark
|
|
|
|
|
* @param role
|
|
|
|
|
* @param archiveFlowRoles
|
|
|
|
|
* @param archivestate
|
|
|
|
|
* @param masterId
|
|
|
|
|
* @param roleCode
|
|
|
|
|
* @throws Exception
|
|
|
|
|
*/
|
|
|
|
|
private void updateApprove(String masterId,String remark, String role, List<ArchiveFlowRole> archiveFlowRoles, String archivestate, String roleCode) throws Exception {
|
|
|
|
|
Archive_Master archiveMaster = new Archive_Master();
|
|
|
|
|
Integer code = Integer.valueOf(archivestate);
|
|
|
|
|
//计算状态code
|
|
|
|
|
// code:当前状态code,role:角色1医生2护士3护士长,archiveFlowRoles:根据有效的审核角色进行计算
|
|
|
|
|
int statuCode = EnumVerify.DocState.GetNextStepCode(code,Integer.valueOf(role), archiveFlowRoles);
|
|
|
|
|
archiveMaster.setArchivestate(statuCode+"");
|
|
|
|
|
archiveMaster.setId(masterId);
|
|
|
|
|
//更新
|
|
|
|
|
updateByClo(archiveMaster);
|
|
|
|
|
//获取当前节点和下个节点对象集合
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(roleCode, null,archiveFlowRoles);
|
|
|
|
|
//添加进流转记录
|
|
|
|
|
flowInfoService.insertFlowInfo(masterId,remark,currentRoleAndNextRole.get(0),currentRoleAndNextRole.get(1),new Date());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据不完整masterId集合返回对应不完整分类集合
|
|
|
|
|
* @param masterIds
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private List<Archive_Master_Vo> selectUnSuccessAssortByMasterIds(StringBuilder masterIds) {
|
|
|
|
|
List<Archive_Master_Vo> list = new ArrayList<>();
|
|
|
|
|
if(StringUtils.isNotBlank(masterIds)){
|
|
|
|
|
List<Archive_Detail> details = detailMapper.selectAssortIdsByMasterIds(masterIds.toString());
|
|
|
|
|
//查询需要校验完整性的分类集合
|
|
|
|
|
Zd_Assort assort = new Zd_Assort();
|
|
|
|
|
assort.setIsCheck(1);
|
|
|
|
|
List<Zd_Assort> assortList = assortMapper.selectAll(assort);
|
|
|
|
|
String[] masterIdArr = masterIds.toString().split(",");
|
|
|
|
|
for (String masterId:masterIdArr) {
|
|
|
|
|
masterId = masterId.replaceAll("\'", "");
|
|
|
|
|
Archive_Master_Vo master = new Archive_Master_Vo();
|
|
|
|
|
StringBuilder unSuccessAssortNames = new StringBuilder();
|
|
|
|
|
for(Zd_Assort assortFor : assortList){
|
|
|
|
|
//定义无匹配的分类
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
for(Archive_Detail detail : details){
|
|
|
|
|
//判断主键相同且分类id相同
|
|
|
|
|
if(masterId.equals(detail.getMasterid()) && assortFor.getAssortId().equals(detail.getAssortid())){
|
|
|
|
|
flag = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//该分类无匹配组织名称集合
|
|
|
|
|
if(!flag){
|
|
|
|
|
if(StringUtils.isBlank(unSuccessAssortNames)){
|
|
|
|
|
unSuccessAssortNames.append(assortFor.getAssortName());
|
|
|
|
|
}else{
|
|
|
|
|
unSuccessAssortNames.append(",").append(assortFor.getAssortName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
master.setId(masterId);
|
|
|
|
|
master.setUnSuccessAssortNames(unSuccessAssortNames.toString());
|
|
|
|
|
list.add(master);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* author:zwh
|
|
|
|
|
* 终审审核操作
|
|
|
|
|
@ -696,6 +786,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
String ids = master.getId();
|
|
|
|
|
String[] idList = ids.split(",");
|
|
|
|
|
List<ArchiveFlowRole> archiveFlowRoles = flowRoleMapper.selectAll();
|
|
|
|
|
for(String id : idList) {
|
|
|
|
|
if(StringUtils.isNotBlank(id)) {
|
|
|
|
|
//修改病案归档状态
|
|
|
|
|
@ -724,60 +815,11 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
|
|
|
|
|
//是已召回,将当前节点code置为病案室审核
|
|
|
|
|
String currentStatus = EnumVerify.DocState.MedicalRoomCheck.getCode() + "";
|
|
|
|
|
//获取当前节点和下个节点对象集合
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(currentStatus, EnumVerify.DocState.MedicalRoomCheck.getCode());
|
|
|
|
|
List<ArchiveFlowRole> currentRoleAndNextRole = flowInfoService.getCurrentRoleAndNextRole(currentStatus, EnumVerify.DocState.MedicalRoomCheck.getCode(),archiveFlowRoles);
|
|
|
|
|
//添加流转节点
|
|
|
|
|
flowInfoService.insertFlowInfo(master.getId(), master.getRemark(), currentRoleAndNextRole.get(0), currentRoleAndNextRole.get(1), sumbitDate);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*//masterId;
|
|
|
|
|
flowInfo.setMasterId(master.getId());
|
|
|
|
|
//stepIndex:当前步骤
|
|
|
|
|
ArchiveFlowRole currentRole = new ArchiveFlowRole();
|
|
|
|
|
//查询审核角色集合,根据有效进行计算状态code
|
|
|
|
|
List<ArchiveFlowRole> archiveFlowRoles = flowRoleMapper.selectAll();
|
|
|
|
|
for (ArchiveFlowRole archiveFlowRole:archiveFlowRoles) {
|
|
|
|
|
if(archiveFlowRole.getCode().equals(EnumVerify.DocState.MedicalRoomCheck.getCode()+"")){
|
|
|
|
|
currentRole = archiveFlowRole;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
flowInfo.setStepIndex(currentRole.getStepIndex());
|
|
|
|
|
//startStep:当前步骤name
|
|
|
|
|
flowInfo.setStartStep(currentRole.getName());
|
|
|
|
|
//sumbitName:按钮名称
|
|
|
|
|
flowInfo.setSumbitName(currentRole.getSumbitName());
|
|
|
|
|
//targetStep:下一步骤name
|
|
|
|
|
flowInfo.setTargetStep("已归档");
|
|
|
|
|
//useSeconds:距离上次提交用时s数
|
|
|
|
|
Date preDate = new Date();
|
|
|
|
|
//查询上次节点的时间
|
|
|
|
|
List<ArchiveFlowInfo> archiveFlowInfos = flowInfoMapper.selectPreInfo(master.getId(), currentRole.getName());
|
|
|
|
|
if(null != archiveFlowInfos && !archiveFlowInfos.isEmpty()){
|
|
|
|
|
//存在取最后一次提交时间
|
|
|
|
|
preDate = archiveFlowInfos.get(0).getCreatetime();
|
|
|
|
|
}else{
|
|
|
|
|
//取出院时间
|
|
|
|
|
Archive_Master archiveMaster1 = archiveMasterMapper.selectByPrimaryKey(master.getId());
|
|
|
|
|
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
String dischargeDateTime = archiveMaster1.getDischargeDateTime();
|
|
|
|
|
if(StringUtils.isNotBlank(dischargeDateTime)){
|
|
|
|
|
preDate = fmt.parse(dischargeDateTime);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(null != preDate){
|
|
|
|
|
long millis = sumbitDate.getTime() - preDate.getTime();
|
|
|
|
|
flowInfo.setUseSeconds(millis/1000);
|
|
|
|
|
}
|
|
|
|
|
//remark:提交内容
|
|
|
|
|
flowInfo.setRemark(master.getRemark());
|
|
|
|
|
//userName:提交人用户名
|
|
|
|
|
// 从session获取用户名
|
|
|
|
|
flowInfo.setUserName(username);
|
|
|
|
|
//createtime:提交时间
|
|
|
|
|
flowInfo.setSumbitTime(sumbitDate);
|
|
|
|
|
//createtime:创建时间
|
|
|
|
|
flowInfo.setCreatetime(new Date());
|
|
|
|
|
flowInfoMapper.insert(flowInfo);*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|