Bläddra i källkod

添加护士管床设置,同步时可配置忽略医生或护士的比对,防止his同步清除手动设置数据

wuyunfeng 1 år sedan
förälder
incheckning
ec67092a19
19 ändrade filer med 176 tillägg och 37 borttagningar
  1. 1 1
      ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/AdviceUniqueContentServiceImpl.java
  2. 6 8
      ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/DoctorAdviceServiceImpl.java
  3. 33 5
      ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/NursingMarkCategoryConfigServiceImpl.java
  4. 20 0
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/config/CustomerConfig.java
  5. 2 2
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/controller/CustomerController.java
  6. 3 1
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/ClerkServiceImpl.java
  7. 1 1
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/CustomerMappingServiceImpl.java
  8. 16 10
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/CustomerServiceImpl.java
  9. 3 2
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/DeviceServiceImpl.java
  10. 14 1
      ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/NurseConfigServiceImpl.java
  11. 1 1
      synchrony-scheduled-task/src/main/java/com/wdklian/ncs/ms/scheduled/config/DataSourceConfig.java
  12. 2 2
      third-part-wn-hl7/src/main/java/com/wdklian/ncs/ms/wn/hl7/service/EmployeeService.java
  13. 3 0
      third-part-wn-hl7/src/main/java/com/wdklian/ncs/ms/wn/hl7/stream/DoctorAdviceSender.java
  14. 12 2
      third-part-wn-hl7/src/main/resources/bootstrap.yml
  15. 14 0
      third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/dos/NursingMarkCategoryConfigDO.java
  16. 12 0
      third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/dos/NursingMarkOptionConfigDO.java
  17. 8 1
      third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/vos/DoctorAdviceMatchNursingMarkCategoryVO.java
  18. 13 0
      third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/system/dos/NurseConfigDO.java
  19. 12 0
      third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/system/dos/NurseConfigOptionDO.java

+ 1 - 1
ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/AdviceUniqueContentServiceImpl.java

@@ -207,7 +207,7 @@ public class AdviceUniqueContentServiceImpl extends OpenPlateformCRUDServiceImpl
     @Override
     public Page listNurseCategoryMatch(GridParameter gp, Integer categoryId, ShopDO part) {
         String contentCase = this.nurseCategoryConfigService.getCaseWhenSql(categoryId, part, "advice_content", true);
-        String bgColorCase = this.nurseCategoryConfigService.getCaseWhenSql(categoryId, part, "bgColor", true);
+        String bgColorCase = this.nurseCategoryConfigService.getCaseWhenSql(categoryId, part, "bg_color", true);
 
         if (StrUtil.isEmpty(contentCase)) {
             contentCase = " when 1=0 then ''";

+ 6 - 8
ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/DoctorAdviceServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
-import com.wdklian.ncs.ms.common.entity.open.dos.AdviceUniqueContentDO;
 import com.wdklian.ncs.ms.common.entity.open.dos.DoctorAdviceDO;
 import com.wdklian.ncs.ms.common.entity.open.vos.DoctorAdviceMatchBoardItemVO;
 import com.wdklian.ncs.ms.common.entity.open.vos.DoctorAdviceMatchNursingMarkCategoryVO;
@@ -27,7 +26,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author wuyunfeng
@@ -240,9 +238,8 @@ public class DoctorAdviceServiceImpl extends OpenPlateformCRUDServiceImpl<Doctor
                 "FROM\n" +
                 "\t`doctor_advice` \n" +
                 ") as t where find_in_set(trim(his_part_key),'" + String.join(",", partHisKey) + "') and state=1 and ((manual_match_item_md5 is not null) or (" + allMatchSql + "))";
-        List<DoctorAdviceMatchNursingMarkOptionVO> doctorAdviceMapScreenAdviceItemVOS = this.daoSupport.queryForList(sql, DoctorAdviceMatchNursingMarkOptionVO.class);
 
-        return doctorAdviceMapScreenAdviceItemVOS;
+        return this.daoSupport.queryForList(sql, DoctorAdviceMatchNursingMarkOptionVO.class);
     }
 
 
@@ -253,19 +250,20 @@ public class DoctorAdviceServiceImpl extends OpenPlateformCRUDServiceImpl<Doctor
             return new ArrayList<>();
         }
         String adviceCaseWhen = StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("advice_content", part, false), " when 1=0 then null");
-        String bgColorCaseWhen = StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("bgColor", part, false), " when 1=0 then null");
+        String bgColorCaseWhen = StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("bg_color", part, false), " when 1=0 then null");
         String categoryNameCaseWhen = StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("category_name", part, false), " when 1=0 then null");
+        String iconUrlCase =StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("icon_url", part, false), " when 1=0 then null");
+        String contentShowCase =StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllAdviceCategoryCaseWhenSql("content_show", part, false), " when 1=0 then 3");
         //通过关键字匹配成功的条件
         String allMatchSql = StrUtil.emptyToDefault(this.nursingMarkCategoryConfigService.getAllMatchSql(part, false), " 1=0 ");
-        String sql = "select *,case " + adviceCaseWhen + " end as option_name,case " + bgColorCaseWhen + " end as bg_color,case " + categoryNameCaseWhen + " end as category_name from (\n" +
+        String sql = "select *,case " + adviceCaseWhen + " end as option_name,case " + bgColorCaseWhen + " end as bg_color,case " + categoryNameCaseWhen + " end as category_name, case "+iconUrlCase+" end as icon_url,case "+contentShowCase+" end as content_show from (\n" +
                 "SELECT\n" +
                 "\t* \n" +
                 "FROM\n" +
                 "\t`doctor_advice` \n" +
                 ") as t where find_in_set(trim(his_part_key),'" + String.join(",", partHisKey) + "') and state=1 and  (" + allMatchSql + ")";
-        List<DoctorAdviceMatchNursingMarkCategoryVO> adviceCategoryVOS = this.daoSupport.queryForList(sql, DoctorAdviceMatchNursingMarkCategoryVO.class);
 
-        return adviceCategoryVOS;
+        return this.daoSupport.queryForList(sql, DoctorAdviceMatchNursingMarkCategoryVO.class);
     }
 
 }

+ 33 - 5
ncs-open-service/src/main/java/com/wdklian/ncs/ms/open/service/impl/NursingMarkCategoryConfigServiceImpl.java

@@ -1,5 +1,6 @@
 package com.wdklian.ncs.ms.open.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
@@ -13,6 +14,7 @@ import com.wdklian.ncs.ms.common.utils.MatchConditionAnalysis;
 import com.wdklian.ncs.ms.framework.database.annotation.Table;
 import com.wdklian.ncs.ms.framework.exception.ServiceException;
 import com.wdklian.ncs.ms.framework.util.BeanUtil;
+import com.wdklian.ncs.ms.framework.util.StringUtil;
 import com.wdklian.ncs.ms.open.common.ShopHelper;
 import com.wdklian.ncs.ms.open.service.iservice.NursingMarkCategoryConfigService;
 import lombok.extern.slf4j.Slf4j;
@@ -82,7 +84,18 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
             throw new ServiceException("已存在同名分类[" + nurseCategoryConfigDO.getCategoryName() + "],请更换名称");
         }
         if (StrUtil.isEmpty(nurseCategoryConfigDO.getMatchCondition())) {
-            nurseCategoryConfigDO.setMatchCondition("[{\"containKeywords\":[],\"excludeKeywords\":[],\"eliminateKeywords\":[],\"containKeywordsInputVisable\":false,\"excludeKeywordsInputVisable\":false,\"eliminateKeywordsInputVisable\":false,\"bgColor\":\"\"}]");
+            nurseCategoryConfigDO.setMatchCondition("[{\"containKeywords\":[],\"excludeKeywords\":[],\"eliminateKeywords\":[],\"containKeywordsInputVisable\":false,\"excludeKeywordsInputVisable\":false,\"eliminateKeywordsInputVisable\":false,\"bgColor\":\"\",\"iconUrl\":\"\",\"contentShow\":3}]");
+        }
+        if(StringUtil.isEmpty(nurseCategoryConfigDO.getDefaultIcon())){ //默认分类图标被清除,匹配条件中的显示设置需要设置为仅显示文字
+            JSONArray jsonArray = JSON.parseArray(nurseCategoryConfigDO.getMatchCondition());
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                Object iconUrl = jsonObject.getByPath("$.iconUrl");
+                if(iconUrl == null || StrUtil.isEmpty(iconUrl.toString())){
+                    jsonObject.put("contentShow",3);
+                }
+            }
+            nurseCategoryConfigDO.setMatchCondition(jsonArray.toJSONString());
         }
         return super.edit(nurseCategoryConfigDO, id);
     }
@@ -94,7 +107,7 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
             throw new ServiceException("已存在同名分类[" + nurseCategoryConfigDO.getCategoryName() + "],请更换名称");
         }
         if (StrUtil.isEmpty(nurseCategoryConfigDO.getMatchCondition())) {
-            nurseCategoryConfigDO.setMatchCondition("[{\"containKeywords\":[],\"excludeKeywords\":[],\"eliminateKeywords\":[],\"containKeywordsInputVisable\":false,\"excludeKeywordsInputVisable\":false,\"eliminateKeywordsInputVisable\":false,\"bgColor\":\"\"}]");
+            nurseCategoryConfigDO.setMatchCondition("[{\"containKeywords\":[],\"excludeKeywords\":[],\"eliminateKeywords\":[],\"containKeywordsInputVisable\":false,\"excludeKeywordsInputVisable\":false,\"eliminateKeywordsInputVisable\":false,\"bgColor\":\"\",\"iconUrl\":\"\",\"contentShow\":3}]");
         }
         NursingMarkCategoryConfigDO add = super.add(nurseCategoryConfigDO);
         int lastId = this.daoSupport.getLastId(NursingMarkCategoryConfigDO.class.getAnnotation(Table.class).name());
@@ -334,7 +347,7 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
     public String getAllAdviceCategoryCaseWhenSql(String matchProp, ShopDO part, Boolean distinct) {
         List<NursingMarkCategoryConfigDO> nurseCategories = this.listAutoChildrenCategory(part.getShopId());
         if (!nurseCategories.isEmpty()) {
-            List<String> hisCode = part == null ? null : this.shopHelper.listPartsRefHisCode(part);
+            List<String> hisCode = this.shopHelper.listPartsRefHisCode(part);
             StringBuilder sbuilder = new StringBuilder();
             for (NursingMarkCategoryConfigDO settingDO : nurseCategories) {
                 sbuilder.append(getNurseCategoryCaseSQL(settingDO, matchProp, distinct ? null : hisCode));
@@ -560,6 +573,8 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
 
                     for (Object o : matchConditon) {
                         String bgColor = categoryConfigDO.getDefaultColor();
+                        String defaultIcon =ObjectUtil.defaultIfEmpty(categoryConfigDO.getDefaultIcon(),"");
+                        Integer defaultcontentShow = ObjectUtil.defaultIfNull(categoryConfigDO.getDefaultContentShow(),3);
                         replaceBuild.setLength(0);
 
 
@@ -605,6 +620,14 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
                         if (conditon.containsKey("bgColor") && StrUtil.isNotEmpty(conditon.getString("bgColor"))) {
                             bgColor = conditon.getString("bgColor");
                         }
+                        Object iconUrl = conditon.getByPath("$.iconUrl");
+                        if(iconUrl!=null){
+                            defaultIcon = iconUrl.toString();
+                        }
+                        Object contentShow = conditon.getByPath("$.contentShow");
+                        if(contentShow!=null){
+                            defaultcontentShow = (Integer) contentShow;
+                        }
 
                         if (sbuilder.length() > 10) {
                             sbuilder.delete(sbuilder.length() - 5, sbuilder.length());
@@ -619,7 +642,12 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
                                 sbuilder.append(")) then ").append(replaceBuild.length() == 0 ? filed : replaceBuild.toString()).append(" ");
                             } else if (filed.equalsIgnoreCase("category_name")) {
                                 sbuilder.append(")) then '").append(categoryConfigDO.getCategoryName()).append("'");
-                            } else {
+                            } else if(filed.equalsIgnoreCase("icon_url")){
+                                sbuilder.append(")) then '").append(defaultIcon).append("'");
+                            } else if(filed.equalsIgnoreCase("content_show")){
+                                sbuilder.append(")) then '").append(defaultcontentShow).append("'");
+                            } else if(filed.equalsIgnoreCase("bg_color"))
+                            {
                                 sbuilder.append(")) then '").append(bgColor).append("'");
                             }
 
@@ -633,7 +661,7 @@ public class NursingMarkCategoryConfigServiceImpl extends OpenPlateformCRUDServi
                     return sbuilder.toString();
                 }
             } catch (Exception e) {
-                e.printStackTrace();
+                log.error(e.getMessage());
                 return "";
             }
 

+ 20 - 0
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/config/CustomerConfig.java

@@ -0,0 +1,20 @@
+package com.wdklian.ncs.ms.system.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author wuyunfeng
+ * 2024/5/24 11:20
+ */
+@Component
+@ConfigurationProperties(prefix = "wdkl")
+@Data
+public class CustomerConfig {
+
+   private List<String> ignoreMedicalRole=new ArrayList<>();
+}

+ 2 - 2
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/controller/CustomerController.java

@@ -53,7 +53,7 @@ public class CustomerController {
     })
     public CommonResult<List<CustomerDO>> syncPatient(@RequestBody @NotNull(message = "患者数据不能为null") PatientDO patient) {
         List<CustomerDO> customer = customerService.syncPatient(patient);
-        if (customer != null&&customer.size()>0) {
+        if (customer != null&& !customer.isEmpty()) {
             this.deviceService.deviceRefreshMQ(customer, null);
         }
         return CommonResult.success(customer);
@@ -67,7 +67,7 @@ public class CustomerController {
     })
     public CommonResult<List<CustomerDO>> syncPatient(@NotEmpty(message = "患者主键不能为空") @PathVariable String key) {
         List<CustomerDO> customer = customerService.syncPatient(key);
-        if (customer != null&&customer.size()>0) {
+        if (customer != null&& !customer.isEmpty()) {
             this.deviceService.deviceRefreshMQ(customer, null);
         }
         return CommonResult.success(customer);

+ 3 - 1
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/ClerkServiceImpl.java

@@ -106,7 +106,7 @@ public class ClerkServiceImpl extends SystemCRUDManagerImpl<ClerkDO> implements
         }
         String mobile = employee.getMobile();
         if (StrUtil.isEmpty(mobile)) { //职员手机号是空,用其主键作为手机号字段
-            mobile = employee.getMobile();
+            mobile = employee.getKeyval();
         }
         //因为同一医生有可能在多个科室任职,而一个医生只有一个member。所以需要判断这个医生是否已经注册了memnber
         MemberDO member = this.memberService.getMemberByMobile(mobile);
@@ -145,6 +145,7 @@ public class ClerkServiceImpl extends SystemCRUDManagerImpl<ClerkDO> implements
             clerk.setMemberId(member.getMemberId());
             clerk.setFounder(0);
             clerk.setUserState(0);
+            clerk.setRoleName(role.getRoleName());
             clerk.setCreateTime(DateUtil.getDateline());
             clerk.setHisKeyval(employee.getKeyval().trim());
             clerk.setHisPartKeyval(employee.getPartKeyval().trim());
@@ -168,6 +169,7 @@ public class ClerkServiceImpl extends SystemCRUDManagerImpl<ClerkDO> implements
                 clerk.setHisKeyval(employee.getKeyval().trim());
                 clerk.setHisPartKeyval(employee.getPartKeyval().trim());
                 clerk.setSyncTime(DateUtil.getDateline());
+                clerk.setRoleName(role.getRoleName());
                 this.edit(clerk, clerk.getClerkId());
             }
         }

+ 1 - 1
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/CustomerMappingServiceImpl.java

@@ -48,7 +48,7 @@ public class CustomerMappingServiceImpl extends SystemCRUDManagerImpl<CustomerMa
         if (customerIds == null || customerIds.isEmpty()) {
             return new ArrayList<>();
         }
-        String sql = " select map.id mapping_id,map.customer_id,map.clerk_id,clerk.clerk_name,clerk.his_keyval clerk_his_keyval,role.role_name,member.face care_face,role.role_type from " +
+        String sql = " select map.id mapping_id,map.customer_id,map.clerk_id,clerk.clerk_name,clerk.his_keyval clerk_his_keyval,role.role_name,role.role_id,member.face care_face,role.role_type from " +
                 "ncs_customer_mapping map left join ncs_clerk clerk on map.clerk_id = clerk.clerk_id " +
                 "left join ncs_role role on clerk.role_id = role.role_id " +
                 "left join ncs_member member on clerk.member_id = member.member_id where map.clerk_id is not null and find_in_set(map.customer_id,?)";

+ 16 - 10
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/CustomerServiceImpl.java

@@ -24,11 +24,13 @@ import com.wdklian.ncs.ms.framework.util.BeanUtil;
 import com.wdklian.ncs.ms.framework.util.DateUtil;
 import com.wdklian.ncs.ms.framework.util.StringUtil;
 import com.wdklian.ncs.ms.system.common.StringHelper;
+import com.wdklian.ncs.ms.system.config.CustomerConfig;
 import com.wdklian.ncs.ms.system.service.iservice.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.ListUtils;
 import org.springframework.amqp.core.AmqpTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -94,7 +96,9 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
 
     @Resource
     private DoctorAdviceFeignClient doctorAdviceFeignClient;
-
+    //同步时忽略比对医护角色
+    @Resource
+    CustomerConfig customerConfig;
 
     @Override
     @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@@ -460,12 +464,13 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
                 List<ClerkDO> partClerks = this.clerkService.listDepartClerks(part.getShopId());
                 List<ClerkDO> clerkDOS = prepareCareCharge(patient, part, partClerks, roles);
                 //更新医护人员
-                Boolean changed = updateCustomerCareCharge(ObjectUtil.defaultIfNull(customerDO, customer), clerkDOS, customerCareMapping);
-                if (changed) {
-                    customerDO = ObjectUtil.defaultIfNull(customerDO, customer);
-                }
+                Boolean changed = updateCustomerCareCharge(ObjectUtil.defaultIfNull(customerDO, customer), clerkDOS, customerCareMapping,roles);
+//                if (changed) {
+//                    customerDO = ObjectUtil.defaultIfNull(customerDO, customer);
+//                }
                 this.deviceService.updateMemberId(customerDO.getFrameId(), new int[]{DeviceTypeEnum.DIGIT_BED_DEVICE.value(),DeviceTypeEnum.RS485_DOOR_DEVICE.value(),DeviceTypeEnum.SIMULATE_BED_DEVICE.value()}, customerDO.getMemberId());
-                return customerDO.equals(customer)?null:customerDO;
+               //患者基本信息变化或者医护人员变化,返回customer,否则返回null
+                return customerDO.equals(customer)&&!changed?null:customerDO;
             } else{
                 return null;
             }
@@ -486,10 +491,11 @@ public class CustomerServiceImpl extends SystemCRUDManagerImpl<CustomerDO> imple
      * @date 2023-11-23 10:27
      * @author wuyunfeng
      */
-    private Boolean updateCustomerCareCharge(CustomerDO customerDO, List<ClerkDO> clerks, List<CustomerCareMappingVO> oldMapping) {
-
-        List<Integer> oldClerkIds = oldMapping.stream().mapToInt(CustomerCareMappingVO::getClerkId).boxed().collect(Collectors.toList());
-        List<Integer> newClerkIds = clerks.stream().mapToInt(ClerkDO::getClerkId).boxed().collect(Collectors.toList());
+    private Boolean updateCustomerCareCharge(CustomerDO customerDO, List<ClerkDO> clerks, List<CustomerCareMappingVO> oldMapping,List<RoleDO> roles) {
+        //忽略比对的角色Id列表,有需要手动设置医护人员的场景,通过忽略角色比对防止手动设置的医护人员被清除
+        List<Integer> ignoreRoleIds = roles.stream().filter(p ->!customerConfig.getIgnoreMedicalRole().isEmpty() && customerConfig.getIgnoreMedicalRole().contains(p.getRoleType())).map(RoleDO::getRoleId).collect(Collectors.toList());
+        List<Integer> oldClerkIds = oldMapping.stream().filter(p->!ignoreRoleIds.contains(p.getRoleId())).mapToInt(CustomerCareMappingVO::getClerkId).boxed().collect(Collectors.toList());
+        List<Integer> newClerkIds = clerks.stream().filter(p->!ignoreRoleIds.contains(p.getRoleId())).mapToInt(ClerkDO::getClerkId).boxed().collect(Collectors.toList());
         //要添加的医护人员id
         List<Integer> adds = ListUtils.removeAll(newClerkIds, oldClerkIds);
         //要删除的医护人员id

+ 3 - 2
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/DeviceServiceImpl.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -44,7 +45,7 @@ public class DeviceServiceImpl extends SystemCRUDManagerImpl<DeviceDO> implement
         if(changeCustomers==null){
             changeCustomers=new ArrayList<>();
         }
-        List<Integer> customerPartIds = changeCustomers.stream().filter(p -> p != null).mapToInt(p -> p.getPartId()).distinct().boxed().collect(Collectors.toList());
+        List<Integer> customerPartIds = changeCustomers.stream().filter(Objects::nonNull).mapToInt(CustomerDO::getPartId).distinct().boxed().collect(Collectors.toList());
         if(boardChangePartIds==null){
             boardChangePartIds=new ArrayList<>();
         }
@@ -54,7 +55,7 @@ public class DeviceServiceImpl extends SystemCRUDManagerImpl<DeviceDO> implement
             this.amqpTemplate.convertAndSend("MS_INFOBOARD_REFRESH", "MS_INFOBOARD_REFRESH_ROUTING", JSONObject.toJSONString(noCustomerPartIds));
         }
 
-        if (changeCustomers.size() > 0) { //对有变化的患者设备发送刷新消息,由customer工程负责处理
+        if (!changeCustomers.isEmpty()) { //对有变化的患者设备发送刷新消息,由customer工程负责处理
             this.amqpTemplate.convertAndSend("MS_DEVICE_REFRESH", "MS_DEVICE_REFRESH_ROUTING", JSONObject.toJSONString(changeCustomers));
         }
     }

+ 14 - 1
ncs-system-service/src/main/java/com/wdklian/ncs/ms/system/service/impl/NurseConfigServiceImpl.java

@@ -118,13 +118,22 @@ public class NurseConfigServiceImpl extends SystemCRUDManagerImpl<NurseConfigDO>
                                 nurseConfigOptionDO.setOptionName(StrUtil.trim(optionName));
                                 nurseConfigOptionDO.setColorRgb(optionGroup.get(optionName).get(0).getBgColor().replace("#", ""));
                                 nurseConfigOptionDO.setPartId(nurseConfigDO.getPartId());
+                                nurseConfigOptionDO.setIconUrl(optionGroup.get(optionName).get(0).getIconUrl());
+                                nurseConfigOptionDO.setContentShow(optionGroup.get(optionName).get(0).getContentShow());
                                 this.nurseConfigOptionService.add(nurseConfigOptionDO);
                             } else {
                                 String color = optionGroup.get(optionName).get(0).getBgColor().replace("#", "");
-                                if(StrUtil.isNotEmpty(color)&&!color.equalsIgnoreCase(nurseConfigOptionDO.getColorRgb())) { //颜色改变,更新项目颜色,名称一定是一样的
+                                String iconUrl = optionGroup.get(optionName).get(0).getIconUrl();
+                                Integer contentShow = optionGroup.get(optionName).get(0).getContentShow();
+                                if(StrUtil.isNotEmpty(color)&&!color.equalsIgnoreCase(nurseConfigOptionDO.getColorRgb())||
+                                StrUtil.isNotEmpty(iconUrl)&&!iconUrl.equalsIgnoreCase(nurseConfigOptionDO.getIconUrl())||
+                                contentShow!=null&&!contentShow.equals(nurseConfigOptionDO.getContentShow())
+                                ) { //颜色、图标、显示方式改变,更新项目,名称一定是一样的
                                     nurseConfigOptionDO.setUpdateTime(DateUtil.getDateline());
                                     nurseConfigOptionDO.setColorRgb(color);
                                     nurseConfigOptionDO.setPartId(nurseConfigDO.getPartId());
+                                    nurseConfigOptionDO.setIconUrl(iconUrl);
+                                    nurseConfigOptionDO.setContentShow(contentShow);
                                     this.nurseConfigOptionService.edit(nurseConfigOptionDO, nurseConfigOptionDO.getId());
                                 }
                             }
@@ -346,6 +355,8 @@ public class NurseConfigServiceImpl extends SystemCRUDManagerImpl<NurseConfigDO>
             nurseConfigDO.setIndexNo(screenAdviceCategoryVO.getIndexNo());
             nurseConfigDO.setDefaultColor(screenAdviceCategoryVO.getDefaultColor().replace("#", ""));
             nurseConfigDO.setBoolManual(screenAdviceCategoryVO.getBoolManual());
+            nurseConfigDO.setDefaultIcon(screenAdviceCategoryVO.getDefaultIcon());
+            nurseConfigDO.setDefaultContentShow(screenAdviceCategoryVO.getDefaultContentShow());
             nurseConfigDO= this.add(nurseConfigDO);
         return nurseConfigDO;
     }
@@ -364,6 +375,8 @@ public class NurseConfigServiceImpl extends SystemCRUDManagerImpl<NurseConfigDO>
             nurseConfigOptionDO.setOptionName(settingDO.getItemName());
             nurseConfigOptionDO.setColorRgb(settingDO.getColor().replace("#", ""));
             nurseConfigOptionDO.setPartId(nurseConfigDO.getPartId());
+            nurseConfigOptionDO.setIconUrl(settingDO.getIconUrl());
+            nurseConfigOptionDO.setContentShow(settingDO.getContentShow());
             this.nurseConfigOptionService.add(nurseConfigOptionDO);
 //        } else {
 //            nurseConfigOptionDO.setUpdateTime(DateUtil.getDateline());

+ 1 - 1
synchrony-scheduled-task/src/main/java/com/wdklian/ncs/ms/scheduled/config/DataSourceConfig.java

@@ -1,4 +1,4 @@
-package com.wdklian.ncs.ms.open.config;
+package com.wdklian.ncs.ms.scheduled.config;
 
 import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
 import com.wdklian.ncs.ms.framework.database.DaoSupport;

+ 2 - 2
third-part-wn-hl7/src/main/java/com/wdklian/ncs/ms/wn/hl7/service/EmployeeService.java

@@ -93,9 +93,9 @@ public class EmployeeService {
         if(StrUtil.isEmpty(genderNanme)){
             return "2";
         }else  if(genderNanme.equalsIgnoreCase("男")){
-            return "0";
-        }else if(genderNanme.equalsIgnoreCase("女")){
             return "1";
+        }else if(genderNanme.equalsIgnoreCase("女")){
+            return "0";
         }else{
             return "2";
         }

+ 3 - 0
third-part-wn-hl7/src/main/java/com/wdklian/ncs/ms/wn/hl7/stream/DoctorAdviceSender.java

@@ -7,6 +7,9 @@ import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.messaging.support.MessageBuilder;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+import java.util.Collections;
+
 
 @Component
 @Slf4j

+ 12 - 2
third-part-wn-hl7/src/main/resources/bootstrap.yml

@@ -36,6 +36,7 @@ spring:
                 username: guest
                 password: guest
                 virtual-host: /
+
       bindings:
         adviceHandle-in-0:
           binder: rabbit
@@ -45,19 +46,28 @@ spring:
           consumer:
             batch-mode: true
             concurrency: 1
-            max-attempts: 1
+            max-attempts: 5
         adviceOut:
           binder: rabbit
           destination: doctor_advice
           group: system-service
           content-type: application/json
+
       rabbit:
         bindings:
           adviceHandle-in-0:
             consumer:
               enable-batching: true
               batch-size: 10
-              receive-timeout: 10000
+              prefetch: 10
+              max-concurrency: 1
+              receive-timeout: 40000
+#          adviceOut:
+#            producer:
+#              batching-enabled: true
+#              batch-size: 10
+#              batch-timeout: 10000
+
 
   config:
     import: nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}?refresh=true

+ 14 - 0
third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/dos/NursingMarkCategoryConfigDO.java

@@ -90,5 +90,19 @@ public class NursingMarkCategoryConfigDO implements Serializable {
     @ApiModelProperty(value = "匹配规则JSON数组", required = false)
     private String matchCondition;
 
+    /**
+     * 默认图标
+     */
+    @Column(name = "default_icon")
+    @ApiModelProperty(value = "默认图标", required = false)
+    private String defaultIcon;
+
+    /**
+     * 默认内容显示 1-图标+文字 2-仅图标 3-仅文字
+     */
+    @Column(name = "default_content_show")
+    @ApiModelProperty(value = "默认内容显示", required = false)
+    private Integer defaultContentShow;
+
 
 }

+ 12 - 0
third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/dos/NursingMarkOptionConfigDO.java

@@ -83,6 +83,18 @@ public class NursingMarkOptionConfigDO implements Serializable {
     @Column(name = "copy_from")
     @ApiModelProperty(value = "拷贝源Id", required = false)
     private Integer copyFrom;
+    /**
+     * 图标地址
+     */
+    @Column(name = "icon_url")
+    @ApiModelProperty(value = "图标地址", required = false)
+    private String iconUrl;
+    /**
+     * 默认内容显示 1-图标+文字 2-仅图标 3-仅文字
+     */
+    @Column(name = "content_show")
+    @ApiModelProperty(value = "内容展示方式", required = false)
+    private Integer contentShow;
 
 
 }

+ 8 - 1
third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/open/vos/DoctorAdviceMatchNursingMarkCategoryVO.java

@@ -28,7 +28,14 @@ public class DoctorAdviceMatchNursingMarkCategoryVO extends DoctorAdviceDO {
     @Column(name = "category_name")
     private String categoryName;
 
-    /** 护理标识类目名称 */
+    /** 护理标识项目背景色 */
     @Column(name = "bg_color")
     private String bgColor;
+    /** 护理标识项目图标 */
+    @Column(name = "icon_url")
+    private String iconUrl;
+
+    /** 护理标识项目内容显示方式 1-图标+文字 2-仅图标 3-仅文字 */
+    @Column(name = "content_show")
+    private Integer contentShow;
 }

+ 13 - 0
third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/system/dos/NurseConfigDO.java

@@ -102,5 +102,18 @@ public class NurseConfigDO implements Serializable {
     @ApiModelProperty(value = "分类是否为手动选择项目,如果是手动选择项目,不需要配置医嘱匹配", required = false)
     private Boolean boolManual;
 
+    /**
+     * 默认图标
+     */
+    @Column(name = "default_icon")
+    @ApiModelProperty(value = "默认图标", required = false)
+    private String defaultIcon;
+    /**
+     * 默认内容显示 1-图标+文字 2-仅图标 3-仅文字
+     */
+    @Column(name = "default_content_show")
+    @ApiModelProperty(value = "默认内容显示 1-图标+文字 2-仅图标 3-仅文字", required = false)
+    private Integer defaultContentShow;
+
 
 }

+ 12 - 0
third-party-common/src/main/java/com/wdklian/ncs/ms/common/entity/system/dos/NurseConfigOptionDO.java

@@ -106,5 +106,17 @@ public class NurseConfigOptionDO implements Serializable {
     @Column(name = "type")
     @ApiModelProperty(value = "null", required = false)
     private String type;
+    /**
+     * 图标地址
+     */
+    @Column(name = "icon_url")
+    @ApiModelProperty(value = "图标地址", required = false)
+    private String iconUrl;
+    /**
+     * 默认内容显示 1-图标+文字 2-仅图标 3-仅文字
+     */
+    @Column(name = "content_show")
+    @ApiModelProperty(value = "默认内容显示 1-图标+文字 2-仅图标 3-仅文字", required = false)
+    private Integer contentShow;
 
 }