Commit 7a90bc7cf3af2a573ea12cb7420e846a4b94b886

Authored by 房远帅
1 parent cc04b0e8

楚江ERP:1:判断当前人员是哪个办事处下的;2:客户资信编码生成修改

... ... @@ -41,7 +41,6 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
41 41 import org.springframework.beans.factory.annotation.Autowired;
42 42 import org.springframework.validation.annotation.Validated;
43 43 import org.springframework.web.bind.annotation.*;
44   -
45 44 import javax.annotation.Resource;
46 45 import javax.servlet.http.HttpServletResponse;
47 46 import javax.validation.Valid;
... ...
... ... @@ -360,6 +360,12 @@ public class CustomerCredit extends BaseEntity implements BaseDto {
360 360 private String userId;
361 361
362 362 /**
  363 + * 办事处code(非持久化字段)
  364 + */
  365 + @TableField(exist = false)
  366 + private String deptCode;
  367 +
  368 + /**
363 369 * 创建人ID
364 370 */
365 371 @TableField(fill = FieldFill.INSERT)
... ...
1 1 package com.lframework.xingyun.sc.handlers;
2 2
3 3 import com.lframework.starter.web.core.utils.JsonUtil;
4   -import com.lframework.starter.web.inner.mappers.system.SysUserRoleMapper;
  4 +import com.lframework.starter.web.inner.entity.SysDept;
  5 +import com.lframework.starter.web.inner.entity.SysUserDept;
  6 +import com.lframework.starter.web.inner.service.system.SysDeptService;
5 7 import com.lframework.starter.web.inner.service.system.SysUserDeptService;
6 8 import com.lframework.starter.web.inner.service.system.SysUserRoleService;
7 9 import com.lframework.xingyun.basedata.entity.Workshop;
... ... @@ -9,12 +11,9 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
9 11 import lombok.extern.slf4j.Slf4j;
10 12 import org.apache.commons.collections4.CollectionUtils;
11 13 import org.springframework.stereotype.Component;
12   -
13 14 import javax.annotation.Resource;
14   -import java.util.ArrayList;
15   -import java.util.Collections;
16   -import java.util.List;
17   -import java.util.Map;
  15 +import java.util.*;
  16 +import java.util.stream.Collectors;
18 17
19 18 @Component
20 19 @Slf4j
... ... @@ -26,6 +25,8 @@ public class TransactorHandler {
26 25 private SysUserRoleService sysUserRoleService;
27 26 @Resource
28 27 private WorkshopService workshopService;
  28 + @Resource
  29 + private SysDeptService sysDeptService;
29 30
30 31
31 32 /**
... ... @@ -94,4 +95,115 @@ public class TransactorHandler {
94 95 log.info("================== listByRoleAndWorkshop invoke end, result:{}", JsonUtil.toJsonString(result));
95 96 return result;
96 97 }
  98 +
  99 + /**
  100 + * 判断当前人员是哪个办事处下的
  101 + *
  102 + * @param userId 业务数据创建人/更新人ID
  103 + * @return List<String>
  104 + */
  105 + public String returnDeptCode(String userId) {
  106 + log.info("================== returnDeptCode invoke start, userId:{}", userId);
  107 + List<String> codeList = new ArrayList<>();
  108 + codeList.add("BF");
  109 + codeList.add("CZ");
  110 + codeList.add("DG");
  111 + codeList.add("FS");
  112 + codeList.add("NB");
  113 + codeList.add("SZ");
  114 + codeList.add("WZ");
  115 + codeList.add("ZT");
  116 + List<SysDept> byCodeList = sysDeptService.findByCodeList(codeList);
  117 + List<String> deptIds = byCodeList.stream()
  118 + .map(SysDept::getId)
  119 + .collect(Collectors.toList());
  120 + Map<String, String> codeToIdMap = byCodeList.stream()
  121 + .collect(Collectors.toMap(
  122 + SysDept::getCode,
  123 + SysDept::getId
  124 + ));
  125 +
  126 + Map<String, List<String>> deptChildIdMap = sysDeptService.getDeptChildIdMap(deptIds);
  127 + List<SysUserDept> userDepts = userDeptService.getByUserId(userId);
  128 + //当前人部门
  129 + List<String> userDeptIds = new ArrayList<>();
  130 + if (CollectionUtils.isNotEmpty(userDepts)) {
  131 + userDeptIds = userDepts.stream()
  132 + .map(SysUserDept::getDeptId)
  133 + .collect(Collectors.toList());
  134 + }
  135 + String result = null;
  136 + //北方
  137 + String bf = codeToIdMap.get("BF");
  138 + List<String> bfList = deptChildIdMap.get(bf);
  139 + boolean bfBoolean = hasIntersection(bfList, userDeptIds);
  140 + if (bfBoolean) {
  141 + result = "BF";
  142 + }
  143 + //常州
  144 + String cz = codeToIdMap.get("CZ");
  145 + List<String> czList = deptChildIdMap.get(cz);
  146 + boolean czBoolean = hasIntersection(czList, userDeptIds);
  147 + if (czBoolean) {
  148 + result = "CZ";
  149 + }
  150 + //东莞
  151 + String dg = codeToIdMap.get("DG");
  152 + List<String> dgList = deptChildIdMap.get(dg);
  153 + boolean dgBoolean = hasIntersection(dgList, userDeptIds);
  154 + if (dgBoolean) {
  155 + result = "DG";
  156 + }
  157 + //佛山
  158 + String fs = codeToIdMap.get("FS");
  159 + List<String> fsList = deptChildIdMap.get(fs);
  160 + boolean fsBoolean = hasIntersection(fsList, userDeptIds);
  161 + if (fsBoolean) {
  162 + result = "FS";
  163 + }
  164 + //宁波
  165 + String nb = codeToIdMap.get("NB");
  166 + List<String> nbList = deptChildIdMap.get(nb);
  167 + boolean nbBoolean = hasIntersection(nbList, userDeptIds);
  168 + if (nbBoolean) {
  169 + result = "NB";
  170 + }
  171 + //苏州
  172 + String sz = codeToIdMap.get("SZ");
  173 + List<String> szList = deptChildIdMap.get(sz);
  174 + boolean szBoolean = hasIntersection(szList, userDeptIds);
  175 + if (szBoolean) {
  176 + result = "SZ";
  177 + }
  178 + //温州
  179 + String wz = codeToIdMap.get("WZ");
  180 + List<String> wzList = deptChildIdMap.get(wz);
  181 + boolean wzBoolean = hasIntersection(wzList, userDeptIds);
  182 + if (wzBoolean) {
  183 + result = "WZ";
  184 + }
  185 + //紫铜
  186 + String zt = codeToIdMap.get("ZT");
  187 + List<String> ztList = deptChildIdMap.get(zt);
  188 + boolean ztBoolean = hasIntersection(ztList, userDeptIds);
  189 + if (ztBoolean) {
  190 + result = "ZT";
  191 + }
  192 +
  193 +
  194 + log.info("================== returnDeptCode invoke end, result:{}", result);
  195 + return result;
  196 + }
  197 +
  198 + //判断两个集合是否有交集
  199 + public static <T> boolean hasIntersection(Collection<T> a, Collection<T> b) {
  200 + if (a.isEmpty() || b.isEmpty()) {
  201 + return false;
  202 + }
  203 + // 将较小的集合作为 contains 的目标,提升性能
  204 + Collection<T> smaller = a.size() <= b.size() ? a : b;
  205 + Collection<T> larger = a.size() > b.size() ? a : b;
  206 +
  207 + return larger.stream().anyMatch(smaller::contains);
  208 + }
97 209 }
... ...
... ... @@ -35,6 +35,7 @@ import com.lframework.starter.web.core.annotations.oplog.OpLog;
35 35 import com.lframework.starter.common.utils.Assert;
36 36 import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
37 37 import com.lframework.xingyun.sc.entity.CustomerCreditHistory;
  38 +import com.lframework.xingyun.sc.handlers.TransactorHandler;
38 39 import com.lframework.xingyun.sc.mappers.CustomerCreditMapper;
39 40 import com.lframework.xingyun.sc.service.customer.CorePersonnelHistoryService;
40 41 import com.lframework.xingyun.sc.service.customer.CorePersonnelService;
... ... @@ -94,6 +95,8 @@ public class CustomerCreditServiceImpl extends BaseMpServiceImpl<CustomerCreditM
94 95 private SysUserDeptService sysUserDeptService;
95 96 @Value("${customer.credit.export:/web/service/erp/xingyun/export/templates/}")
96 97 private String exportTemplate;
  98 + @Resource
  99 + private TransactorHandler transactorHandler;
97 100
98 101 @Override
99 102 public PageResult<CustomerCredit> query(Integer pageIndex, Integer pageSize, QueryCustomerCreditVo vo) {
... ... @@ -315,6 +318,8 @@ public class CustomerCreditServiceImpl extends BaseMpServiceImpl<CustomerCreditM
315 318 if (!"IMPORT".equals(vo.getImportType())) {
316 319 // 开启审核
317 320 data.setUserId(SecurityUtil.getCurrentUser().getId());
  321 + String deptCode = transactorHandler.returnDeptCode(SecurityUtil.getCurrentUser().getId());
  322 + data.setDeptCode(deptCode);
318 323 flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, data);
319 324 }
320 325
... ... @@ -906,6 +911,8 @@ public class CustomerCreditServiceImpl extends BaseMpServiceImpl<CustomerCreditM
906 911
907 912 //开启审核
908 913 vo.setUserId(SecurityUtil.getCurrentUser().getId());
  914 + String deptCode = transactorHandler.returnDeptCode(SecurityUtil.getCurrentUser().getId());
  915 + data.setDeptCode(deptCode);
909 916 flowInstanceWrapperService.startInstance(BPM_FLAG, data.getId(), BPM_FLAG, vo);
910 917 }
911 918
... ... @@ -1270,14 +1277,26 @@ public class CustomerCreditServiceImpl extends BaseMpServiceImpl<CustomerCreditM
1270 1277 if (sysUser != null) {
1271 1278 GetSysUserBo getSysUserBo = new GetSysUserBo(sysUser);
1272 1279 //部门名称
1273   - String deptName = getSysUserBo.getDeptName();
1274   - if (StringUtil.isNotEmpty(deptName)) {
1275   - //获取办事处首字母
1276   - String prefixPinyin = getPrefixPinyin(deptName);
1277   - //已使用编号
1278   - Set<String> existingNumbers = customerCreditMapper.getGenerateCode(prefixPinyin);
1279   -
1280   - return generateNextAvailableNumber(prefixPinyin, existingNumbers);
  1280 + List<String> depts = getSysUserBo.getDepts();
  1281 + if (CollectionUtils.isNotEmpty(depts)) {
  1282 + SysDept sysDept = sysDeptService.findById(depts.get(0));
  1283 + String parentId = sysDept.getParentId();
  1284 + if (StringUtil.isNotEmpty(parentId)) {
  1285 + SysDept sysDept1 = sysDeptService.findById(parentId);
  1286 + //获取办事处首字母
  1287 + String prefixPinyin = getPrefixPinyin(sysDept1.getName());
  1288 + //已使用编号
  1289 + Set<String> existingNumbers = customerCreditMapper.getGenerateCode(prefixPinyin);
  1290 +
  1291 + return generateNextAvailableNumber(prefixPinyin, existingNumbers);
  1292 + } else {
  1293 + //获取办事处首字母
  1294 + String prefixPinyin = getPrefixPinyin(sysDept.getName());
  1295 + //已使用编号
  1296 + Set<String> existingNumbers = customerCreditMapper.getGenerateCode(prefixPinyin);
  1297 +
  1298 + return generateNextAvailableNumber(prefixPinyin, existingNumbers);
  1299 + }
1281 1300 } else {
1282 1301 throw new DefaultClientException("部门名称为空");
1283 1302 }
... ...