Forráskód Böngészése

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

shc 4 hónapja
szülő
commit
ff15d6ddd7

+ 7 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/WmScorePackageInfoExcelModel.java

@@ -84,6 +84,13 @@ public class WmScorePackageInfoExcelModel implements Serializable {
     private String score;
 
 
+    /**
+     *
+     */
+    @ColumnWidth(16)
+    @ExcelProperty("任务总值(服务商拆分至代表)")
+    private String scoreTasks;
+
     // tt -> task_type
     // ~53============================
 

+ 12 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/pkg/WmScorePackageControllerV2.java

@@ -59,14 +59,20 @@ public class WmScorePackageControllerV2 {
   @ResponseExcel(
       name = "pkgInfoExcel",
       sheets = {@Sheet(sheetName = "执行包信息")})
-  public List<WmScorePackageInfoExcelModel> exportPkgInfo() {
-
+  public List<WmScorePackageInfoExcelModel> exportPkgInfo(
+    @RequestParam(value = "startDate", required = false) LocalDate startDate, 
+    @RequestParam(value = "startDate", required = false) LocalDate endDate
+    ) {
     LocalDate today = LocalDate.now();
+    if(endDate == null) {
+      endDate = today;
+    }
+    if(startDate == null) {
+      // startDate = LocalDate.of(today.getYear(), (today.getMonthValue() - 1) / 3 * 3 + 1, 1);  // first day of Quarter
+      startDate = today.minusMonths(12); // temporary solution
+    }
 
-    // 获取三个月内的数据
-    LocalDate startDate = today.minusMonths(12);
-
-    return packageManager.exportPkgInfo(startDate, today);
+    return packageManager.exportPkgInfo(startDate, endDate);
   }
 
   @GetMapping(value = "/pkg/avail")

+ 40 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/WmPackageManager.java

@@ -16,6 +16,7 @@ import com.qunzhixinxi.hnqz.admin.api.dto.WmPkgDTO.OnStop;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysAreaEntity;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysCheckChainNodeCheckHistory;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysPlanPkg;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUserDrug;
@@ -28,12 +29,14 @@ import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTask;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
 import com.qunzhixinxi.hnqz.admin.api.model.excel.WmScorePackageInfoExcelModel;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmDaDrugEntDrugtableMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmScorePackageStatusMapper;
 import com.qunzhixinxi.hnqz.admin.mapper.WmTaskMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysAreaEntityService;
 import com.qunzhixinxi.hnqz.admin.service.SysCheckChainNodeCheckHistoryService;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptRelationService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
 import com.qunzhixinxi.hnqz.admin.service.SysImplementPlanService;
@@ -60,6 +63,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -105,6 +109,7 @@ public class WmPackageManager {
   private final SysDeptService deptService;
   private final WmDaDrugEntDrugtableMapper wmDaDrugEntDrugtableMapper;
   private final WmPackageTaskTypeQtyService packageTaskTypeQtyService;
+  private final SysDeptRelationMapper sysDeptRelationMapper;
 
   /**
    * 创建执行包兑付通知
@@ -546,6 +551,8 @@ public class WmPackageManager {
     ignoreIds.add(-1020826);
     ignoreIds.add(-1019986);
 
+    Set<Integer> operatorRoleIds = new HashSet<>(SecurityUtils.getRoles());
+
     // 获取所有的企业
     List<SysDept> depts =
         deptService
@@ -561,13 +568,38 @@ public class WmPackageManager {
     }
 
     // 分别过滤区域和服务商
+    List<Integer> parentDeptIds = operatorRoleIds.contains(37) ? //服务商的区域ID
+        sysDeptRelationMapper.selectList(
+            Wrappers.<SysDeptRelation>lambdaQuery()
+                .ne(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
+                .eq(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
+            .stream().map(SysDeptRelation::getAncestor).collect(Collectors.toList())
+        : new ArrayList<>();
+    if (operatorRoleIds.contains(37) && CollUtil.isEmpty(parentDeptIds)) {
+      throw new RuntimeException("没有找到对应的区域");
+    }
+    List<Integer> childDeptIds = operatorRoleIds.contains(4) ? //区域的服务商ID
+        sysDeptRelationMapper.selectList(
+            Wrappers.<SysDeptRelation>lambdaQuery()
+                .eq(SysDeptRelation::getAncestor, SecurityUtils.getUser().getDeptId())
+                .ne(SysDeptRelation::getDescendant, SecurityUtils.getUser().getDeptId()))
+            .stream().map(SysDeptRelation::getDescendant).collect(Collectors.toList())
+        : new ArrayList<>();
+    if (operatorRoleIds.contains(4) && CollUtil.isEmpty(childDeptIds)) {
+      throw new RuntimeException("没有找到对应的服务商");
+    }
+
     Map<Integer, SysDept> dis =
         depts.stream()
             .filter(d -> d.getLevel() == 3)
+            .filter(d -> !operatorRoleIds.contains(4) || operatorRoleIds.contains(4) && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) //区域管理员
+            .filter(d -> !operatorRoleIds.contains(37) || operatorRoleIds.contains(37) && parentDeptIds.contains(d.getDeptId())) //服务商管理员
             .collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
     Map<Integer, SysDept> service =
         depts.stream()
             .filter(d -> d.getLevel() == 4)
+            .filter(d -> !operatorRoleIds.contains(4) || operatorRoleIds.contains(4) && childDeptIds.contains(d.getDeptId())) //区域管理员
+            .filter(d -> !operatorRoleIds.contains(37) || operatorRoleIds.contains(37) && d.getDeptId().equals(SecurityUtils.getUser().getDeptId())) //服务商管理员
             .collect(Collectors.toMap(SysDept::getDeptId, Function.identity()));
 
     if (CollUtil.isEmpty(dis) || CollUtil.isEmpty(service)) {
@@ -708,7 +740,9 @@ public class WmPackageManager {
                   WmScorePackageInfoExcelModel model = new WmScorePackageInfoExcelModel();
                   model.setPkgId(pkg.getId());
                   model.setPkgName(pkg.getScorePackageName());
-                  model.setScore(String.valueOf(pkg.getScore()));
+                  if(!operatorRoleIds.contains(37)) {
+                    model.setScore(String.valueOf(pkg.getScore()));
+                  }
 
                   // 父级包
                   WmScorePackage wmScorePackages = ppMap.get(pkg.getRelationScoreId());
@@ -934,6 +968,7 @@ public class WmPackageManager {
                     int tt4dist = 0;
                     int tt64dist = 0;
                     int tt19dist = 0;
+                    long scoreTasks = 0;
 
                     for (String cPkgId : cPkgIdList) {
                       List<WmPackageTaskTypeQty> packageTaskTypeQtyList =
@@ -945,6 +980,8 @@ public class WmPackageManager {
                       for (WmPackageTaskTypeQty packageTaskTypeQty : packageTaskTypeQtyList) {
                         String taskTypeName = packageTaskTypeQty.getTaskTypeName();
 
+                        scoreTasks += packageTaskTypeQty.getPrice() * packageTaskTypeQty.getQty();
+
                         if (StrUtil.equals(taskTypeName, "基础拜访")) {
                           tt53dist += packageTaskTypeQty.getQty();
                         }
@@ -1003,6 +1040,8 @@ public class WmPackageManager {
                       }
                     }
 
+                    model.setScoreTasks(String.valueOf(scoreTasks));
+
                     model.setTt53dist(String.valueOf(tt53dist));
                     model.setTt52dist(String.valueOf(tt52dist));
                     model.setTt51dist(String.valueOf(tt51dist));