Ver código fonte

feat: 企业管理-用于bc总负责人

lixuesong 1 ano atrás
pai
commit
1f3b7776d7

+ 6 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysDept.java

@@ -158,4 +158,10 @@ public class SysDept extends Model<SysDept> {
 	 */
 	private UpmsType.FinancialReviewType financialReviewType;
 
+	/**
+	 * csm负责人
+	 */
+	@TableField(exist = false)
+	private String csmNames;
+
 }

+ 111 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysDeptController.java

@@ -1,14 +1,22 @@
 package com.qunzhixinxi.hnqz.admin.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptCsm;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDrugEnt;
 import com.qunzhixinxi.hnqz.admin.entity.WmDeptRegulations;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
+import com.qunzhixinxi.hnqz.admin.enums.DeptLevelEnum;
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptCsmMapper;
+import com.qunzhixinxi.hnqz.admin.mapper.SysUserMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptRelationService;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.WmDaAgentService;
@@ -32,6 +40,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -56,6 +66,10 @@ public class SysDeptController {
 
 	private final WmDeptRegulationsService wmDeptRegulationsService;
 
+	private final SysDeptCsmMapper sysDeptCsmMapper;
+
+	private final SysUserMapper sysUserMapper;
+
 	/**
 	 * 获取登录用户企业的有效期
 	 *
@@ -475,12 +489,102 @@ public class SysDeptController {
 		return R.ok(list);
 	}
 
+	/**
+	 * 分页查询企业-用于BC总负责人
+	 *
+	 * @param name    企业名称
+	 * @param csmName 负责人
+	 * @param level   企业类型(2-药企,3-CSO,4-CSO,5-其他)
+	 * @return {@link R}<{@link ?}> 结果
+	 */
+	@GetMapping("/page-dept-for-bc")
+	public R<IPage<SysDept>> pageDeptForCsm(Page<SysDept> page, String name, String csmName, Integer level) {
+		LambdaQueryWrapper<SysDept> queryWrapper = Wrappers.lambdaQuery();
+		if (StrUtil.isNotBlank(name)) {
+			queryWrapper.like(SysDept::getName, name);
+		}
+		if (StrUtil.isNotBlank(csmName)) {
+			List<SysUser> users = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
+					.eq(SysUser::getRealname, csmName));
+			if (CollUtil.isEmpty(users)) {
+				return R.ok(page);
+			}
+			Set<Integer> userIds = users.stream().map(SysUser::getUserId).collect(Collectors.toSet());
+			List<SysDeptCsm> deptCsms = sysDeptCsmMapper.selectList(Wrappers.<SysDeptCsm>lambdaQuery()
+					.in(SysDeptCsm::getUserId, userIds));
+			if (CollUtil.isEmpty(deptCsms)) {
+				return R.ok(page);
+			}
+			Set<Integer> deptIds = deptCsms.stream().map(SysDeptCsm::getDeptId).collect(Collectors.toSet());
+			queryWrapper.in(SysDept::getDeptId, deptIds);
+		}
+		if (level != null) {
+			queryWrapper.eq(SysDept::getLevel, level);
+		}
+
+		queryWrapper.ne(SysDept::getLevel, DeptLevelEnum.ADMIN.getVal());
+		sysDeptService.page(page, queryWrapper);
+
+		List<SysDept> records = page.getRecords();
+		if (CollUtil.isEmpty(records)) {
+			return R.ok(page);
+		}
+
+		records.forEach(record -> {
+			// 负责人
+			List<SysDeptCsm> deptCsms = sysDeptCsmMapper.selectList(Wrappers.<SysDeptCsm>lambdaQuery()
+					.eq(SysDeptCsm::getDeptId, record.getDeptId()));
+			if (CollUtil.isNotEmpty(deptCsms)) {
+				Set<Integer> userIds = deptCsms.stream().map(SysDeptCsm::getUserId).collect(Collectors.toSet());
+				List<SysUser> users = sysUserMapper.selectBatchIds(userIds);
+				record.setCsmNames(users.stream().map(SysUser::getRealname).collect(Collectors.joining(";")));
+			}
+		});
+
+		return R.ok(page);
+	}
+
+	/**
+	 * 将CMS分配给部门
+	 *
+	 * @param params 参数
+	 * @return {@link R}<{@link ?}> 结果
+	 */
+	@SysLog("将CMS分配给部门")
+	@PostMapping("/assign-cms-to-dept")
+	public R<?> assignCmsToDept(@RequestBody Map<String, Object> params) {
+		List<Integer> cmsUserIds = (List<Integer>) params.get("userIds");
+		Integer deptId = (Integer) params.get("deptId");
+		if (CollUtil.isEmpty(cmsUserIds) || deptId == null) {
+			return R.failed("userIds和deptId必填");
+		}
+
+		cmsUserIds.forEach(userId -> {
+			Integer count = sysDeptCsmMapper.selectCount(Wrappers.<SysDeptCsm>lambdaQuery()
+					.eq(SysDeptCsm::getDeptId, deptId)
+					.eq(SysDeptCsm::getUserId, userId));
+			if (count <= 0) {
+				SysUser user = sysUserMapper.selectById(userId);
+				SysDeptCsm insert = new SysDeptCsm();
+				insert.setDeptId(deptId);
+				insert.setUserId(userId);
+				insert.setCsmName(user.getRealname());
+				insert.setQrCodeId(" ");
+				insert.setCorpId(" ");
+				sysDeptCsmMapper.insert(insert);
+			}
+		});
+
+		return R.ok(Boolean.TRUE);
+	}
+
 	/**
 	 * 保存部门规章制度
 	 *
 	 * @param list 列表
 	 * @return {@link R}<{@link ?}>
 	 */
+	@SysLog("保存部门规章制度")
 	@PostMapping("/dept-regulations/save")
 	public R<?> saveDeptRegulations(@RequestBody List<WmDeptRegulations> list) {
 		if (CollUtil.isEmpty(list)) {
@@ -507,6 +611,7 @@ public class SysDeptController {
 	 * @param params 参数
 	 * @return {@link R}<{@link ?}> 结果
 	 */
+	@SysLog("更新企业截止时间")
 	@PostMapping("/update-expiry-date")
 	public R<?> updateExpiryDate(@RequestBody Map<String, Object> params) {
 		List<Integer> deptIds = (List<Integer>) params.get("deptIds");
@@ -522,7 +627,12 @@ public class SysDeptController {
 				update.setExpiryDate(LocalDate.parse(expiryDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
 			} else {
 				// 默认延长一年
-				update.setExpiryDate(LocalDate.now().plusYears(1L));
+				SysDept dept = sysDeptService.getById(deptId);
+				if (dept.getExpiryDate() != null) {
+					update.setExpiryDate(dept.getExpiryDate().plusYears(1L));
+				} else {
+					update.setExpiryDate(LocalDate.now().plusYears(1L));
+				}
 			}
 			sysDeptService.updateById(update);
 		}