فهرست منبع

Merge remote-tracking branch 'origin/cnbg-master' into cnbg-master

qutong 11 ماه پیش
والد
کامیت
ac182de1c7
19فایلهای تغییر یافته به همراه1113 افزوده شده و 587 حذف شده
  1. 1 0
      doc/db/28sys_user_cert.sql
  2. 40 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysStatisticDto.java
  3. 61 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysUserDTO.java
  4. 3 0
      hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysUserCertificate.java
  5. 33 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysStatisticController.java
  6. 131 97
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java
  7. 281 290
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaDrugEntDrugtableController.java
  8. 7 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java
  9. 273 29
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java
  10. 92 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysUserManager.java
  11. 0 3
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysDeptMapper.java
  12. 1 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysUserService.java
  13. 0 2
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaAgentService.java
  14. 38 36
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaDrugEntDrugtableService.java
  15. 3 0
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java
  16. 9 5
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java
  17. 4 5
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaAgentServiceImpl.java
  18. 3 3
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDrugEntDrugtableServiceImpl.java
  19. 133 115
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

+ 1 - 0
doc/db/28sys_user_cert.sql

@@ -13,6 +13,7 @@ CREATE TABLE `sys_user_cert`
     `user_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '用户ID',
     `cert_type`   VARCHAR(8)                         NOT NULL COMMENT '证书类型',
     `file_id`     BIGINT UNSIGNED                    NOT NULL COMMENT '证书上传ID',
+    `prods`       VARCHAR(2048)                      NULL COMMENT '绑定的产品',
     `create_by`   VARCHAR(32)                        NOT NULL COMMENT '创建人',
     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
     PRIMARY KEY `pk_id` (`cert_id`)

+ 40 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysStatisticDto.java

@@ -0,0 +1,40 @@
+package com.qunzhixinxi.hnqz.admin.api.dto;
+
+import lombok.AccessLevel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 统计dto
+ *
+ * @author jimmy
+ * @date 17/07/2024 22:28
+ */
+@NoArgsConstructor(access = AccessLevel.NONE)
+public final class SysStatisticDto {
+
+    @Data
+    public static class OnPlanTree {
+
+    }
+
+    @Data
+    public static class OnPkgTree {
+
+    }
+
+    @Data
+    public static class OnProviderQccData {
+
+    }
+
+    @Data
+    public static class OnProviderTree {
+
+    }
+
+    @Data
+    public static class OnSupData {
+
+    }
+}

+ 61 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/SysUserDTO.java

@@ -1,9 +1,12 @@
 package com.qunzhixinxi.hnqz.admin.api.dto;
 
+import com.fasterxml.jackson.annotation.JsonAlias;
 import lombok.AccessLevel;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
@@ -12,6 +15,37 @@ import java.util.List;
 @NoArgsConstructor(access = AccessLevel.NONE)
 public final class SysUserDTO {
 
+    @Data
+    public static class OnSalesmanCreate {
+
+        @NotBlank(message = "用户名必填")
+        private String username;
+
+        @NotBlank(message = "联系方式必填")
+        private String phone;
+
+
+        @NotBlank(message = "真实名称必填")
+        @JsonAlias("realname")
+        private String realName;
+
+        @NotEmpty(message = "角色ID必填")
+        private List<Integer> role;
+
+        @NotBlank(message = "锁定标记必填")
+        private String lockFlag;
+
+        private String idCardNumber;
+
+        @NotNull(message = "所属企业必填")
+        private Integer deptId;
+
+        private List<Long> areaCodes;
+
+        @NotEmpty(message = "认证文件必填")
+        private List<Long> certFileIds;
+    }
+
     @Data
     public static class OnPltUserAgreementSign {
 
@@ -35,4 +69,31 @@ public final class SysUserDTO {
         @NotEmpty(message = "文件ID必填")
         private List<Long> fileIds;
     }
+
+    @Data
+    public static class OnCertInfoPage {
+
+        @NotNull(message = "页码必填")
+        @Min(value = 1, message = "页码最小为{value}")
+        private Integer current;
+
+        @NotNull(message = "分页数量必填")
+        @Min(value = 10, message = "分页数量最小为{value}")
+        @Max(value = 100, message = "分页数量最大为{value}")
+        private Integer size;
+    }
+
+    @Data
+    public static class OnProdBind {
+
+        @NotNull(message = "业务员备案ID必填")
+        private Integer certId;
+
+        @NotEmpty(message = "商品ID必填")
+        private List<Integer> productIds;
+
+        @NotNull(message = "业务员ID必填")
+        private Integer userId;
+
+    }
 }

+ 3 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysUserCertificate.java

@@ -28,6 +28,9 @@ public final class SysUserCertificate implements Serializable {
 
     private Long fileId;
 
+    @TableField(value = "prods")
+    private String products;
+
     private String createBy;
 
     private LocalDateTime createTime;

+ 33 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysStatisticController.java

@@ -1,5 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.dto.SysStatisticDto;
 import com.qunzhixinxi.hnqz.admin.manager.SysStatisticManager;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
@@ -9,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -42,5 +45,35 @@ public class SysStatisticController {
         return R.ok(res);
     }
 
+    // todo
+    @GetMapping(value = "/stat/plan/tree")
+    public R<Page<Map<String, Object>>> statPlanTree(SysStatisticDto.OnPlanTree query) {
+        return R.ok(statisticManager.statPlanTree(query, SecurityUtils.getUser()));
+    }
+
+    // todo
+    @GetMapping(value = "/stat/pkg/tree")
+    public R<Page<Map<String, Object>>> statPkgTree(SysStatisticDto.OnPkgTree query) {
+        return R.ok(statisticManager.statPkgTree(query, SecurityUtils.getUser()));
+    }
+
+    // todo
+    @GetMapping(value = "/stat/provider/data")
+    public R<Page<Map<String, Object>>> statProviderData(SysStatisticDto.OnProviderQccData query) {
+        return R.ok(statisticManager.statProviderData(query, SecurityUtils.getUser()));
+    }
+
+    // todo
+    @GetMapping(value = "/stat/provider/data/tree")
+    public R<Page<Map<String, Object>>> statProviderDataTree(SysStatisticDto.OnProviderTree query) {
+        return R.ok(statisticManager.statProviderDataTree(query, SecurityUtils.getUser()));
+    }
+
+    // todo
+    @GetMapping(value = "/stat/supervision/data")
+    public R<Page<Map<String, Object>>> statSupData(SysStatisticDto.OnSupData query) {
+        return R.ok(statisticManager.statSupData(query, SecurityUtils.getUser()));
+    }
+
 
 }

+ 131 - 97
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -1,7 +1,10 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.bean.BeanUtil;
@@ -97,34 +100,32 @@ public class SysUserController {
     private final SysAreaEntityService areaEntityService;
     private final SysUserManager userManager;
 
+    private static final List<Integer> SALESMAN_ROLE_ID = ListUtil.of(5, 6);
+
+    /**
+     * 判断可以登陆的角色
+     * 只有单纯是5 和 6的角色才不能登陆
+     *
+     * @param roles 角色合集
+     * @return 判断结果
+     */
     private boolean isZbOrDbUsers(Integer[] roles) {
 
-        if (null == roles) {
+        if (ArrayUtil.isEmpty(roles)) {
             return false;
         }
 
-        // 1-管理员,2-平台管理员,3-药企管理员/事业部,4-CSO管理员/区域管理员,7-财务管理员,9-CRO管理员,11-患教管理员,19-CMS,27-平台财务管理员,33-行政人员,
-        // 34-财务复核, 35-BC总负责人, 37-服务商管理员/二级cso管理员
-        return Arrays.asList(roles).contains(1)
-                || Arrays.asList(roles).contains(2)
-                || Arrays.asList(roles).contains(3)
-                || Arrays.asList(roles).contains(4)
-                || Arrays.asList(roles).contains(7)
-                || Arrays.asList(roles).contains(9)
-                || Arrays.asList(roles).contains(11)
-                || Arrays.asList(roles).contains(19)
-                || Arrays.asList(roles).contains(27)
-                || Arrays.asList(roles).contains(33)
-                || Arrays.asList(roles).contains(34)
-                || Arrays.asList(roles).contains(35)
-                || Arrays.asList(roles).contains(37)
-                || Arrays.asList(roles).contains(38)
-                || Arrays.asList(roles).contains(39)
-                || Arrays.asList(roles).contains(40)
-                || Arrays.asList(roles).contains(41)
-                || Arrays.asList(roles).contains(42)
-                || Arrays.asList(roles).contains(43)
-                ;
+        Set<Integer> roleIds = Arrays.stream(roles).collect(Collectors.toSet());
+
+        if (roleIds.size() == 1) {
+            return !CollUtil.containsAny(roleIds, SALESMAN_ROLE_ID);
+        }
+
+        if (roleIds.size() == 2) {
+            return !CollUtil.containsAll(roleIds, SALESMAN_ROLE_ID);
+        }
+
+        return true;
     }
 
     /**
@@ -371,15 +372,19 @@ public class SysUserController {
 
 
     /**
-     * 添加用户
+     * 添加管理员
      *
-     * @param userDto 用户信息
+     * @param userDto 管理员信息
      * @return success/false
      */
-    @SysLog("添加用户")
+    @SysLog("添加管理员信息")
     @PostMapping
     @PreAuthorize("@pms.hasPermission('sys_user_add')")
-    public R<Boolean> user(@Validated(value = BaseEntity.Create.class) @RequestBody UserDTO userDto) {
+    public R<Boolean> createAdministrator(@Validated(value = BaseEntity.Create.class) @RequestBody UserDTO userDto) {
+
+        if (CollUtil.containsAny(userDto.getRole(), SALESMAN_ROLE_ID)) {
+            return R.failed("当前功能仅支持添加非业务员角色");
+        }
 
         // 姓名去除空格(包括字符之间的所有空格都会去除)
         userDto.setRealname(StrUtil.cleanBlank(userDto.getRealname()));
@@ -530,63 +535,6 @@ public class SysUserController {
                 }
             }
 
-        } else if (userDto.getRole().contains(5)) {
-            UserDTO userDTO = new UserDTO();
-            userDTO.setUsername(userDto.getUsername());
-            userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
-            List<UserVO> userDTOList = sysUserMapper.selectByPhone(userDTO);
-            if (CollUtil.isNotEmpty(userDTOList)) {
-                for (UserVO userVO : userDTOList) {
-                    if (null != userVO.getRoleList()) {
-                        for (SysRole sysRole : userVO.getRoleList()) {
-                            if (sysRole.getRoleId() == 2) {
-                                return R.failed("用户已存在平台管理员,不能同时为全职学术推广员");
-                            }
-                            if (sysRole.getRoleId() == 3) {
-                                if (sysDept.getLevel() == 3 || sysDept.getLevel() == 4) {
-                                    return R.failed("用户已存在药企管理员,不能为CSO的全职学术推广员");
-                                }
-                            }
-                            if (sysRole.getRoleId() == 4) {
-                                if (sysDept.getLevel() == 3 || sysDept.getLevel() == 4) {
-                                    return R.failed("用户已存在CSO管理员,不能为其他CSO的全职学术推广员");
-                                }
-                            }
-
-                        }
-                    }
-                }
-            }
-
-        } else if (userDto.getRole().contains(6)) {
-
-            UserDTO userDTO = new UserDTO();
-            userDTO.setUsername(userDto.getUsername());
-            userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
-            List<UserVO> userDTOList = sysUserMapper.selectByPhone(userDTO);
-            if (CollUtil.isNotEmpty(userDTOList)) {
-                for (UserVO userVO : userDTOList) {
-                    if (null != userVO.getRoleList()) {
-                        for (SysRole sysRole : userVO.getRoleList()) {
-                            if (sysRole.getRoleId() == 2) {
-                                return R.failed("用户已存在平台管理员,不能同时为兼职学术推广员");
-                            }
-                            SysUserRole sysUserRole = new SysUserRole();
-                            sysUserRole.setUserId(userVO.getUserId());
-                            List<SysUserRole> sysUserRoleList = sysUserRoleMapper.selectById(sysUserRole);
-                            for (SysUserRole userRole : sysUserRoleList) {
-                                if (userRole.getRoleId().equals(7)) {
-                                    SysUser sysUser = userService.getById(userRole.getUserId());
-                                    if (sysUser.getDeptId().equals(userDto.getDeptId())) {
-                                        return R.failed("用户已存在财务管理员角色,不能同时为兼职学术推广员");
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
         } else if (userDto.getRole().contains(9)) {
             UserDTO userDTO = new UserDTO();
             userDTO.setUsername(userDto.getUsername());
@@ -658,28 +606,97 @@ public class SysUserController {
         query.setUsername(userDto.getUsername());
         query.setDeptId(userDto.getDeptId());
         Integer count = sysUserMapper.selectCount(Wrappers.query(query));
-        // TODO  用户是否存在
+
         if (count != 0) {
             return R.failed("当前机构已存在该账号");
         }
 
 
+        // // 校验身份证上的年龄
+        // if (StringUtils.isNotEmpty(userDto.getIdCardNumber())) {
+        //     // 获取更新操作的用户角色
+        //     List<Integer> roles = userDto.getRole();
+        //     // 如果角色中包含全职和兼职就需要校验身份证年龄
+        //     if (roles.contains(5) || roles.contains(6)) {
+        //         int ageByIdCard = IdcardUtil.getAgeByIdCard(userDto.getIdCardNumber());
+        //         if (ageByIdCard < 18) {
+        //             return R.failed("年龄未满十八");
+        //         } else if (ageByIdCard > 65) {
+        //             return R.failed("年龄已超过六十五");
+        //         }
+        //     }
+        // }
+
+        userService.saveUser(userDto);
+        return R.ok(Boolean.TRUE);
+    }
+
+
+    /**
+     * 添加业务员
+     *
+     * @param resource 业务员信息
+     * @return success/false
+     */
+    @SysLog("添加业务员")
+    @PostMapping(value = "/salesman/create")
+    @PreAuthorize("@pms.hasPermission('sys_user_add')")
+    public R<Boolean> createSalesman(@Validated @RequestBody SysUserDTO.OnSalesmanCreate resource) {
+
+        List<Integer> role = resource.getRole();
+
+        if (role.size() != 1 || !CollUtil.containsAny(role, SALESMAN_ROLE_ID)) {
+            return R.failed("当前功能仅支持添加单一(全职/兼职)业务员角色");
+        }
+
+        // 校验服务商
+        HnqzUser operator = SecurityUtils.getUser();
+        Integer deptId = resource.getDeptId();
+        if (!deptId.equals(operator.getDeptId())) {
+
+            return R.failed("不能跨机构维护学术推广员");
+        }
+
+
+        // 校验用户名
+        String username = resource.getUsername().trim();
+        boolean availUsername = userService.count(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username)) == 0;
+        if (!availUsername) {
+            return R.failed("用户名已存在");
+        }
+
+
         // 校验身份证上的年龄
-        if (StringUtils.isNotEmpty(userDto.getIdCardNumber())) {
-            // 获取更新操作的用户角色
-            List<Integer> roles = userDto.getRole();
-            // 如果角色中包含全职和兼职就需要校验身份证年龄
-            if (roles.contains(5) || roles.contains(6)) {
-                int ageByIdCard = IdcardUtil.getAgeByIdCard(userDto.getIdCardNumber());
-                if (ageByIdCard < 18) {
-                    return R.failed("年龄未满十八");
-                } else if (ageByIdCard > 65) {
-                    return R.failed("年龄已超过六十五");
-                }
+        String idCardNumber = resource.getIdCardNumber().trim();
+        if (CharSequenceUtil.isNotEmpty(idCardNumber)) {
+            int ageByIdCard = IdcardUtil.getAgeByIdCard(idCardNumber);
+            if (ageByIdCard < 18 || ageByIdCard > 65) {
+                return R.failed("业务员年龄应在18~65周岁之间");
             }
+
         }
 
-        return R.ok(userService.saveUser(userDto));
+        UserDTO userDto = new UserDTO();
+        userDto.setRole(role);
+        userDto.setDeptId(deptId);
+        userDto.setAreaCodes(resource.getAreaCodes());
+        userDto.setUsername(username);
+        userDto.setIdCardNumber(idCardNumber);
+        userDto.setLockFlag(resource.getLockFlag());
+        userDto.setPhone(resource.getPhone().trim());
+        userDto.setRealname(resource.getRealName());
+
+        Integer userId = userService.saveUser(userDto);
+
+        // 创建备案记录
+        SysUserDTO.OnCertificateCreate certResource = new SysUserDTO.OnCertificateCreate();
+        certResource.setUserId(userId);
+        certResource.setType("REG");
+        certResource.setFileIds(resource.getCertFileIds());
+
+        userManager.createUserCertificate(certResource, operator);
+
+        return R.ok(Boolean.TRUE);
     }
 
 
@@ -736,6 +753,11 @@ public class SysUserController {
     @PreAuthorize("@pms.hasPermission('sys_user_edit')")
     public R<?> updateUser(@Valid @RequestBody UserDTO userDto) {
 
+
+        if (CollUtil.containsAny(userDto.getRole(), SALESMAN_ROLE_ID)){
+           return R.failed("当前业务规定不支持修改(全职/兼职)业务员信息");
+        }
+
         SysDept sysDept = sysDeptService.getById(userDto.getDeptId());
 
         if (null != userDto.getUserId()) {
@@ -1253,4 +1275,16 @@ public class SysUserController {
 
     }
 
+    @SysLog("备案管理员绑定备案产品")
+    @PostMapping(value = "/cert/prod/bind")
+    public R<Boolean> bindProdToUserCert(@Validated @RequestBody SysUserDTO.OnProdBind resource) {
+
+        return R.ok(userManager.bindProdToUserCert(resource, SecurityUtils.getUser()));
+    }
+
+    @GetMapping(value = "/cert/list")
+    public R<List<Map<String, Object>>> listUserCerts(@RequestParam(value = "userId") Integer userId) {
+        return R.ok(userManager.listUserCerts(userId));
+    }
+
 }

+ 281 - 290
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmDaDrugEntDrugtableController.java

@@ -1,9 +1,8 @@
-
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
@@ -17,6 +16,7 @@ import com.qunzhixinxi.hnqz.admin.service.SysCsmUserRelationService;
 import com.qunzhixinxi.hnqz.admin.service.SysDictItemService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
@@ -50,293 +50,284 @@ import java.util.stream.Stream;
 @RequestMapping("/wmdadrugentdrugtable")
 public class WmDaDrugEntDrugtableController {
 
-	private final WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
-	private final WmDaDrugEntService wmDaDrugEntService;
-	private final WmScorePackageService wmScorePackageService;
-	private final SysDictItemService sysDictItemService;
-	private final SysCsmUserRelationService sysCsmUserRelationService;
-
-	/**
-	 * 分页查询
-	 *
-	 * @param page                 分页对象
-	 * @param wmDaDrugEntDrugtable 档案-药企药品
-	 * @return
-	 */
-	@GetMapping("/page")
-	@PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_view')")
-	public R<IPage<WmDaDrugEntDrugtable>> getWmDaDrugEntDrugtablePage(Page<WmDaDrugEntDrugtable> page, WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
-		OrderItem orderItem = new OrderItem();
-		orderItem.setColumn("create_time");
-		orderItem.setAsc(false);
-		page.addOrder(orderItem);
-		QueryWrapper<WmDaDrugEntDrugtable> queryWrapper = Wrappers.query(wmDaDrugEntDrugtable);
-		String drugname = wmDaDrugEntDrugtable.getDrugname();
-		if (StringUtils.isNotEmpty(wmDaDrugEntDrugtable.getDrugname())) {
-			wmDaDrugEntDrugtable.setDrugname(null);
-			queryWrapper.like("drugname", drugname);
-		} else {
-			wmDaDrugEntDrugtable.setDrugname(null);
-		}
-
-		String drugnameTy = wmDaDrugEntDrugtable.getDrugnameTy();
-		if (StringUtils.isNotEmpty(wmDaDrugEntDrugtable.getDrugnameTy())) {
-			wmDaDrugEntDrugtable.setDrugnameTy(null);
-			queryWrapper.like("drugname_ty", drugnameTy);
-		} else {
-			wmDaDrugEntDrugtable.setDrugnameTy(null);
-		}
-		if (StringUtils.isEmpty(wmDaDrugEntDrugtable.getDrugEntName())) {
-			wmDaDrugEntDrugtable.setDrugEntName(null);
-		}
-
-		if (SecurityUtils.getRoles().contains(19)) {
-			// CSM只能查看自己维护的企业下的数据, 以及下属维护的企业下的数据
-			Integer userId = SecurityUtils.getUser().getId();
-			// 递归查询下属关联的userId
-			Set<Integer> allUserIds = sysCsmUserRelationService.recurseCsmLowerUserId(Collections.singleton(userId), new AtomicInteger(10));
-			queryWrapper.and(wrapper -> {
-				wrapper.in("create_user", allUserIds)
-						.or(wrapper2 -> wrapper2.isNull("create_user"));
-			});
-		}
-
-		queryWrapper.eq("del_flag", DelEnum.NOT_DEL.getVal());
-		wmDaDrugEntDrugtableService.page(page, queryWrapper);
-
-		if (CollUtil.isNotEmpty(page.getRecords())) {
-			// 剂型字典
-			List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "dose")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-			// 剂型字典
-			List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "guige")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-
-			page.getRecords().forEach(record -> {
-				if (StrUtil.isNotBlank(record.getDoseId()) && StrUtil.isBlank(record.getDoseName())) {
-					record.setDoseName(doseMap.getOrDefault(record.getDoseId(), record.getDoseId()));
-				}
-				if (StrUtil.isNotBlank(record.getGuigeId()) && StrUtil.isBlank(record.getGuigeName())) {
-					record.setGuigeName(guigeMap.getOrDefault(record.getGuigeId(), record.getGuigeId()));
-				}
-			});
-		}
-
-		return R.ok(page);
-	}
-
-
-	/**
-	 * 通过id查询档案-药企药品
-	 *
-	 * @param id id
-	 * @return R
-	 */
-	@GetMapping("/{id}")
-	@PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_view')")
-	public R getById(@PathVariable("id") Integer id) {
-		WmDaDrugEntDrugtable drugEntDrugtable = wmDaDrugEntDrugtableService.getById(id);
-
-		if (drugEntDrugtable != null) {
-			// 剂型字典
-			List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "dose")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-			// 剂型字典
-			List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "guige")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-
-			if (StrUtil.isNotBlank(drugEntDrugtable.getDoseId()) && StrUtil.isBlank(drugEntDrugtable.getDoseName())) {
-				drugEntDrugtable.setDoseName(doseMap.getOrDefault(drugEntDrugtable.getDoseId(), drugEntDrugtable.getDoseId()));
-			}
-			if (StrUtil.isNotBlank(drugEntDrugtable.getGuigeId()) && StrUtil.isBlank(drugEntDrugtable.getGuigeName())) {
-				drugEntDrugtable.setGuigeName(guigeMap.getOrDefault(drugEntDrugtable.getGuigeId(), drugEntDrugtable.getGuigeId()));
-			}
-		}
-
-		return R.ok(drugEntDrugtable);
-	}
-
-	/**
-	 * 新增档案-药企药品
-	 *
-	 * @param wmDaDrugEntDrugtable 档案-药企药品
-	 * @return R
-	 */
-	@SysLog("新增档案-药企药品")
-	@PostMapping
-	@PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_add')")
-	public R save(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
-
-		WmDaDrugEntDrugtable query = new WmDaDrugEntDrugtable();
-		query.setDrugname(wmDaDrugEntDrugtable.getDrugname());
-		List<WmDaDrugEntDrugtable> list = wmDaDrugEntDrugtableService.list(Wrappers.query(query));
-		if (list.size() > 0) {
-			return R.failed("药品名称已存在");
-		}
-		WmDaDrugEnt drugEnt = new WmDaDrugEnt();
-		List<WmDaDrugEnt> daDrugEnts = wmDaDrugEntService.list(Wrappers.query(drugEnt));
-		if (CollectionUtils.isNotEmpty(daDrugEnts)) {
-			wmDaDrugEntDrugtable.setDrugEntId(daDrugEnts.get(0).getId().toString());
-		}
-
-
-		wmDaDrugEntDrugtable.setCreateTime(LocalDateTime.now());
-		wmDaDrugEntDrugtable.setCreateUser(SecurityUtils.getUser().getId());
-		return R.ok(wmDaDrugEntDrugtableService.save(wmDaDrugEntDrugtable));
-	}
-
-	/**
-	 * 修改档案-药企药品
-	 *
-	 * @param wmDaDrugEntDrugtable 档案-药企药品
-	 * @return R
-	 */
-	@SysLog("修改档案-药企药品")
-	@PutMapping
-	@PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_edit')")
-	public R updateById(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
-
-		WmDaDrugEntDrugtable oldData = wmDaDrugEntDrugtableService.getById(wmDaDrugEntDrugtable.getId());
-		if (!oldData.getDrugEntName().equals(wmDaDrugEntDrugtable.getDrugEntName())) {
-			WmDaDrugEnt drugEnt = new WmDaDrugEnt();
-			List<WmDaDrugEnt> daDrugEnts = wmDaDrugEntService.list(Wrappers.query(drugEnt));
-			if (CollectionUtils.isNotEmpty(daDrugEnts)) {
-				wmDaDrugEntDrugtable.setDrugEntId(daDrugEnts.get(0).getId().toString());
-			}
-		}
-
-//		if(!oldData.getDrugname().equals(wmDaDrugEntDrugtable.getDrugname())){
-//			WmDaDrugEntDrugtable query = new WmDaDrugEntDrugtable();
-//			query.setDrugname(wmDaDrugEntDrugtable.getDrugname());
-//			List<WmDaDrugEntDrugtable> list = wmDaDrugEntDrugtableService.list(Wrappers.query(query));
-//			if (list.size() > 0) {
-//				return R.failed("药品名称已存在");
-//			}
-//		}
-
-		wmDaDrugEntDrugtable.setUpdateTime(LocalDateTime.now());
-		wmDaDrugEntDrugtable.setUpdateUser(SecurityUtils.getUser().getId());
-
-		return R.ok(wmDaDrugEntDrugtableService.updateById(wmDaDrugEntDrugtable));
-	}
-
-	/**
-	 * 通过id删除档案-药企药品
-	 *
-	 * @param id id
-	 * @return R
-	 */
-	@SysLog("通过id删除档案-药企药品")
-	@DeleteMapping("/{id}")
-	@PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_del')")
-	public R removeById(@PathVariable Integer id) {
-		return R.ok(wmDaDrugEntDrugtableService.removeById(id));
-	}
-
-
-	@GetMapping("/list")
-	public R listWmDaDrugEntDrugtable() {
-		WmDaDrugEntDrugtable wmDaDrugEnt = new WmDaDrugEntDrugtable();
-		wmDaDrugEnt.setDelFlag("0");
-		wmDaDrugEnt.setEnableFlag("0");
-
-		List<WmDaDrugEntDrugtable> list = wmDaDrugEntDrugtableService.list(Wrappers.query(wmDaDrugEnt));
-
-		if (CollUtil.isNotEmpty(list)) {
-			// 剂型字典
-			List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "dose")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-			// 剂型字典
-			List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
-					.eq(SysDictItem::getType, "guige")
-					.eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
-			Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
-
-			list.forEach(drugEntDrugtable -> {
-				if (StrUtil.isNotBlank(drugEntDrugtable.getDoseId()) && StrUtil.isBlank(drugEntDrugtable.getDoseName())) {
-					drugEntDrugtable.setDoseName(doseMap.getOrDefault(drugEntDrugtable.getDoseId(), drugEntDrugtable.getDoseId()));
-				}
-				if (StrUtil.isNotBlank(drugEntDrugtable.getGuigeId()) && StrUtil.isBlank(drugEntDrugtable.getGuigeName())) {
-					drugEntDrugtable.setGuigeName(guigeMap.getOrDefault(drugEntDrugtable.getGuigeId(), drugEntDrugtable.getGuigeId()));
-				}
-			});
-		}
-
-		return R.ok(list);
-	}
-
-
-	@SysLog("药企药品-分配")
-	@PostMapping("/distribute")
-	public R distribute(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
-		return wmDaDrugEntDrugtableService.distribute(wmDaDrugEntDrugtable);
-	}
-
-	@SysLog("获取药品关联部门列表")
-	@GetMapping("/listReDept")
-	public R listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
-		return wmDaDrugEntDrugtableService.listReDept(wmDaDrugEntDrugtable);
-	}
-
-	/**
-	 * 获取药品生产企业名称列表(已废弃,改为接口/list-drug-table直接获取药品, 兼容历史数据需要用到)
-	 *
-	 * @param deptId 部门id
-	 * @return 名称列表
-	 */
-	@GetMapping(value = "/list-drug-producer")
-	public R listDrugProducerByDeptId(@RequestParam(value = "deptId", required = false) Integer deptId) {
-		return R.ok(wmDaDrugEntDrugtableService.listDrugProducerByDeptId(deptId));
-	}
-
-
-	/**
-	 * 获取药品列表
-	 *
-	 * @param drugEntName 部门id
-	 * @param packageId 积分包id
-	 * @return 名称列表
-	 */
-	@GetMapping(value = "/list-drug-table")
-	public R listDrugByDrugEntName(@RequestParam(value = "drugEntName", required = false) String drugEntName,
-								   @RequestParam(value = "packageId") String packageId) {
-
-		WmScorePackage scorePackage = wmScorePackageService.getById(packageId);
-
-		// 兼容历史数据(通过推广药品企业查询药品)
-		if (ArrayUtil.isNotEmpty(scorePackage.getDrugProducerList())) {
-			return R.ok(wmDaDrugEntDrugtableService.list(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
-							.in(WmDaDrugEntDrugtable::getDrugEntName, Stream.of(scorePackage.getDrugProducerList()).collect(Collectors.toList())))
-					.stream().map(WmDaDrugEntDrugtable::getDrugname).collect(Collectors.toList()));
-		} else if (ArrayUtil.isNotEmpty(scorePackage.getDrugtable())) {
-			// 查询积分包的推广药品id
-			List<WmDaDrugEntDrugtable> drugEntDrugtables =
-					wmDaDrugEntDrugtableService.listByIds(Arrays.stream(scorePackage.getDrugtable()).collect(Collectors.toSet()));
-			return R.ok(drugEntDrugtables.stream().map(WmDaDrugEntDrugtable::getDrugname).collect(Collectors.toList()));
-		}
-
-		return R.ok(Collections.emptyList());
-	}
-
-	/**
-	 * 获取分配给当前企业的药品列表
-	 *
-	 * @return {@link R}<{@link ?}> 药品列表
-	 */
-	@GetMapping("/list-drug")
-	public R<?> listDrugByDeptId() {
-		Integer deptId = SecurityUtils.getUser().getDeptId();
-		return R.ok(wmDaDrugEntDrugtableService.listDrugByDeptId(Collections.singleton(deptId)));
-	}
+    private final WmDaDrugEntDrugtableService wmDaDrugEntDrugtableService;
+    private final WmDaDrugEntService wmDaDrugEntService;
+    private final WmScorePackageService wmScorePackageService;
+    private final SysDictItemService sysDictItemService;
+    private final SysCsmUserRelationService sysCsmUserRelationService;
+
+    /**
+     * 分页查询
+     *
+     * @param page                 分页对象
+     * @param wmDaDrugEntDrugtable 档案-药企药品
+     * @return 分页
+     */
+    @GetMapping("/page")
+    @PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_view')")
+    public R<IPage<WmDaDrugEntDrugtable>> getWmDaDrugEntDrugtablePage(Page<WmDaDrugEntDrugtable> page, WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+        OrderItem orderItem = new OrderItem();
+        orderItem.setColumn("create_time");
+        orderItem.setAsc(false);
+        page.addOrder(orderItem);
+        QueryWrapper<WmDaDrugEntDrugtable> queryWrapper = Wrappers.query(wmDaDrugEntDrugtable);
+        String drugname = wmDaDrugEntDrugtable.getDrugname();
+        if (StringUtils.isNotEmpty(wmDaDrugEntDrugtable.getDrugname())) {
+            wmDaDrugEntDrugtable.setDrugname(null);
+            queryWrapper.like("drugname", drugname);
+        } else {
+            wmDaDrugEntDrugtable.setDrugname(null);
+        }
+
+        String drugnameTy = wmDaDrugEntDrugtable.getDrugnameTy();
+        if (StringUtils.isNotEmpty(wmDaDrugEntDrugtable.getDrugnameTy())) {
+            wmDaDrugEntDrugtable.setDrugnameTy(null);
+            queryWrapper.like("drugname_ty", drugnameTy);
+        } else {
+            wmDaDrugEntDrugtable.setDrugnameTy(null);
+        }
+        if (StringUtils.isEmpty(wmDaDrugEntDrugtable.getDrugEntName())) {
+            wmDaDrugEntDrugtable.setDrugEntName(null);
+        }
+
+        if (SecurityUtils.getRoles().contains(19)) {
+            // CSM只能查看自己维护的企业下的数据, 以及下属维护的企业下的数据
+            Integer userId = SecurityUtils.getUser().getId();
+            // 递归查询下属关联的userId
+            Set<Integer> allUserIds = sysCsmUserRelationService.recurseCsmLowerUserId(Collections.singleton(userId), new AtomicInteger(10));
+            queryWrapper.and(wrapper -> {
+                wrapper.in("create_user", allUserIds)
+                        .or(wrapper2 -> wrapper2.isNull("create_user"));
+            });
+        }
+
+        queryWrapper.eq("del_flag", DelEnum.NOT_DEL.getVal());
+        wmDaDrugEntDrugtableService.page(page, queryWrapper);
+
+        if (CollUtil.isNotEmpty(page.getRecords())) {
+            // 剂型字典
+            List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "dose")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+            // 剂型字典
+            List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "guige")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+
+            page.getRecords().forEach(record -> {
+                if (CharSequenceUtil.isNotBlank(record.getDoseId()) && CharSequenceUtil.isBlank(record.getDoseName())) {
+                    record.setDoseName(doseMap.getOrDefault(record.getDoseId(), record.getDoseId()));
+                }
+                if (CharSequenceUtil.isNotBlank(record.getGuigeId()) && CharSequenceUtil.isBlank(record.getGuigeName())) {
+                    record.setGuigeName(guigeMap.getOrDefault(record.getGuigeId(), record.getGuigeId()));
+                }
+            });
+        }
+
+        return R.ok(page);
+    }
+
+
+    /**
+     * 通过id查询档案-药企药品
+     *
+     * @param id id
+     * @return R
+     */
+    @GetMapping("/{id}")
+    @PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_view')")
+    public R<WmDaDrugEntDrugtable> getById(@PathVariable("id") Integer id) {
+        WmDaDrugEntDrugtable drugEntDrugtable = wmDaDrugEntDrugtableService.getById(id);
+
+        if (drugEntDrugtable != null) {
+            // 剂型字典
+            List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "dose")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+            // 剂型字典
+            List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "guige")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+
+            if (CharSequenceUtil.isNotBlank(drugEntDrugtable.getDoseId()) && CharSequenceUtil.isBlank(drugEntDrugtable.getDoseName())) {
+                drugEntDrugtable.setDoseName(doseMap.getOrDefault(drugEntDrugtable.getDoseId(), drugEntDrugtable.getDoseId()));
+            }
+            if (CharSequenceUtil.isNotBlank(drugEntDrugtable.getGuigeId()) && CharSequenceUtil.isBlank(drugEntDrugtable.getGuigeName())) {
+                drugEntDrugtable.setGuigeName(guigeMap.getOrDefault(drugEntDrugtable.getGuigeId(), drugEntDrugtable.getGuigeId()));
+            }
+        }
+
+        return R.ok(drugEntDrugtable);
+    }
+
+    /**
+     * 新增档案-药企药品
+     *
+     * @param wmDaDrugEntDrugtable 档案-药企药品
+     * @return R
+     */
+    @SysLog("新增档案-药企药品")
+    @PostMapping
+    @PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_add')")
+    public R<Boolean> save(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+
+        WmDaDrugEntDrugtable query = new WmDaDrugEntDrugtable();
+        query.setDrugname(wmDaDrugEntDrugtable.getDrugname());
+		int count = wmDaDrugEntDrugtableService.count(Wrappers.query(query));
+        if (count > 0) {
+            return R.failed("药品名称已存在");
+        }
+        WmDaDrugEnt drugEnt = new WmDaDrugEnt();
+        List<WmDaDrugEnt> daDrugEnts = wmDaDrugEntService.list(Wrappers.query(drugEnt));
+        if (CollectionUtils.isNotEmpty(daDrugEnts)) {
+            wmDaDrugEntDrugtable.setDrugEntId(daDrugEnts.get(0).getId().toString());
+        }
+
+
+        wmDaDrugEntDrugtable.setCreateTime(LocalDateTime.now());
+        wmDaDrugEntDrugtable.setCreateUser(SecurityUtils.getUser().getId());
+        return R.ok(wmDaDrugEntDrugtableService.save(wmDaDrugEntDrugtable));
+    }
+
+    /**
+     * 修改档案-药企药品
+     *
+     * @param wmDaDrugEntDrugtable 档案-药企药品
+     * @return R
+     */
+    @SysLog("修改档案-药企药品")
+    @PutMapping
+    @PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_edit')")
+    public R<Boolean> updateById(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+
+        WmDaDrugEntDrugtable oldData = wmDaDrugEntDrugtableService.getById(wmDaDrugEntDrugtable.getId());
+        if (!oldData.getDrugEntName().equals(wmDaDrugEntDrugtable.getDrugEntName())) {
+            WmDaDrugEnt drugEnt = new WmDaDrugEnt();
+            List<WmDaDrugEnt> daDrugEnts = wmDaDrugEntService.list(Wrappers.query(drugEnt));
+            if (CollectionUtils.isNotEmpty(daDrugEnts)) {
+                wmDaDrugEntDrugtable.setDrugEntId(daDrugEnts.get(0).getId().toString());
+            }
+        }
+
+        wmDaDrugEntDrugtable.setUpdateTime(LocalDateTime.now());
+        wmDaDrugEntDrugtable.setUpdateUser(SecurityUtils.getUser().getId());
+
+        return R.ok(wmDaDrugEntDrugtableService.updateById(wmDaDrugEntDrugtable));
+    }
+
+    /**
+     * 通过id删除档案-药企药品
+     *
+     * @param id id
+     * @return R
+     */
+    @SysLog("通过id删除档案-药企药品")
+    @DeleteMapping("/{id}")
+    @PreAuthorize("@pms.hasPermission('admin_wmdadrugentdrugtable_del')")
+    public R<Boolean> removeById(@PathVariable Integer id) {
+        return R.ok(wmDaDrugEntDrugtableService.removeById(id));
+    }
+
+
+    @GetMapping("/list")
+    public R<List<WmDaDrugEntDrugtable>> listWmDaDrugEntDrugtable() {
+        WmDaDrugEntDrugtable wmDaDrugEnt = new WmDaDrugEntDrugtable();
+        wmDaDrugEnt.setDelFlag(CommonConstants.STATUS_NORMAL);
+        wmDaDrugEnt.setEnableFlag(CommonConstants.STATUS_NORMAL);
+
+        List<WmDaDrugEntDrugtable> list = wmDaDrugEntDrugtableService.list(Wrappers.query(wmDaDrugEnt));
+
+        if (CollUtil.isNotEmpty(list)) {
+            // 剂型字典
+            List<SysDictItem> doseDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "dose")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> doseMap = doseDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+            // 剂型字典
+            List<SysDictItem> guigeDictItems = sysDictItemService.list(Wrappers.<SysDictItem>lambdaQuery()
+                    .eq(SysDictItem::getType, "guige")
+                    .eq(SysDictItem::getDelFlag, DelEnum.NOT_DEL.getVal()));
+            Map<String, String> guigeMap = guigeDictItems.stream().collect(Collectors.toMap(SysDictItem::getValue, SysDictItem::getLabel));
+
+            list.forEach(drugEntDrugtable -> {
+                if (CharSequenceUtil.isNotBlank(drugEntDrugtable.getDoseId()) && CharSequenceUtil.isBlank(drugEntDrugtable.getDoseName())) {
+                    drugEntDrugtable.setDoseName(doseMap.getOrDefault(drugEntDrugtable.getDoseId(), drugEntDrugtable.getDoseId()));
+                }
+                if (CharSequenceUtil.isNotBlank(drugEntDrugtable.getGuigeId()) && CharSequenceUtil.isBlank(drugEntDrugtable.getGuigeName())) {
+                    drugEntDrugtable.setGuigeName(guigeMap.getOrDefault(drugEntDrugtable.getGuigeId(), drugEntDrugtable.getGuigeId()));
+                }
+            });
+        }
+
+        return R.ok(list);
+    }
+
+
+    @SysLog("药企药品-分配")
+    @PostMapping("/distribute")
+    public R<Boolean> distribute(@RequestBody WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+        return wmDaDrugEntDrugtableService.distribute(wmDaDrugEntDrugtable);
+    }
+
+    @SysLog("获取药品关联部门列表")
+    @GetMapping("/listReDept")
+    public R<List<String>> listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+        return wmDaDrugEntDrugtableService.listReDept(wmDaDrugEntDrugtable);
+    }
+
+    /**
+     * 获取药品生产企业名称列表(已废弃,改为接口/list-drug-table直接获取药品, 兼容历史数据需要用到)
+     *
+     * @param deptId 部门id
+     * @return 名称列表
+     */
+    @GetMapping(value = "/list-drug-producer")
+    public R<Set<String>> listDrugProducerByDeptId(@RequestParam(value = "deptId", required = false) Integer deptId) {
+        return R.ok(wmDaDrugEntDrugtableService.listDrugProducerByDeptId(deptId));
+    }
+
+
+    /**
+     * 获取药品列表
+     *
+     * @param drugEntName 部门id
+     * @param packageId   积分包id
+     * @return 名称列表
+     */
+    @GetMapping(value = "/list-drug-table")
+    public R<List<String>> listDrugByDrugEntName(@RequestParam(value = "drugEntName", required = false) String drugEntName,
+                                                 @RequestParam(value = "packageId") String packageId) {
+
+        WmScorePackage scorePackage = wmScorePackageService.getById(packageId);
+
+        // 兼容历史数据(通过推广药品企业查询药品)
+        if (ArrayUtil.isNotEmpty(scorePackage.getDrugProducerList())) {
+            return R.ok(wmDaDrugEntDrugtableService.list(Wrappers.<WmDaDrugEntDrugtable>lambdaQuery()
+                            .in(WmDaDrugEntDrugtable::getDrugEntName, Stream.of(scorePackage.getDrugProducerList()).collect(Collectors.toList())))
+                    .stream().map(WmDaDrugEntDrugtable::getDrugname).collect(Collectors.toList()));
+        } else if (ArrayUtil.isNotEmpty(scorePackage.getDrugtable())) {
+            // 查询积分包的推广药品id
+            List<WmDaDrugEntDrugtable> drugEntDrugtables =
+                    wmDaDrugEntDrugtableService.listByIds(Arrays.stream(scorePackage.getDrugtable()).collect(Collectors.toSet()));
+            return R.ok(drugEntDrugtables.stream().map(WmDaDrugEntDrugtable::getDrugname).collect(Collectors.toList()));
+        }
+
+        return R.ok(Collections.emptyList());
+    }
+
+    /**
+     * 获取分配给当前企业的药品列表
+     *
+     * @return {@link R}<{@link ?}> 药品列表
+     */
+    @GetMapping("/list-drug")
+    public R<List<Map<String, String>>> listDrugByDeptId() {
+        Integer deptId = SecurityUtils.getUser().getDeptId();
+        return R.ok(wmDaDrugEntDrugtableService.listDrugByDeptId(Collections.singleton(deptId)));
+    }
 
 }

+ 7 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -104,7 +104,6 @@ import org.springframework.web.bind.annotation.RequestPart;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -4126,4 +4125,11 @@ public class WmScorePackageController {
         return R.ok(list);
     }
 
+
+    // todo
+    @GetMapping(value = "/ind/stat")
+    public R<Map<String, Object>> indPkgStat(@RequestParam(value = "pkgId", required = false) Integer pkgId) {
+        return R.ok(wmScorePackageService.indPkgStat(SecurityUtils.getUser()));
+    }
+
 }

+ 273 - 29
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -1,11 +1,14 @@
 package com.qunzhixinxi.hnqz.admin.manager;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNode;
 import cn.hutool.core.lang.tree.TreeUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.dto.SysStatisticDto;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
@@ -21,6 +24,7 @@ import org.springframework.stereotype.Service;
 
 import javax.validation.constraints.NotNull;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -181,35 +185,35 @@ public class SysStatisticManager {
         return res;
     }
 
-    /**
-     * 获取服务目标统计
-     *
-     * @param user 操作人
-     * @return 统计结果
-     */
-    public List<Tree<Integer>> getImplPlanStat(HnqzUser user) {
-
-
-        List<SysImplementPlan> list = new ArrayList<>(6);
-
-
-
-
-        // List<TreeNode<Long>> collect = list.stream().map(getNodeFunction()).collect(Collectors.toList());
-
-
-        // List<TreeNode<Long>> collect = baseMapper
-        //         .selectList(Wrappers.<SysMenu>lambdaQuery()
-        //                 .like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName)
-        //                 .in(SysMenu::getMenuId, menuIds)
-        //                 .eq(Objects.nonNull(type), SysMenu::getMenuType, type).orderByAsc(SysMenu::getSortOrder))
-        //         .stream().map(getNodeFunction()).collect(Collectors.toList());
-        //
-        //
-        //
-        // return TreeUtil.build(collect, 1);
-        return null;
-    }
+    // /**
+    //  * 获取服务目标统计
+    //  *
+    //  * @param user 操作人
+    //  * @return 统计结果
+    //  */
+    // public List<Tree<Integer>> getImplPlanStat(HnqzUser user) {
+    //
+    //
+    //     List<SysImplementPlan> list = new ArrayList<>(6);
+    //
+    //
+    //
+    //
+    //     // List<TreeNode<Long>> collect = list.stream().map(getNodeFunction()).collect(Collectors.toList());
+    //
+    //
+    //     // List<TreeNode<Long>> collect = baseMapper
+    //     //         .selectList(Wrappers.<SysMenu>lambdaQuery()
+    //     //                 .like(StrUtil.isNotBlank(menuName), SysMenu::getName, menuName)
+    //     //                 .in(SysMenu::getMenuId, menuIds)
+    //     //                 .eq(Objects.nonNull(type), SysMenu::getMenuType, type).orderByAsc(SysMenu::getSortOrder))
+    //     //         .stream().map(getNodeFunction()).collect(Collectors.toList());
+    //     //
+    //     //
+    //     //
+    //     // return TreeUtil.build(collect, 1);
+    //     return null;
+    // }
 
 
     // @NotNull
@@ -242,4 +246,244 @@ public class SysStatisticManager {
     //         return node;
     //     };
     // }
+
+
+    /**
+     * 执行计划统计
+     *
+     * @param query 查询条件
+     * @param user  查询人
+     * @return 统计信息
+     */
+    public Page<Map<String, Object>> statPlanTree(SysStatisticDto.OnPlanTree query, HnqzUser user) {
+
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("parentId", -1);
+        records.put("planName", "测试计划");
+        records.put("planScore", 123456);
+        records.put("planPeriod", "2024-01-01~2025-01-01");
+        records.put("providerName", "测试服务提供方");
+        records.put("createTime", LocalDateTime.now());
+        records.put("distScore", 12345);
+        records.put("distRate", "30%");
+        records.put("serCompleteRate", "10%");
+
+        Map<String, Object> child1 = new HashMap<>();
+        child1.put("id", 1234);
+        child1.put("parentId", 123);
+        child1.put("planName", "测试计划1");
+        child1.put("planScore", 123456);
+        child1.put("planPeriod", "2024-01-01~2025-01-01");
+        child1.put("providerName", "测试服务提供方1");
+        child1.put("createTime", LocalDateTime.now());
+        child1.put("distScore", 12345);
+        child1.put("distRate", "30%");
+        child1.put("serCompleteRate", "10%");
+
+
+        Map<String, Object> child2 = new HashMap<>();
+        child2.put("id", 12345);
+        child2.put("parentId", 1234);
+        child2.put("planName", "测试计划1");
+        child2.put("planScore", 123456);
+        child2.put("planPeriod", "2024-01-01~2025-01-01");
+        child2.put("providerName", "测试服务提供方1");
+        child2.put("createTime", LocalDateTime.now());
+        child2.put("distScore", 12345);
+        child2.put("distRate", "30%");
+        child2.put("serCompleteRate", "10%");
+        child2.put("children", Collections.emptyList());
+
+        child1.put("children", Collections.singletonList(child2));
+
+
+        records.put("children", Collections.singletonList(child1));
+
+
+        Page<Map<String, Object>> page = new Page<>();
+        page.setRecords(Collections.singletonList(records));
+        page.setCurrent(1);
+        page.setSize(20);
+        page.setTotal(1);
+
+        return page;
+
+
+    }
+
+    /**
+     * 所有执行包数据汇总树状展示
+     *
+     * @param query 查询条件
+     * @param user  操作人
+     * @return 统计信息
+     */
+    public Page<Map<String, Object>> statPkgTree(SysStatisticDto.OnPkgTree query, HnqzUser user) {
+
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("parentId", -1);
+        records.put("pkgName", "测试计划");
+        records.put("pkgScore", 123456);
+        records.put("pickerName", "测试服务提供方1");
+        records.put("createTime", LocalDateTime.now());
+        records.put("completeScore", 12345);
+        records.put("completeRate", "30%");
+
+        Map<String, Object> child1 = new HashMap<>();
+        child1.put("id", 1234);
+        child1.put("parentId", 123);
+        child1.put("pkgName", "测试计划");
+        child1.put("pkgScore", 123456);
+        child1.put("pickerName", "测试服务提供方1");
+        child1.put("createTime", LocalDateTime.now());
+        child1.put("completeScore", 12345);
+        child1.put("completeRate", "30%");
+
+
+        Map<String, Object> child2 = new HashMap<>();
+        child2.put("id", 1234);
+        child2.put("parentId", 123);
+        child2.put("pkgName", "测试计划");
+        child2.put("pkgScore", 123456);
+        child2.put("pickerName", "测试服务提供方1");
+        child2.put("createTime", LocalDateTime.now());
+        child2.put("completeScore", 12345);
+        child2.put("completeRate", "30%");
+        child2.put("children", Collections.emptyList());
+
+        child1.put("children", Collections.singletonList(child2));
+
+
+        records.put("children", Collections.singletonList(child1));
+
+
+        Page<Map<String, Object>> page = new Page<>();
+        page.setRecords(Collections.singletonList(records));
+        page.setCurrent(1);
+        page.setSize(20);
+        page.setTotal(1);
+
+        return page;
+    }
+
+    /**
+     * 统计服务商数据
+     *
+     * @param query 查询条件
+     * @param user  操作人
+     * @return 统计信息
+     */
+    public Page<Map<String, Object>> statProviderData(SysStatisticDto.OnProviderQccData query, HnqzUser user) {
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("providerName", "测试服务提供方1");
+        records.put("areaCodes", ListUtil.of(0));
+        records.put("products", "123456");
+        records.put("qccScore", "90");
+        records.put("serviceMark", "120");
+        records.put("average", 123);
+
+
+        Page<Map<String, Object>> page = new Page<>();
+        page.setRecords(Collections.singletonList(records));
+        page.setCurrent(1);
+        page.setSize(20);
+        page.setTotal(1);
+
+        return page;
+
+    }
+
+    /**
+     * 服务提供商数据
+     *
+     * @param query 查询条件
+     * @param user  操作人
+     * @return 统计信息
+     */
+    public Page<Map<String, Object>> statProviderDataTree(SysStatisticDto.OnProviderTree query, HnqzUser user) {
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("parentId", -1);
+        records.put("pkgName", "测试计划");
+        records.put("pkgScore", 123456);
+        records.put("pickerName", "测试服务提供方1");
+        records.put("createTime", LocalDateTime.now());
+        records.put("completeScore", 12345);
+        records.put("completeRate", "30%");
+        records.put("taskPassedPercentage", "30%");
+        records.put("taskPassedScore", 234);
+        records.put("taskPassRate", "30%");
+
+        Map<String, Object> child1 = new HashMap<>();
+        child1.put("id", 1234);
+        child1.put("parentId", 123);
+        child1.put("pkgName", "测试计划");
+        child1.put("pkgScore", 123456);
+        child1.put("pickerName", "测试服务提供方1");
+        child1.put("createTime", LocalDateTime.now());
+        child1.put("completeScore", 12345);
+        child1.put("completeRate", "30%");
+        child1.put("taskPassedPercentage", "30%");
+        child1.put("taskPassedScore", 234);
+        child1.put("taskPassRate", "30%");
+
+
+        Map<String, Object> child2 = new HashMap<>();
+        child2.put("id", 12345);
+        child2.put("parentId", 12345);
+        child2.put("pkgName", "测试计划");
+        child2.put("pkgScore", 123456);
+        child2.put("pickerName", "测试服务提供方1");
+        child2.put("createTime", LocalDateTime.now());
+        child2.put("completeScore", 12345);
+        child2.put("completeRate", "30%");
+        child2.put("taskPassedPercentage", "30%");
+        child2.put("taskPassedScore", 234);
+        child2.put("taskPassRate", "30%");
+        child2.put("children", Collections.emptyList());
+
+        child1.put("children", Collections.singletonList(child2));
+
+
+        records.put("children", Collections.singletonList(child1));
+
+
+        Page<Map<String, Object>> page = new Page<>();
+        page.setRecords(Collections.singletonList(records));
+        page.setCurrent(1);
+        page.setSize(20);
+        page.setTotal(1);
+
+        return page;
+    }
+
+    /**
+     * 监察信息
+     *
+     * @param query 查询条件
+     * @param user  查询人
+     * @return 统计结果
+     */
+    public Page<Map<String, Object>> statSupData(SysStatisticDto.OnSupData query, HnqzUser user) {
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("providerName", "测试服务提供方1");
+        records.put("supervisionTimes", 5);
+        records.put("supervisionScore", 123456);
+        records.put("supervisionPassedRate", "30%");
+        records.put("supervisionWarnRate", "30%");
+        records.put("supervisionRate", "30%");
+
+
+        Page<Map<String, Object>> page = new Page<>();
+        page.setRecords(Collections.singletonList(records));
+        page.setCurrent(1);
+        page.setSize(20);
+        page.setTotal(1);
+
+        return page;
+    }
 }

+ 92 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysUserManager.java

@@ -1,12 +1,20 @@
 package com.qunzhixinxi.hnqz.admin.manager;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.hutool.core.text.StrPool;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysUserDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysFile;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUserCertificate;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmDaDrugEntDrugtable;
 import com.qunzhixinxi.hnqz.admin.service.SysFileService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserCertificateService;
+import com.qunzhixinxi.hnqz.admin.service.SysUserService;
+import com.qunzhixinxi.hnqz.admin.service.WmDaDrugEntDrugtableService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -16,6 +24,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -32,6 +41,8 @@ import java.util.stream.Collectors;
 public class SysUserManager {
 
     private final SysFileService fileService;
+    private final SysUserService userService;
+    private final WmDaDrugEntDrugtableService drgEntDrugtableService;
     private final SysUserCertificateService userCertificateService;
 
 
@@ -80,4 +91,85 @@ public class SysUserManager {
         }).collect(Collectors.toList());
 
     }
+
+    /**
+     * 备案管理员绑定备案信息和产品
+     *
+     * @param resource 绑定信息
+     * @param user     操纵人
+     * @return 绑定结果
+     */
+    public Boolean bindProdToUserCert(SysUserDTO.OnProdBind resource, HnqzUser user) {
+
+        String products = resource.getProductIds().stream().map(Objects::toString).collect(Collectors.joining(","));
+        userCertificateService.update(Wrappers.<SysUserCertificate>lambdaUpdate()
+                .set(SysUserCertificate::getProducts, products)
+                .eq(SysUserCertificate::getCertificateId, resource.getCertId()));
+
+        // 启用业务员
+        userService.update(Wrappers.<SysUser>lambdaUpdate()
+                .set(SysUser::getLockFlag, CommonConstants.STATUS_NORMAL)
+                .eq(SysUser::getUserId, resource.getUserId())
+                .eq(SysUser::getDelFlag, CommonConstants.STATUS_NORMAL)
+                .eq(SysUser::getLockFlag, CommonConstants.STATUS_LOCK));
+
+
+        return Boolean.TRUE;
+    }
+
+    /**
+     * 获取用户备案详情
+     *
+     * @param userId 用户ID
+     * @return 备案信息
+     */
+    public List<Map<String, Object>> listUserCerts(Integer userId) {
+
+        List<SysUserCertificate> certificates = userCertificateService.list(Wrappers.<SysUserCertificate>lambdaQuery().eq(SysUserCertificate::getUserId, userId));
+
+        if (CollUtil.isEmpty(certificates)) {
+            return Collections.emptyList();
+        }
+
+        // 查询药品
+        Set<String> prodIds = certificates.stream().filter(cert -> CharSequenceUtil.isNotBlank(cert.getProducts())).flatMap(cert -> CharSequenceUtil.split(cert.getProducts(), StrPool.COMMA).stream()).collect(Collectors.toSet());
+        Map<String, WmDaDrugEntDrugtable> collect;
+        if (CollUtil.isNotEmpty(prodIds)) {
+            collect = drgEntDrugtableService.listByIds(prodIds).stream().collect(Collectors.toMap(WmDaDrugEntDrugtable::getId, Function.identity()));
+        } else {
+            collect = Collections.emptyMap();
+        }
+
+        // 查询图片
+        Set<Long> fileIds = certificates.stream().mapToLong(SysUserCertificate::getFileId).boxed().collect(Collectors.toSet());
+        Map<Long, SysFile> fileIdToFileMap = fileService.listByIds(fileIds).stream().collect(Collectors.toMap(SysFile::getId, Function.identity()));
+
+
+        return certificates.stream().map(cert -> {
+            Map<String, Object> map = BeanUtil.copyProperties(cert, Map.class, "products", "fileId");
+
+            // 产品
+            String products = cert.getProducts();
+            List<Map<String, Object>> prods;
+            if (CharSequenceUtil.isNotBlank(products)) {
+                prods = CharSequenceUtil.split(products, StrPool.COMMA).stream().map(prodId -> {
+                    WmDaDrugEntDrugtable wmDaDrugEntDrugtable = collect.get(prodId);
+                    Map<String, Object> m = new HashMap<>(3);
+                    m.put("productId", wmDaDrugEntDrugtable.getId());
+                    m.put("productCommonName", wmDaDrugEntDrugtable.getDrugnameTy());
+                    m.put("productnName", wmDaDrugEntDrugtable.getDrugname());
+                    return m;
+                }).collect(Collectors.toList());
+            } else {
+                prods = Collections.emptyList();
+            }
+            map.put("products", prods);
+
+            // 图片
+            SysFile f = fileIdToFileMap.get(cert.getFileId());
+            map.put("file", f);
+
+            return map;
+        }).collect(Collectors.toList());
+    }
 }

+ 0 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/SysDeptMapper.java

@@ -1,13 +1,10 @@
-
 package com.qunzhixinxi.hnqz.admin.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
-import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.vo.SysEnterpriseRelationVO;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScopeMapper;
 import org.apache.ibatis.annotations.Mapper;

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysUserService.java

@@ -91,7 +91,7 @@ public interface SysUserService extends IService<SysUser> {
      * @param userDto DTO 对象
      * @return success/fail
      */
-    Boolean saveUser(UserDTO userDto);
+    Integer saveUser(UserDTO userDto);
 
     List<SysUser> getUserByPlatId(String platId);
 

+ 0 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaAgentService.java

@@ -3,11 +3,9 @@ package com.qunzhixinxi.hnqz.admin.service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qunzhixinxi.hnqz.admin.api.dto.WmDaAgentDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.api.model.input.WmDept;
 import com.qunzhixinxi.hnqz.common.core.util.R;
-import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import feign.Param;
 
 import java.util.List;

+ 38 - 36
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmDaDrugEntDrugtableService.java

@@ -1,4 +1,3 @@
-
 package com.qunzhixinxi.hnqz.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -20,45 +19,48 @@ import java.util.Set;
  */
 public interface WmDaDrugEntDrugtableService extends IService<WmDaDrugEntDrugtable> {
 
-	/**
-	 * 给药品分配推广企业
-	 * @param wmDaDrugEntDrugtable
-	 * @return
-	 */
-	R distribute(WmDaDrugEntDrugtable wmDaDrugEntDrugtable);
+    /**
+     * 给药品分配推广企业
+     *
+     * @param wmDaDrugEntDrugtable 条件
+     * @return 结果
+     */
+    R<Boolean> distribute(WmDaDrugEntDrugtable wmDaDrugEntDrugtable);
 
-	/**
-	 * 获取推广企业列表
-	 * @param wmDaDrugEntDrugtable
-	 * @return
-	 */
-	R listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable);
+    /**
+     * 获取推广企业列表
+     *
+     * @param wmDaDrugEntDrugtable 条件
+     * @return 结果
+     */
+    R<List<String>> listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable);
 
-	/**
-	 * 获取药品
-	 *
-	 * @param page     分页信息
-	 * @param deptId   部门id
-	 * @param drugName 药品名称
-	 * @return 药品列表
-	 */
-	IPage<WmDaDrugEntDrugtable> listDrugs(Page<WmDaDrugEntDrugtable> page, Integer deptId, String drugName);
+    /**
+     * 获取药品
+     *
+     * @param page     分页信息
+     * @param deptId   部门id
+     * @param drugName 药品名称
+     * @return 药品列表
+     */
+    IPage<WmDaDrugEntDrugtable> listDrugs(Page<WmDaDrugEntDrugtable> page, Integer deptId, String drugName);
 
-	/**
-	 * 根据部门id获取关联药品生产生产企业名称
-	 * @param deptId 部门id
-	 * @return 生产企业列表
-	 */
-	Set<String> listDrugProducerByDeptId(Integer deptId);
+    /**
+     * 根据部门id获取关联药品生产生产企业名称
+     *
+     * @param deptId 部门id
+     * @return 生产企业列表
+     */
+    Set<String> listDrugProducerByDeptId(Integer deptId);
 
 
-	/**
-	 * 获取分配给指定企业的药品列表
-	 *
-	 * @param deptId 部门id
-	 * @return {@link List}<{@link Map}<{@link String}, {@link String}>>
-	 */
-	List<Map<String, String>> listDrugByDeptId(Collection<Integer> deptId);
+    /**
+     * 获取分配给指定企业的药品列表
+     *
+     * @param deptId 部门id
+     * @return {@link List}<{@link Map}<{@link String}, {@link String}>>
+     */
+    List<Map<String, String>> listDrugByDeptId(Collection<Integer> deptId);
 
-	List<Map<String, String>> listDrugs(Collection<Integer> drugIds);
+    List<Map<String, String>> listDrugs(Collection<Integer> drugIds);
 }

+ 3 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageService.java

@@ -21,6 +21,7 @@ import com.qunzhixinxi.hnqz.admin.api.model.input.WmScorePackageSettleInput;
 import com.qunzhixinxi.hnqz.admin.api.model.input.WmScorePackageSettleOutput;
 import com.qunzhixinxi.hnqz.admin.api.vo.SettleFinancialReviewVO;
 import com.qunzhixinxi.hnqz.common.core.util.R;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 
 import java.time.LocalDate;
 import java.util.List;
@@ -266,4 +267,6 @@ public interface WmScorePackageService extends IService<WmScorePackage> {
      * @param finalEntIds 所属服务商ID
      */
     void pageForSupervision(Page<Map<String, Object>> page, String pkgName, Boolean supervision, Set<Integer> finalEntIds);
+
+    Map<String, Object> indPkgStat(HnqzUser user);
 }

+ 9 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.ArrayUtil;
@@ -577,7 +578,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean saveUser(UserDTO userDto) {
+    public Integer saveUser(UserDTO userDto) {
 
         SysUser sysUser = new SysUser();
         if (null != userDto.getUsername()) {
@@ -602,7 +603,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             userRole.setRoleId(roleId);
             return userRole;
         }).collect(Collectors.toList());
-        log.info("-----{}", userRoleList.size());
+        log.info("-----角色ID:{},角色ID数:{}", userRoleList, userRoleList.size());
         sysUserRoleService.saveBatch(userRoleList);
 
         // 关联上级主管
@@ -618,7 +619,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         // 管理区域管理
         userAreaService.saveRelation(Long.valueOf(sysUser.getUserId()), userDto.getAreaCodes());
 
-        return Boolean.TRUE;
+        return sysUser.getUserId();
     }
 
     /**
@@ -698,7 +699,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             return baseMapper.getUserVosPage(page, userDTO, new DataScope());
         } else if (SecurityUtils.getRoles().contains(2) || SecurityUtils.getRoles().contains(35)) {
             // 人数据权限
-            List<Integer> bcRoles = Stream.of(2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35, 37, 38, 39, 40, 41, 42, 43).collect(Collectors.toList());
+            List<Integer> bcRoles = Stream.of(2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47).collect(Collectors.toList());
             if (CollUtil.isNotEmpty(userDTO.getRole())) {
                 Collection<Integer> intersection = CollUtil.intersectionDistinct(bcRoles, userDTO.getRole());
                 if (CollUtil.isEmpty(intersection)) {
@@ -718,7 +719,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             return baseMapper.getUserVosPage(page, userDTO, new DataScope());
         } else if (SecurityUtils.getRoles().contains(35)) {
             // BC总负责人数据权限
-            List<Integer> bcRoles = Stream.of(3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35, 37, 38, 39, 40, 41, 42, 43).collect(Collectors.toList());
+            List<Integer> bcRoles = Stream.of(3, 4, 5, 6, 7, 9, 10, 11, 13, 19, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47).collect(Collectors.toList());
             if (CollUtil.isNotEmpty(userDTO.getRole())) {
                 Collection<Integer> intersection = CollUtil.intersectionDistinct(bcRoles, userDTO.getRole());
                 if (CollUtil.isEmpty(intersection)) {
@@ -729,6 +730,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 userDTO.setRole(bcRoles);
             }
             return baseMapper.getUserVosPage(page, userDTO, new DataScope());
+        } else if (SecurityUtils.getRoles().contains(47)) {
+            userDTO.setRole(ListUtil.of(5, 6));
+            return baseMapper.getUserVosPage(page, userDTO, new DataScope());
         }
         Integer deptId = userDTO.getDeptId();
         userDTO.setDeptId(SecurityUtils.getUser().getDeptId());

+ 4 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaAgentServiceImpl.java

@@ -47,7 +47,6 @@ import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.util.IDUtils;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScope;
-import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
@@ -100,7 +99,7 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
         String buildName = "";
         SysDept sysDept = sysDeptService.getById(deptId);
         if (null != sysDept) {
-            //buildName=sysDept.getName();
+            // buildName=sysDept.getName();
             SysDept sysDeptP1 = sysDeptService.getById(sysDept.getParentId());
             if (null != sysDeptP1) {
                 buildName = sysDeptP1.getName();
@@ -490,10 +489,10 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
         // 对应的部门id
         List<String> deptIds = null;
         if (CollectionUtil.isNotEmpty(agentList)) {
-            //ids = agentList.stream().map(WmDaAgent::getId).collect(Collectors.toList());
+            // ids = agentList.stream().map(WmDaAgent::getId).collect(Collectors.toList());
             deptIds = agentList.stream().map(agent -> agent.getDeptId().toString()).collect(Collectors.toList());
         } else {
-            //ids = listEnts.stream().map(p -> p.getId()).collect(Collectors.toList());
+            // ids = listEnts.stream().map(p -> p.getId()).collect(Collectors.toList());
             deptIds = listEnts.stream().map(ent -> ent.getDeptId().toString()).collect(Collectors.toList());
         }
         List<WmRelation> newList = new ArrayList<>();
@@ -696,7 +695,7 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
             if (CollUtil.isNotEmpty(sysDeptRelationList)) {
 
                 // 区域限制
-                List<Long>  areaId = sysUserAreaService.listUserAreas(Long.valueOf(SecurityUtils.getUser().getId()));
+                List<Long> areaId = sysUserAreaService.listUserAreas(Long.valueOf(SecurityUtils.getUser().getId()));
                 if (CollUtil.isNotEmpty(areaId)) {
                     areaId = areaEntityService.list(Wrappers.<SysAreaEntity>lambdaQuery()
                                     .in(SysAreaEntity::getAreaId, areaId)

+ 3 - 3
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaDrugEntDrugtableServiceImpl.java

@@ -52,7 +52,7 @@ public class WmDaDrugEntDrugtableServiceImpl extends ServiceImpl<WmDaDrugEntDrug
     private final SysDictItemService sysDictItemService;
 
     @Override
-    public R listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+    public R<List<String>> listReDept(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
 
         List<ReDeptDrug> list = reDeptDrugService.list(Wrappers.<ReDeptDrug>lambdaQuery()
                 .eq(ReDeptDrug::getDrugId, wmDaDrugEntDrugtable.getId()));
@@ -141,7 +141,7 @@ public class WmDaDrugEntDrugtableServiceImpl extends ServiceImpl<WmDaDrugEntDrug
     }
 
     @Override
-    public R distribute(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
+    public R<Boolean> distribute(WmDaDrugEntDrugtable wmDaDrugEntDrugtable) {
         int id = Integer.parseInt(wmDaDrugEntDrugtable.getId());
         List<String> deptList = wmDaDrugEntDrugtable.getReDeptList();
 
@@ -167,7 +167,7 @@ public class WmDaDrugEntDrugtableServiceImpl extends ServiceImpl<WmDaDrugEntDrug
         this.baseMapper.updateById(updateEntity);
 
 
-        return R.ok();
+        return R.ok(Boolean.TRUE);
     }
 
     /**

+ 133 - 115
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageServiceImpl.java

@@ -80,6 +80,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmPkgQuizRelationService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageStatusService;
 import com.qunzhixinxi.hnqz.admin.service.WmTeamService;
+import com.qunzhixinxi.hnqz.admin.util.MapUtil;
 import com.qunzhixinxi.hnqz.common.core.exception.BizException;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.data.datascope.DataScope;
@@ -257,7 +258,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
                 List<String> taskStatus = new ArrayList<>();
                 taskStatus.add("5");
-                //TODO 需要确认已审核的逻辑
+                // TODO 需要确认已审核的逻辑
                 List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.query(wmTask)
                         .lambda()
                         .notIn(WmTask::getTaskStatus, taskStatus));
@@ -298,7 +299,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
                 List<String> taskStatus = new ArrayList<>();
                 taskStatus.add("5");
-                //TODO 需要确认已审核的逻辑
+                // TODO 需要确认已审核的逻辑
                 List<WmTask> wmTaskList = wmTaskMapper.selectList(Wrappers.query(wmTask).lambda()
                         .notIn(WmTask::getTaskStatus, taskStatus)
                         .orderByAsc(WmTask::getCreateTime)
@@ -631,7 +632,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (null != wmScorePackage.getRelatedService()) {
             relatedService = sysDeptMapper.selectById(wmScorePackage.getRelatedService());
         }
-        //查询分配给当前用户机构的积分包,deptid为当前用户,而且typeid=1或2
+        // 查询分配给当前用户机构的积分包,deptid为当前用户,而且typeid=1或2
         Integer deptId = SecurityUtils.getUser().getDeptId();
         Integer superDeptId = StrUtil.isNotBlank(wmScorePackage.getRelatedService()) ? Integer.valueOf(wmScorePackage.getRelatedService()) : null;
         List<WmScorePackage> pkgList =
@@ -669,9 +670,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             }
         }
 
-        //一个机构同时是一级cso和二级cso时,可以自己给自己发包
+        // 一个机构同时是一级cso和二级cso时,可以自己给自己发包
         if (null != relatedService.getLevel() && relatedService.getLevel() == 4) {
-            List<SysDept> deptList = sysDeptMapper.getAllParentDept(relatedService);//所有的上级机构
+            List<SysDept> deptList = sysDeptMapper.getAllParentDept(relatedService);// 所有的上级机构
             List<Integer> levels = deptList.stream().map(SysDept::getLevel).collect(Collectors.toList());
             if (levels.contains(2)) {
                 relatedService.setLevel(3);
@@ -682,7 +683,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             if (null != relatedService.getLevel() && relatedService.getLevel() != 4) {
                 SysDept sysDept = sysDeptMapper.selectById(deptId);
                 if (wmScorePackage.getRelatedService().equals(sysDept.getDeptId() + "")) {
-                    //if(sysDept.getDeptId().equals(wmScorePackage.getRelatedService())){
+                    // if(sysDept.getDeptId().equals(wmScorePackage.getRelatedService())){
                     WmScorePackage wmScorePackage1 = new WmScorePackage();
                     wmScorePackage1.setId("-1");
                     wmScorePackage1.setScorePackageName("无");
@@ -750,7 +751,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     @Transactional(rollbackFor = Exception.class)
     public R addWmScorePackage(WmScorePackage wmScorePackage) {
         HnqzUser currentUser = SecurityUtils.getUser();
-        //判断名字不能重复和积分包序列号不能重复
+        // 判断名字不能重复和积分包序列号不能重复
         if (StrUtil.isNotBlank(wmScorePackage.getScorePackageName())) {
 
             long existed = this.count(Wrappers.<WmScorePackage>lambdaQuery().eq(WmScorePackage::getDelFlag, "0").eq(WmScorePackage::getDeptId, currentUser.getDeptId().toString()).and(
@@ -773,7 +774,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         // 		return R.failed("积分包名称或积分包序列号已存在");
         // 	}
         // }
-        if (wmScorePackage.getPackageType1().equals("1")) {//定额
+        if (wmScorePackage.getPackageType1().equals("1")) {// 定额
             if (!StringUtil.isEmpty(wmScorePackage.getUserScore()) && wmScorePackage.getUserNum() > 0) {
                 wmScorePackage.setScore(Integer.valueOf(wmScorePackage.getUserScore()) * wmScorePackage.getUserNum());
             }
@@ -812,8 +813,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             }
         }
 
-        WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
-        //判断预积分包值不能大于可分配积分值
+        WmScorePackage relationScorePackage = new WmScorePackage();// 关联积分包
+        // 判断预积分包值不能大于可分配积分值
         if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId()
                 .equals("-1")) {
 //			WmScorePackage wmScorePackage1 = new WmScorePackage();
@@ -830,7 +831,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 if (kfpjf > 0 && wmScorePackage.getScore() > kfpjf) {
                     return R.failed("预积分包值不能大于可分配积分值");
                 }
-                //更新可分配积分包值
+                // 更新可分配积分包值
                 if (kfpjf >= wmScorePackage.getScore()) {
                     relationScorePackage.setId(wmScorePackage.getRelationScoreId());
                     relationScorePackage.setKfpjf(kfpjf - wmScorePackage.getScore());
@@ -844,14 +845,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
         }
 
-        //关联积分包为空时
+        // 关联积分包为空时
         if (wmScorePackage.getRelationScoreId() == null || (wmScorePackage.getRelationScoreId() != null && wmScorePackage
                 .getRelationScoreId()
                 .equals("-1"))) {
 
             wmScorePackage.setRelationScoreId(null);
             SysDept dept = new SysDept();
-            //关联积分包为空,需要判断是不是是不是药企
+            // 关联积分包为空,需要判断是不是是不是药企
             if (wmScorePackage.getRelatedService() == null) {
                 dept = sysDeptMapper.selectById(currentUser.getDeptId());
             } else {
@@ -862,12 +863,12 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             if (dept == null) {
                 return R.failed("未查询到当前登陆人的");
             } else {
-                if (dept.getLevel() == 2) {//药企
+                if (dept.getLevel() == 2) {// 药企
                     WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.getOne(Wrappers.<WmDaDrugEnt>lambdaQuery()
                             .eq(WmDaDrugEnt::getDeptId, dept.getDeptId()));
                     wmScorePackage.setDrugEntId(wmDaDrugEnt.getId());
                     wmScorePackage.setRuleId(this.queryRuleID(wmDaDrugEnt, null));
-                } else if (dept.getLevel() == 3 || dept.getLevel() == 4) {//一级cso
+                } else if (dept.getLevel() == 3 || dept.getLevel() == 4) {// 一级cso
                     WmDaAgent wmDaAgent = wmDaAgentService.getOne(Wrappers.<WmDaAgent>lambdaQuery()
                             .eq(WmDaAgent::getDeptId, dept.getDeptId()));
                     wmScorePackage.setRuleId(this.queryRuleID(null, wmDaAgent));
@@ -916,7 +917,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             // 允许接单
             wmScorePackage.setIsReceive("0");
             // 已分派待申领
-            wmScorePackage.setScorePackageStatus("1");//已分派待申领
+            wmScorePackage.setScorePackageStatus("1");// 已分派待申领
         }
         if (PackageTypeEnum.TYPE1_HCP_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
             // 患者教育,固定只能一人领取
@@ -934,7 +935,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         boolean isAnswer = this.save(wmScorePackage);
         if (isAnswer) {
 
-            //保存接单对象,全职学术推广员,允许选多个
+            // 保存接单对象,全职学术推广员,允许选多个
             List<String> userList = wmScorePackage.getUserList();
             if (null != userList && userList.size() > 0) {
                 List<WmScorePackageStatus> stuList = new ArrayList<>();
@@ -945,9 +946,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     wmScorePackageStatus.setPackageId(wmScorePackage.getId());
                     UserVO user = sysUserMapper.getUserVoById(Integer.valueOf(userId));
                     wmScorePackageStatus.setDeptId(user.getDeptId() + "");
-                    if (wmScorePackage.getPackageType1().equals("1")) {//定额包
+                    if (wmScorePackage.getPackageType1().equals("1")) {// 定额包
                         wmScorePackageStatus.setUserScore(wmScorePackage.getScore() + "");
-                    } else {//定量包
+                    } else {// 定量包
                         wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
                     }
                     wmScorePackageStatus.setEnableFlag("0");
@@ -960,7 +961,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 wmScorePackage.setUserNum(userList.size());
                 this.updateById(wmScorePackage);
             }
-            //保存有效任务类型
+            // 保存有效任务类型
             List<WmTaskTypeTree> tasktypeList = wmScorePackage.getTaskTypeList();
 
             if (null != tasktypeList && tasktypeList.size() > 0) {
@@ -1032,7 +1033,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                         || wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_HCP_PACKAGE.val())
                         || wmScorePackage.getPackageType1().equals(PackageTypeEnum.TYPE1_SETTLE_PACKAGE.val())
                         || wmScorePackage.getPackageType2().equals(PackageTypeEnum.TYPE2_SETTLE_PACKAGE.val())) {
-                    //结算包
+                    // 结算包
                     WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
                     wmScoreTaskType.setScoreId(wmScorePackage.getId());
                     wmScoreTaskType.setTaskTypeId(wmScorePackage.getTaskTypeId());
@@ -1041,7 +1042,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 }
             }
 
-            //更新关联积分包可分配积分值
+            // 更新关联积分包可分配积分值
             if (!StringUtil.isEmpty(relationScorePackage.getId())) {
                 this.updateById(relationScorePackage);
             }
@@ -1114,23 +1115,23 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         for (WmScorePackage wmScorePackage1 : records) {
 
             // todo
-            //List<WmScorePackageSettleNote> list = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // List<WmScorePackageSettleNote> list = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.eq(WmScorePackageSettleNote::getPackageId, wmScorePackage1.getId()));
-            //if (CollectionUtil.isNotEmpty(list)) {
+            // if (CollectionUtil.isNotEmpty(list)) {
             //	wmScorePackage1.setNotifyDate(list.get(0).getNotifyTime());
             //}
 
             if ("2".equals(wmScorePackage.getPackageType2())) {
                 WmScorePackageSettleNote wsquery = new WmScorePackageSettleNote();
                 wsquery.setPackageId(wmScorePackage1.getId());
-                //int wsNum = settleNoteMapper.selectCount(Wrappers.query(wsquery)
+                // int wsNum = settleNoteMapper.selectCount(Wrappers.query(wsquery)
                 //		.lambda().in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
                 WmScorePackageSettleNote asquery = new WmScorePackageSettleNote();
                 asquery.setPackageId(wmScorePackage1.getId());
                 asquery.setSettleNoteStatus(1);
-                //int asNum = settleNoteMapper.selectCount(Wrappers.query(asquery));
-                //wmScorePackage1.setWsTaskNum(wsNum);
-                //wmScorePackage1.setAsTaskNum(asNum);
+                // int asNum = settleNoteMapper.selectCount(Wrappers.query(asquery));
+                // wmScorePackage1.setWsTaskNum(wsNum);
+                // wmScorePackage1.setAsTaskNum(asNum);
             }
             if (PackageTypeEnum.TYPE1_HCP_PACKAGE.getName().equals(wmScorePackage1.getPackageType1())) {
                 // 如果是患者教育,则转换积分值 '分'-> '元'
@@ -1184,7 +1185,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 List<WmTask> tasks = wmTaskMapper.selectList(Wrappers.<WmTask>lambdaQuery()
                         .eq(WmTask::getScorePackageId, String.valueOf(wmScorePackage1.getId())));
 
-                //统计发包方还未审核的
+                // 统计发包方还未审核的
                 long drugNeedToCheckCount = tasks.stream()
                         .filter(t -> "3".equals(t.getTaskStatus()) && "2".equals(t.getReportOneApprovalStatus()))
                         .count();
@@ -1231,9 +1232,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         wmScorePackage.setPackageStatus(wmScorePackage.getPackageStatus());
         WmTask wmTask = new WmTask();
         wmTask.setScorePackageId(wmScorePackage.getId());
-        //wmTask.setRealFlag("0");
+        // wmTask.setRealFlag("0");
         List<WmTask> taskList = wmTaskMapper.selectList(Wrappers.query(wmTask));
-        //将所有未接单审核的,改成审核不通过
+        // 将所有未接单审核的,改成审核不通过
         wmScorePackageStatusService.update(new WmScorePackageStatus(),
                 Wrappers.<WmScorePackageStatus>lambdaUpdate()
                         .eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId())
@@ -1241,17 +1242,17 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                         .set(WmScorePackageStatus::getStatus, "3")
                         .set(WmScorePackageStatus::getTaskAddFlag, "0")
         );
-        //查询所有接单审核通过的
+        // 查询所有接单审核通过的
         LambdaQueryWrapper<WmScorePackageStatus> queryWrapper = new LambdaQueryWrapper();
         queryWrapper.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId());
         queryWrapper.eq(WmScorePackageStatus::getDelFlag, "0");
         queryWrapper.in(WmScorePackageStatus::getStatus, "2");
         List<WmScorePackageStatus> scorestatusList = wmScorePackageStatusService.list(queryWrapper);
-        //全部终止,终止任务和积分包
+        // 全部终止,终止任务和积分包
         int recoveryScore = 0;
         if ("1".equals(enableType)) {
-            wmScorePackage.setScorePackageStatus("6");//已终止
-            //更新结单
+            wmScorePackage.setScorePackageStatus("6");// 已终止
+            // 更新结单
             if (null != scorestatusList && scorestatusList.size() > 0) {
                 wmScorePackageStatusService.update(new WmScorePackageStatus(),
                         Wrappers.<WmScorePackageStatus>lambdaUpdate()
@@ -1274,10 +1275,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             }
 
         } else if ("2".equals(enableType)) {
-            wmScorePackage.setScorePackageStatus("4");//已完成待结算
-            //部分终止,收回剩余积分值,没有审核的任务继续审核
-            //先更新任务状态为已审核
-            int resSum = 0;//收回值
+            wmScorePackage.setScorePackageStatus("4");// 已完成待结算
+            // 部分终止,收回剩余积分值,没有审核的任务继续审核
+            // 先更新任务状态为已审核
+            int resSum = 0;// 收回值
             boolean pickedButNotSubmitted = false;
             if (CollUtil.isNotEmpty(scorestatusList)) {
                 wmScorePackage.setUserNum(scorestatusList.size());
@@ -1292,8 +1293,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     boolean all = false;
                     if (CollUtil.isEmpty(taskList1)) {
                         if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1()
-                                .equals("5")) {//定额
-                            //这个用户还没有做任务时,积分值设为0
+                                .equals("5")) {// 定额
+                            // 这个用户还没有做任务时,积分值设为0
                             int userScore = Integer.parseInt(wmScorePackageStatus.getUserScore());
                             wmScorePackageStatus.setUserScore("0");
                             // wmScorePackage.setScore(wmScorePackage.getScore() - Integer.parseInt(wmScorePackageStatus.getUserScore()));
@@ -1301,16 +1302,16 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                             // 已终止
                             wmScorePackage.setScorePackageStatus("6");
                             pickedButNotSubmitted = true;
-                        } else {//2,3 定量
-                            //定量收回任务个数
-                            //定量收回任务个数
+                        } else {// 2,3 定量
+                            // 定量收回任务个数
+                            // 定量收回任务个数
                             wmScorePackageStatus.setTaskNum(0);
                         }
-                        wmScorePackage.setPackageFinishStatus("1");//已完成
+                        wmScorePackage.setPackageFinishStatus("1");// 已完成
 
                     } else {
                         if (wmScorePackage.getPackageType1().equals("1") || wmScorePackage.getPackageType1()
-                                .equals("5")) {//定额
+                                .equals("5")) {// 定额
                             int sum;
                             if (wmScorePackage.getRelationScoreId() == null) {
                                 // 审核不通过的不计入
@@ -1319,7 +1320,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                                         .mapToInt(WmTask::getScore)
                                         .sum();
                                 res = Integer.parseInt(wmScorePackageStatus.getUserScore()) - sum;
-                                if (res > 0) {//个人积分包值大于任务积分值
+                                if (res > 0) {// 个人积分包值大于任务积分值
                                     wmScorePackageStatus.setUserScore(sum + "");
                                     resSum += res;
                                 }
@@ -1330,7 +1331,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                                         .mapToInt(WmTask::getScore)
                                         .sum();
                                 if (passed == 0) {
-                                    wmScorePackage.setScorePackageStatus("6");//已终止
+                                    wmScorePackage.setScorePackageStatus("6");// 已终止
                                     wmScorePackage.setEnableFlag("1");
                                     taskList1.forEach(task -> {
                                         task.setEnableFlag("1");
@@ -1338,7 +1339,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                                             task.setTaskStatus("4");
                                         }
 
-                                        //task.setReportDrugApprovalStatus(REPORT_STATUS_END.getType());
+                                        // task.setReportDrugApprovalStatus(REPORT_STATUS_END.getType());
                                         task.setReportDrugApprovalOpinion(ReportEnum.APPROVAL_OPINION_NO.getType());
                                         wmTaskMapper.updateById(task);
                                     });
@@ -1355,7 +1356,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                                 }
 
                                 res = sum = passed;
-                                if (res > 0) {//个人积分包值大于任务积分值
+                                if (res > 0) {// 个人积分包值大于任务积分值
                                     wmScorePackageStatus.setUserScore(sum + "");
                                     resSum += (wmScorePackage.getScore() - res);
                                 } else {
@@ -1364,18 +1365,18 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                             }
 
 
-                        } else {//2,3 定量
-                            //定量收回任务个数
+                        } else {// 2,3 定量
+                            // 定量收回任务个数
                             wmScorePackageStatus.setTaskNum(taskList1.size());
                         }
 
                         List<String> statusList = taskList1.stream()
                                 .map(WmTask::getTaskStatus)
                                 .collect(Collectors.toList());
-                        if (statusList.contains("2")) {//有未审核通过的任务,积分包状态还是进行中
-                            wmScorePackage.setScorePackageStatus("3");//进行中
-                        } else {//没有未审核通过的任务,已完成
-                            wmScorePackage.setPackageFinishStatus("1");//已完成
+                        if (statusList.contains("2")) {// 有未审核通过的任务,积分包状态还是进行中
+                            wmScorePackage.setScorePackageStatus("3");// 进行中
+                        } else {// 没有未审核通过的任务,已完成
+                            wmScorePackage.setPackageFinishStatus("1");// 已完成
                         }
 
                     }
@@ -1384,13 +1385,13 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     if (all) {
                         wmScorePackageStatus.setEnableType("1");
                     } else {
-                        //更新接单数据
+                        // 更新接单数据
                         wmScorePackageStatus.setEnableType("2");
                     }
                     wmScorePackageStatusService.updateById(wmScorePackageStatus);
 
                 }
-                //更新积分包的积分总值
+                // 更新积分包的积分总值
                 if (resSum > 0) {
                     if (!pickedButNotSubmitted) {
                         wmScorePackage.setScore(wmScorePackage.getScore() - resSum);
@@ -1400,20 +1401,20 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                         wmScorePackage.setUserScore(String.valueOf(Integer.parseInt(wmScorePackage.getUserScore()) - resSum));
                     }
                 }
-            } else {//没有人接单审核通过
-                //积分包
+            } else {// 没有人接单审核通过
+                // 积分包
                 wmScorePackage.setUserNum(0);
                 wmScorePackage.setTaskNum(0);
-                wmScorePackage.setPackageFinishStatus("1");//已完成
-                wmScorePackage.setScorePackageStatus("4");//已完成待结算
-                //积分包承接对象为0的时候,返回积分包积分且积分包状态改为已终止
+                wmScorePackage.setPackageFinishStatus("1");// 已完成
+                wmScorePackage.setScorePackageStatus("4");// 已完成待结算
+                // 积分包承接对象为0的时候,返回积分包积分且积分包状态改为已终止
                 if (StringUtil.isNotEmpty(wmScorePackage.getRelationScoreId())) {
                     resSum = wmScorePackage.getScore();
-                    wmScorePackage.setScorePackageStatus("6");//积分包已终止
+                    wmScorePackage.setScorePackageStatus("6");// 积分包已终止
                 }
             }
-            wmScorePackage.setIsReceive("1");//不允许接单
-            wmScorePackage.setTaskAddFlag("0");//不允许新增任务
+            wmScorePackage.setIsReceive("1");// 不允许接单
+            wmScorePackage.setTaskAddFlag("0");// 不允许新增任务
             this.updateById(wmScorePackage);
             if (resSum > 0 && wmScorePackage.getPackageType1().equals("1")) {
                 updateRelationScore(wmScorePackage.getId(), resSum);
@@ -1540,14 +1541,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (StringUtil.isEmpty(wmScorePackage.getRelationScoreId())) {
             wmScorePackage.setRelationScoreId("-1");
         }
-        //查询有效任务类型
+        // 查询有效任务类型
         List<WmScoreTaskType> taskTypelist = wmScoreTaskTypeMapper.getScoreTaskTypeByScoreId(wmScorePackage.getId());
         wmScorePackage.setTaskTypeList1(taskTypelist);
         Set taskTypeSet = taskTypelist.stream().map(WmScoreTaskType::getTaskTypeId).collect(Collectors.toSet());
         wmScorePackage.setTaskTypeSet(taskTypeSet);
         wmScorePackage.setTaskTypeId(taskTypelist.get(0).getTaskTypeId());
         if (wmScorePackage.getTypeid().equals("3") || wmScorePackage.getTypeid().equals("5")) {
-            //查询接单对象(3-全职,5-招商经理)
+            // 查询接单对象(3-全职,5-招商经理)
             List<WmScorePackageStatus> staList = wmScorePackageStatusService.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
                     .eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId())
                     .eq(WmScorePackageStatus::getDelFlag, "0"));
@@ -1599,11 +1600,11 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     @Transactional(rollbackFor = Exception.class)
     public R<?> updateEasy(WmScorePackage wmScorePackage) {
         if (null != wmScorePackage.getDelFlag() && wmScorePackage.getDelFlag().equals("1")) {
-            WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
+            WmScorePackage relationScorePackage = new WmScorePackage();// 关联积分包
             wmScorePackage = wmScorePackageMapper.selectById(wmScorePackage.getId());
             wmScorePackage.setDelFlag("1");
 
-            if (wmScorePackage.getPackageType1().equals("1")) {//定额
+            if (wmScorePackage.getPackageType1().equals("1")) {// 定额
                 if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId())) {
                     relationScorePackage = this.getById(wmScorePackage.getRelationScoreId());
                     relationScorePackage.setKfpjf(relationScorePackage.getKfpjf() + wmScorePackage.getScore());
@@ -1623,7 +1624,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
     @Transactional(rollbackFor = Exception.class)
     public R updateWmScorePackage(WmScorePackage wmScorePackage) {
 
-        if (wmScorePackage.getPackageType1().equals("1")) {//定额
+        if (wmScorePackage.getPackageType1().equals("1")) {// 定额
             if (!StringUtil.isEmpty(wmScorePackage.getUserScore()) && wmScorePackage.getUserNum() > 0) {
                 wmScorePackage.setScore(Integer.valueOf(wmScorePackage.getUserScore()) * wmScorePackage.getUserNum());
             }
@@ -1646,8 +1647,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         // 积分值相比修改前的变动(相对于积分余额,增加则为负-消耗,减少则为正-回收)
         int changeScore = oldScorePackage.getScore() - wmScorePackage.getScore();
 
-        WmScorePackage relationScorePackage = new WmScorePackage();//关联积分包
-        //判断预积分包值不能大于可分配积分值
+        WmScorePackage relationScorePackage = new WmScorePackage();// 关联积分包
+        // 判断预积分包值不能大于可分配积分值
         if (!StringUtil.isEmpty(wmScorePackage.getRelationScoreId()) && !wmScorePackage.getRelationScoreId()
                 .equals("-1")) {
             WmScorePackage wmScorePackage1 = new WmScorePackage();
@@ -1663,7 +1664,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 if (changeScore < 0 && Math.abs(changeScore) > kfpjf) {
                     return R.failed("修改后增加的积分值不能大于可分配积分值");
                 }
-                //更新可分配积分包值
+                // 更新可分配积分包值
                 if (changeScore > 0 || (changeScore < 0 && Math.abs(changeScore) <= kfpjf)) {
                     relationScorePackage.setId(wmScorePackage.getRelationScoreId());
                     relationScorePackage.setKfpjf(kfpjf - changeScore);
@@ -1678,7 +1679,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
             wmScorePackage.setRelationScoreId(null);
             SysDept dept = new SysDept();
-            //关联积分包为空,需要判断是不是是不是药企
+            // 关联积分包为空,需要判断是不是是不是药企
             if (wmScorePackage.getRelatedService() == null) {
                 dept = sysDeptMapper.selectById(currentUser.getDeptId());
             } else {
@@ -1689,12 +1690,12 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             if (dept.getDeptId() == null) {
                 return R.failed("未查询到当前登陆人的");
             } else {
-                if (dept.getLevel() == 2) {//药企
+                if (dept.getLevel() == 2) {// 药企
                     WmDaDrugEnt wmDaDrugEnt = wmDaDrugEntService.getOne(Wrappers.<WmDaDrugEnt>lambdaQuery()
                             .eq(WmDaDrugEnt::getDeptId, dept.getDeptId()));
                     wmScorePackage.setDrugEntId(wmDaDrugEnt.getId());
                     wmScorePackage.setRuleId(this.queryRuleID(wmDaDrugEnt, null));
-                } else if (dept.getLevel() == 3 || dept.getLevel() == 4) {//一级cso
+                } else if (dept.getLevel() == 3 || dept.getLevel() == 4) {// 一级cso
                     WmDaAgent wmDaAgent = wmDaAgentService.getOne(Wrappers.<WmDaAgent>lambdaQuery()
                             .eq(WmDaAgent::getDeptId, dept.getDeptId()));
                     wmScorePackage.setRuleId(this.queryRuleID(null, wmDaAgent));
@@ -1715,7 +1716,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             wmScorePackage.setBelongDate(relationScore.getBelongDate());
         }
 
-        //保存接单对象,全职学术推广员,允许选多个
+        // 保存接单对象,全职学术推广员,允许选多个
         wmScorePackageStatusService.delStatusByPackageId(wmScorePackage.getId());
         if (wmScorePackage.getTypeid().equals("3") || wmScorePackage.getTypeid().equals("5")) {
             List<String> userList = wmScorePackage.getUserList();
@@ -1728,9 +1729,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     wmScorePackageStatus.setPackageId(wmScorePackage.getId());
                     UserVO user = sysUserMapper.getUserVoById(Integer.valueOf(userId));
                     wmScorePackageStatus.setDeptId(user.getDeptId() + "");
-                    if (wmScorePackage.getPackageType1().equals("1")) {//定额包
+                    if (wmScorePackage.getPackageType1().equals("1")) {// 定额包
                         wmScorePackageStatus.setUserScore(wmScorePackage.getScore() + "");
-                    } else {//定量包
+                    } else {// 定量包
                         wmScorePackageStatus.setTaskNum(wmScorePackage.getTaskNum());
                     }
                     wmScorePackageStatus.setEnableFlag("0");
@@ -1753,14 +1754,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 || wmScorePackage.getPackageType2().equals("2")) {
             wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery()
                     .eq(WmScoreTaskType::getScoreId, wmScorePackage.getId()));
-            //结算包
+            // 结算包
             WmScoreTaskType wmScoreTaskType = new WmScoreTaskType();
             wmScoreTaskType.setScoreId(wmScorePackage.getId());
             wmScoreTaskType.setTaskTypeId(wmScorePackage.getTaskTypeId());
             wmScoreTaskType.setType("2");
             wmScoreTaskTypeMapper.insert(wmScoreTaskType);
         } else {
-            //保存有效任务类型
+            // 保存有效任务类型
             List<WmTaskTypeTree> tasktypeList = wmScorePackage.getTaskTypeList();
             if (tasktypeList != null && tasktypeList.size() > 0) {
                 wmScoreTaskTypeMapper.delete(Wrappers.<WmScoreTaskType>lambdaQuery()
@@ -1821,16 +1822,16 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 }
             }
         }
-        if (wmScorePackage.getTypeid() != null && wmScorePackage.getTypeid().equals("4")) {//兼职学术推广员
+        if (wmScorePackage.getTypeid() != null && wmScorePackage.getTypeid().equals("4")) {// 兼职学术推广员
             wmScorePackage.setXxdbId(null);
         }
-        if ("3".equals(wmScorePackage.getTypeid()) || "5".equals(wmScorePackage.getTypeid())) {//全职学术推广员
-            wmScorePackage.setIsReceive("1");//不允许接单
-            wmScorePackage.setScorePackageStatus("3");//全职学术推广员不需要审核,所有状态直接是进行中
+        if ("3".equals(wmScorePackage.getTypeid()) || "5".equals(wmScorePackage.getTypeid())) {// 全职学术推广员
+            wmScorePackage.setIsReceive("1");// 不允许接单
+            wmScorePackage.setScorePackageStatus("3");// 全职学术推广员不需要审核,所有状态直接是进行中
 
         } else if ("4".equals(wmScorePackage.getTypeid())) {
-            wmScorePackage.setIsReceive("0");//允许接单
-            wmScorePackage.setScorePackageStatus("1");//已分派待申领
+            wmScorePackage.setIsReceive("0");// 允许接单
+            wmScorePackage.setScorePackageStatus("1");// 已分派待申领
         }
         if (PackageTypeEnum.TYPE1_HCP_PACKAGE.val().equals(wmScorePackage.getPackageType1())) {
             // 患者教育,固定只能一人领取
@@ -1854,7 +1855,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     .set(WmScorePackage::getRelationScoreId, null));
         }
 
-        //更新关联积分包可分配积分值
+        // 更新关联积分包可分配积分值
         if (!StringUtil.isEmpty(relationScorePackage.getId())) {
             this.updateById(relationScorePackage);
         }
@@ -1968,9 +1969,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
         // todo
         //// 查询结算信息
-        //List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+        // List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
         //		.in(WmScorePackageSettleNote::getPackageId, packageIds));
-        //Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
+        // Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
         //		.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
 
         Map<String, String> relationPackageMap = new HashMap<>();
@@ -2008,7 +2009,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 .collect(Collectors.toMap(item -> Integer.parseInt(item.getValue()), SysDictItem::getLabel)));
 
         // todo
-        //this.settleDetail(settleList, statusMap, users, settleNoteMap, relationPackageMap, deptMap, packageUserScopeMap);
+        // this.settleDetail(settleList, statusMap, users, settleNoteMap, relationPackageMap, deptMap, packageUserScopeMap);
 
         return settleListPage;
     }
@@ -2038,9 +2039,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
             ouPut.setUserNames(userNames);
             // todo
             // 查询结算成功时间
-            //List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.eq(WmScorePackageSettleNote::getPackageId, ouPut.getId()));
-            //if (CollectionUtil.isNotEmpty(packageSettleNoteList)) {
+            // if (CollectionUtil.isNotEmpty(packageSettleNoteList)) {
             //	WmScorePackageSettleNote settleNote = packageSettleNoteList.get(0);
             //	LocalDateTime notifyTime = settleNote.getNotifyTime();
             //	if (notifyTime != null) {
@@ -2112,12 +2113,12 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     .boxed()
                     .collect(Collectors.toList());
             // todo
-            //List<WmScorePackageSettleNote> noteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // List<WmScorePackageSettleNote> noteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.in(WmScorePackageSettleNote::getPackageId, idList)
             //		.eq(WmScorePackageSettleNote::getSettleNoteStatus, "1"));
 
             BigDecimal totalSettledScore = new BigDecimal("0");
-            //if (CollectionUtil.isNotEmpty(noteList)) {
+            // if (CollectionUtil.isNotEmpty(noteList)) {
             //	for (WmScorePackageSettleNote note : noteList) {
             //		totalSettledScore = totalSettledScore.add(note.getSettleAmount());
             //	}
@@ -2313,7 +2314,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                     .count();
 
 
-            //获取上级包
+            // 获取上级包
             WmScorePackage relationScorePackage = wmScorePackageMapper.selectOne(Wrappers.<WmScorePackage>lambdaQuery()
                     .eq(WmScorePackage::getId, scorePackage.getRelationScoreId()).last("limit 1"));
 
@@ -2353,10 +2354,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
             // todo
             // 结算记录
-            //WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId()).last("limit 1"));
 
-            //if (note != null) {
+            // if (note != null) {
             //	scorePackage.setNotifyDate(note.getNotifyTime());
             //}
 
@@ -2366,10 +2367,10 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                         .eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId());
 
                 // todo
-                //int wsNum = settleNoteMapper.selectCount(wrapper.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
-                //int asNum = settleNoteMapper.selectCount(wrapper.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
-                //scorePackage.setWsTaskNum(wsNum);
-                //scorePackage.setAsTaskNum(asNum);
+                // int wsNum = settleNoteMapper.selectCount(wrapper.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
+                // int asNum = settleNoteMapper.selectCount(wrapper.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
+                // scorePackage.setWsTaskNum(wsNum);
+                // scorePackage.setAsTaskNum(asNum);
 
             }
 
@@ -2544,7 +2545,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 .count();
 
 
-        //获取上级包
+        // 获取上级包
         WmScorePackage relationScorePackage = wmScorePackageMapper.selectOne(Wrappers.<WmScorePackage>lambdaQuery()
                 .eq(WmScorePackage::getId, scorePackage.getRelationScoreId()).last("limit 1"));
 
@@ -2590,11 +2591,11 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
         // todo
         // 结算记录
-        //WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+        // WmScorePackageSettleNote note = settleNoteMapper.selectOne(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
         //		.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId()).last("limit 1"));
 
         scorePackage.setSettleAmount(null);
-        //if (note != null) {
+        // if (note != null) {
         //	scorePackage.setNotifyDate(note.getNotifyTime());
         //	scorePackage.setSubToGigTime(note.getSubToGigTime());
         //	scorePackage.setSettleStatus(note.getSettleNoteStatus());
@@ -2606,14 +2607,14 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         if (packageType2 == 2) {
 
             // todo
-            //int wsNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // int wsNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
             //		.in(WmScorePackageSettleNote::getSettleNoteStatus, 2, 9));
-            //int asNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+            // int asNum = settleNoteMapper.selectCount(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
             //		.eq(WmScorePackageSettleNote::getPackageId, scorePackage.getId())
             //		.eq(WmScorePackageSettleNote::getSettleNoteStatus, 1));
-            //scorePackage.setWsTaskNum(wsNum);
-            //scorePackage.setAsTaskNum(asNum);
+            // scorePackage.setWsTaskNum(wsNum);
+            // scorePackage.setAsTaskNum(asNum);
 
         }
 
@@ -2814,7 +2815,7 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 .count();
 
 
-        //获取上级包
+        // 获取上级包
         WmScorePackage relationScorePackage = parentPackageNameMap.get(scorePackage.getRelationScoreId());
 
         // 类型标签
@@ -3875,9 +3876,9 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
 
         // todo
         // 查询结算信息
-        //List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+        // List<WmScorePackageSettleNote> packageSettleNoteList = settleNoteMapper.selectList(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
         //		.in(WmScorePackageSettleNote::getPackageId, packageIds));
-        //Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
+        // Map<String, List<WmScorePackageSettleNote>> settleNoteMap = packageSettleNoteList.stream()
         //		.collect(Collectors.groupingBy(WmScorePackageSettleNote::getPackageId));
 
         Map<String, String> relationPackageMap = new HashMap<>();
@@ -3914,6 +3915,23 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
         this.baseMapper.pageForSupervision(page, pkgName, supervision, finalEntIds);
     }
 
+    @Override
+    public Map<String, Object> indPkgStat(HnqzUser user) {
+        Map<String, Object> records = new HashMap<>();
+        records.put("id", 123);
+        records.put("pkgName", "测试计划");
+        records.put("pkgScore", 123456);
+        records.put("pickerName", "测试服务提供方1");
+        records.put("createTime", LocalDateTime.now());
+        records.put("taskPassedPercentage", "30%");
+        records.put("taskPassedScore", 234);
+        Map<String, String> task = new HashMap<>(1);
+        task.put("分享文章", "10%");
+        records.put("eachTaskTypeRate", task);
+
+        return records;
+    }
+
     /**
      * 结算数据字段拼接转换
      *
@@ -3976,8 +3994,8 @@ public class WmScorePackageServiceImpl extends ServiceImpl<WmScorePackageMapper,
                 if (StringUtils.isBlank(ouPut.getSettleStatus())) {
                     ouPut.setSettleStatus(String.valueOf(settleNote.getSettleNoteStatus()));
                 }
-                //ouPut.setSubjectLocation(settleNote.getSubjectLocation());
-                //if (settleNote.getSubjectLocation() != null) {
+                // ouPut.setSubjectLocation(settleNote.getSubjectLocation());
+                // if (settleNote.getSubjectLocation() != null) {
                 //	ouPut.setSubjectLocationName(settleNote.getSubjectLocation().getDescription());
                 //}
                 ouPut.setSubToGigTime(settleNote.getSubToGigTime());