diff --git a/pom.xml b/pom.xml index b4cf877..ca455d6 100644 --- a/pom.xml +++ b/pom.xml @@ -70,6 +70,11 @@ commons-net ${commons-net.version} + + org.apache.commons + commons-collections4 + 4.4 + diff --git a/src/main/java/com/emr/controller/lastVerifyController.java b/src/main/java/com/emr/controller/lastVerifyController.java index 0c3d2d5..41771f9 100644 --- a/src/main/java/com/emr/controller/lastVerifyController.java +++ b/src/main/java/com/emr/controller/lastVerifyController.java @@ -8,6 +8,7 @@ package com.emr.controller; import com.emr.entity.*; import com.emr.service.Archive_MasterService; +import com.emr.service.CompenSateService; import com.emr.service.Emr_Fault_DetailService; import com.emr.service.Emr_Fault_TypeService; import com.emr.service.ipml.EmrPaperPositionInfoServer; @@ -60,6 +61,8 @@ public class lastVerifyController { @Autowired private EmrPaperPositionInfoServer paperPositionInfoServer; + @Autowired + private CompenSateService compenSateService; @RequestMapping(value = "/lastVerifys") public String faults() { return "lastVerifyDir/lastVerifyList"; @@ -77,6 +80,14 @@ public class lastVerifyController { return result; } + + @ResponseBody + @RequestMapping(value = "/updateCompensate") + + public int updateCompensate(String id,String patientId){ + return compenSateService.updateCompenSate(id,patientId); + } + @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo,Integer isSearch) throws Exception { diff --git a/src/main/java/com/emr/dao/CompenSateMapper.java b/src/main/java/com/emr/dao/CompenSateMapper.java new file mode 100644 index 0000000..b51d921 --- /dev/null +++ b/src/main/java/com/emr/dao/CompenSateMapper.java @@ -0,0 +1,24 @@ +package com.emr.dao; + +import com.emr.vo.CompenSateVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @InterfaceName CompenSateMapper + * @Description 按需采集接口 + * @Author linjj + * @Date 2024/3/25 14:16 + * @Version 1.0 + */ +public interface CompenSateMapper { + + List selectAll(@Param(value = "ids")String ids); + + int updateCompenSate(String masterId); + + List selectAllByMasterId(String masterId); + + int addCompenSate(@Param(value = "masterId")String masterId,@Param(value = "patientId")String patientId,@Param(value = "compensateState")int compensateState); +} diff --git a/src/main/java/com/emr/entity/Archive_Master_Vo.java b/src/main/java/com/emr/entity/Archive_Master_Vo.java index 44f5acb..49e47f1 100644 --- a/src/main/java/com/emr/entity/Archive_Master_Vo.java +++ b/src/main/java/com/emr/entity/Archive_Master_Vo.java @@ -50,6 +50,15 @@ public class Archive_Master_Vo { private String deptCodeLend; private String returntoRole; + private int compensateState; + + public int getCompensateState() { + return compensateState; + } + + public void setCompensateState(int compensateState) { + this.compensateState = compensateState; + } private String returnOperUsername; diff --git a/src/main/java/com/emr/service/CompenSateService.java b/src/main/java/com/emr/service/CompenSateService.java new file mode 100644 index 0000000..a026454 --- /dev/null +++ b/src/main/java/com/emr/service/CompenSateService.java @@ -0,0 +1,13 @@ +package com.emr.service; + +/** + * @InterfaceName CompenSateService + * @Description + * @Author linjj + * @Date 2024/3/25 14:42 + * @Version 1.0 + */ +public interface CompenSateService { + + int updateCompenSate(String masterId,String patientId); +} diff --git a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java index 0054598..aa1feb7 100644 --- a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java @@ -7,13 +7,18 @@ package com.emr.service.ipml; import com.emr.dao.Archive_MasterMapper; +import com.emr.dao.CompenSateMapper; import com.emr.dao1.OracleMapper; import com.emr.entity.*; import com.emr.service.Archive_MasterService; import com.emr.service.Emr_DictionaryService; import com.emr.util.ExceptionPrintUtil; +import com.emr.util.ListUtil; +import com.emr.util.Setters; +import com.emr.vo.CompenSateVo; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,6 +26,7 @@ import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; +import java.util.Map; @Service public class Archive_MasterServiceImpl implements Archive_MasterService { @@ -33,6 +39,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { @Autowired private OracleMapper oracleMapper; + @Autowired + private CompenSateMapper compenSateMapper; @Override public OffsetLimitPage selectByCol(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) { PageHelper.offsetPage(offset, limit); @@ -115,6 +123,30 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { List list = archiveMasterMapper.selectByLast(archiveMasterVo); //设置科室设置纸质签收状态和his召回状态 setPaperStatusAndCallbackStatus(list); + if (list.size()>0){ + //按需采集 + //masterIds集合 + List masterIds = ListUtil.distinctSelect(list, Archive_Master_Vo::getId); + //分批次 + List> newList = ListUtils.partition(masterIds, 1000); + for (List messageList : newList) { + //转成逗号拼接 + String ids = String.join(",", messageList); + //获取按需采集信息 + List compenSateVos = compenSateMapper.selectAll(ids); + //医生是否有缺陷 + Map masterIdMap = ListUtil.toMap(compenSateVos, CompenSateVo::getMasterId); + Setters.instance().list(list).cycleSetProperties(p -> { + String masterId = p.getId(); + if (masterIdMap.containsKey(masterId)){ + p.setCompensateState(masterIdMap.get(masterId).getCompensateState()); + }else { + p.setCompensateState(1); + } + }); + } + } + return new OffsetLimitPage((Page) list); } diff --git a/src/main/java/com/emr/service/ipml/CompenSateServiceImpl.java b/src/main/java/com/emr/service/ipml/CompenSateServiceImpl.java new file mode 100644 index 0000000..809a7f1 --- /dev/null +++ b/src/main/java/com/emr/service/ipml/CompenSateServiceImpl.java @@ -0,0 +1,36 @@ +package com.emr.service.ipml; + +import com.emr.dao.CompenSateMapper; +import com.emr.service.CompenSateService; +import com.emr.vo.CompenSateVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @ClassName CompenSateServiceImpl + * @Description + * @Author linjj + * @Date 2024/3/25 14:42 + * @Version 1.0 + */ +@Service +public class CompenSateServiceImpl implements CompenSateService { + + @Autowired + private CompenSateMapper compenSateMapper; + + @Override + public int updateCompenSate(String masterId, String patientId) { + //判断按需表中是否存在当前记录 + List list = compenSateMapper.selectAllByMasterId(masterId); + //如果不存在则新增任务,存在则更新任务状态 + if (list == null || list.isEmpty()) { + return compenSateMapper.addCompenSate(masterId, patientId, 0); + } else { + return compenSateMapper.updateCompenSate(masterId); + } + } +} diff --git a/src/main/java/com/emr/util/FieldSelector.java b/src/main/java/com/emr/util/FieldSelector.java new file mode 100644 index 0000000..077c034 --- /dev/null +++ b/src/main/java/com/emr/util/FieldSelector.java @@ -0,0 +1,12 @@ +package com.emr.util; + +/** + * @InterfaceName FieldSelector + * @Description + * @Author linjj + * @Date 2023/6/29 16:41 + * @Version 1.0 + */ +public interface FieldSelector { + FieldType select(Type type); +} diff --git a/src/main/java/com/emr/util/ListPropertySetter.java b/src/main/java/com/emr/util/ListPropertySetter.java new file mode 100644 index 0000000..20eb1dd --- /dev/null +++ b/src/main/java/com/emr/util/ListPropertySetter.java @@ -0,0 +1,22 @@ +package com.emr.util; + +import java.util.List; + +public class ListPropertySetter { + + private final List values; + + public ListPropertySetter(List values) { + this.values = values; + } + + public List cycleSetProperties(PropertySetter setter) { + + if (null == values) return values; + + for (T value : values) { + setter.apply(value); + } + return values; + } +} diff --git a/src/main/java/com/emr/util/ListUtil.java b/src/main/java/com/emr/util/ListUtil.java new file mode 100644 index 0000000..6c33688 --- /dev/null +++ b/src/main/java/com/emr/util/ListUtil.java @@ -0,0 +1,73 @@ +package com.emr.util; + +import org.springframework.util.CollectionUtils; + +import java.util.*; + +public final class ListUtil { + public static Map toMap(List list, FieldSelector selector) { + if (CollectionUtils.isEmpty(list)) return Collections.emptyMap(); + Map map = new HashMap<>(list.size()); + for (T t : list) { + K key = selector.select(t); + if (key != null) map.put(key, t); + } + return map; + } + + public static Map> groupBy(List list, FieldSelector selector) { + if (CollectionUtils.isEmpty(list)) return Collections.emptyMap(); + Map> map = new HashMap<>(); + for (T t : list) { + K key = selector.select(t); + if (key == null) continue; + if (!map.containsKey(key)) { + map.put(key, new ArrayList()); + } + map.get(key).add(t); + } + return map; + } + + public static List select(List list, FieldSelector selector) { + if (CollectionUtils.isEmpty(list)) return Collections.emptyList(); + List filedList = new ArrayList<>(list.size()); + for (T t : list) { + K key = selector.select(t); + if (key != null) filedList.add(key); + } + return filedList; + } + + public static List distinctSelect(List list, FieldSelector selector) { + if (CollectionUtils.isEmpty(list)) return Collections.emptyList(); + Set filedSet = new HashSet<>(); + for (T t : list) { + K key = selector.select(t); + if (key != null) filedSet.add(key); + } + return new ArrayList<>(filedSet); + } + + @SafeVarargs + public static List unionWithoutDuplicate(List... values) { + if (null == values || values.length <= 0) return Collections.emptyList(); + Set unionFiledSet = new HashSet<>(); + for (List value : values) { + if (!CollectionUtils.isEmpty(value)) { + unionFiledSet.addAll(value); + } + } + return new ArrayList<>(unionFiledSet); + } + + public static List skipDuplicateKey(List list, FieldSelector selector) { + if (CollectionUtils.isEmpty(list)) return Collections.emptyList(); + List filedList = new ArrayList<>(list.size()); + Map map = toMap(list, selector); + for (K key : map.keySet()) { + filedList.add(map.get(key)); + } + return filedList; + } +} diff --git a/src/main/java/com/emr/util/PropertySetter.java b/src/main/java/com/emr/util/PropertySetter.java new file mode 100644 index 0000000..714c4ed --- /dev/null +++ b/src/main/java/com/emr/util/PropertySetter.java @@ -0,0 +1,7 @@ +package com.emr.util; + +public interface PropertySetter { + + void apply(T t); + +} diff --git a/src/main/java/com/emr/util/Setters.java b/src/main/java/com/emr/util/Setters.java new file mode 100644 index 0000000..db1b600 --- /dev/null +++ b/src/main/java/com/emr/util/Setters.java @@ -0,0 +1,14 @@ +package com.emr.util; + +import java.util.List; + +public class Setters { + + public static Setters instance() { + return new Setters<>(); + } + + public ListPropertySetter list(List values) { + return new ListPropertySetter<>(values); + } +} diff --git a/src/main/java/com/emr/vo/CompenSateVo.java b/src/main/java/com/emr/vo/CompenSateVo.java new file mode 100644 index 0000000..bec15c0 --- /dev/null +++ b/src/main/java/com/emr/vo/CompenSateVo.java @@ -0,0 +1,18 @@ +package com.emr.vo; + +import lombok.Data; + +/** + * @ClassName CompenSateVo + * @Description 按需采集返回 + * @Author linjj + * @Date 2024/3/25 14:15 + * @Version 1.0 + */ +@Data +public class CompenSateVo { + private String masterId; + private String patientId; + private int compensateState; + +} diff --git a/src/main/resources/config/jdbc.properties b/src/main/resources/config/jdbc.properties index 080237d..a9a21ae 100644 --- a/src/main/resources/config/jdbc.properties +++ b/src/main/resources/config/jdbc.properties @@ -47,9 +47,9 @@ logAbandoned: true #\u56FE\u7247\u5730\u5740 pictureUrl=src\\main\\webapp -powerUrl=http://localhost:8081/power/font/getMenusByUserIdAndSysFlag -POWER_URLHEAD=http://localhost:8081/power -POWER_JSP=http://localhost:8081/power +powerUrl=http://localhost:8084/power/font/getMenusByUserIdAndSysFlag +POWER_URLHEAD=http://localhost:8084/power +POWER_JSP=http://localhost:8084/power recallReason=\u533B\u9662\u9700\u8981\u8FD9\u4EFD\u6587\u6863 HomepageDictionary=http://localhost:8080/WholeCheckInterface/services/HomepageDictionary?wsdl HomepageMethod=CheckData diff --git a/src/main/resources/mapper/CompenSateMapper.xml b/src/main/resources/mapper/CompenSateMapper.xml new file mode 100644 index 0000000..b96b82b --- /dev/null +++ b/src/main/resources/mapper/CompenSateMapper.xml @@ -0,0 +1,25 @@ + + + + + insert into compensate (masterId, patientId, + compensateState) + values (#{masterId}, #{patientId}, + #{compensateState}) + + + update compensate set compensateState=0 where masterId=#{masterId} + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp b/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp index c11f7df..b28c8af 100644 --- a/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp +++ b/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp @@ -1751,9 +1751,9 @@ $("#outHospLab").html(row.dischargeDisposition); $("#inLab").html(row.inpNo); $("#inTimeLab").html(row.visitId); - if (row.lockinfo == '') { - $("#wzContent").text(row.lockinfo); - } else { + // if (row.lockinfo == '') { + // $("#wzContent").text(row.lockinfo); + // } else { //请求接口查看并回显 $.ajax({ type: 'get', @@ -1767,7 +1767,7 @@ } }, }) - } + // } ///入/出院年+出院月+住院号+住院次数 var outDate = ""; if (row.dischargeDateTime != null && row.dischargeDateTime != "") { diff --git a/src/main/webapp/WEB-INF/views/lastVerifyDir/lastVerifyList.jsp b/src/main/webapp/WEB-INF/views/lastVerifyDir/lastVerifyList.jsp index 2a9aa5c..8d2e828 100644 --- a/src/main/webapp/WEB-INF/views/lastVerifyDir/lastVerifyList.jsp +++ b/src/main/webapp/WEB-INF/views/lastVerifyDir/lastVerifyList.jsp @@ -1447,6 +1447,21 @@ } }); } + function compensateState(id,patientId) { + console.log("id"+id) + console.log("patientId"+patientId) + $.ajax({ + url: "${path}/lastVerify/updateCompensate", + type: "POST", + data: {id: id,patientId:patientId}, + success: function (result) { + if (result==1){ + toastr.success("his重新采集成功!"); + $('#table').bootstrapTable('refresh'); + } + } + }); + } getFaultType(); @@ -1759,6 +1774,11 @@ html += ''; } } + if (row.compensateState==1){ + html += ''; + }else { + html += ''; + } return html; }, @@ -1780,13 +1800,14 @@ }); getFaultType(); - $('#returnModal').modal({ backdrop: 'static',//backdrop 为 static 时,点击模态对话框的外部区域不会将其关闭。 keyboard: false,//keyboard 为 false 时,按下 Esc 键不会关闭 Modal。 show: true//弹出对话框 }); + }, 'click .compensateState': function (e, value, row, index) { + compensateState(row.id,row.patientId); }, 'click .verifyInfo': function (e, value, row, index) { // console.log("====审核===="); @@ -1841,9 +1862,6 @@ $("#inLab").html(row.inpNo); $("#inTimeLab").html(row.visitId); $("#wzContent").html(row.lockinfo); - if(row.lockinfo == ''){ - $("#wzContent").html(row.lockinfo); - }else{ //请求接口查看并回显 $.ajax({ type:'get', @@ -1857,7 +1875,7 @@ } }, }) - } + //入/出院年+出院月+住院号+住院次数 var outDate = ""; if (row.dischargeDateTime != null && row.dischargeDateTime != "") {