Sfoglia il codice sorgente

feat: 批量接单审核

shc 3 anni fa
parent
commit
1ed9f8b83a

+ 44 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/WmScorePackageStatusBatch.java

@@ -0,0 +1,44 @@
+package com.qunzhixinxi.hnqz.admin.api.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+/**
+ * {@code WmScorePackageStatusBatch}
+ * <p>
+ * 批量审核领包记录
+ *
+ * @author Hengchen.Sun
+ * @version 1.0.0
+ * @date 2021/11/22 15:11
+ */
+@Data
+public class WmScorePackageStatusBatch implements Serializable {
+
+	/**
+	 * 批量id
+	 */
+	private String batchIds;
+
+	/**
+	 * 审批状态
+	 */
+	private ApprovalStatus status;
+
+
+	@Getter
+	@AllArgsConstructor
+	public enum ApprovalStatus {
+
+		PASSED(1, "通过"),
+		REJECTED(2, "拒绝");
+
+		private final int code;
+
+		private final String message;
+	}
+
+}

+ 40 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageController.java

@@ -2527,6 +2527,8 @@ public class WmScorePackageController {
 		}
 
 		/**
+		 *
+		 *
 		 * 被领取的积分包 不能修改
 		 */
 		WmScorePackageStatus statusQuery = new WmScorePackageStatus();
@@ -3349,6 +3351,44 @@ public class WmScorePackageController {
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 		// 记录历史信息
 		// 缓存记录key
 		String key = String.format(CacheConstants.BATCH_PACKAGE_HISTORY, user.getDeptId(), user.getId());

+ 17 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageStatusController.java

@@ -17,9 +17,11 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatusBatch;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
@@ -170,6 +172,21 @@ public class WmScorePackageStatusController {
 		return wmScorePackageStatusService.approvalStatus( wmScorePackageStatus);
 	}
 
+	/**
+	 * 批量接单审核
+	 * @param statusBatch 批量审批信息
+	 */
+	@PostMapping("/approvalStatus/batch")
+	public R approvalStatusBatch(@RequestBody WmScorePackageStatusBatch statusBatch){
+		if(StrUtil.isEmpty(statusBatch.getBatchIds())){
+			return R.failed("缺少参数ID");
+		}
+		if(statusBatch.getStatus() == null){
+			return R.failed("缺少参数:审批意见");
+		}
+		return R.ok(wmScorePackageStatusService.approvalStatusBatch(statusBatch));
+	}
+
 	/**
 	 * 终止接单--区分全部收回,和部分收回
 	 *

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageStatusService.java

@@ -20,6 +20,7 @@ package com.qunzhixinxi.hnqz.admin.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatusBatch;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
@@ -63,4 +64,11 @@ public interface WmScorePackageStatusService extends IService<WmScorePackageStat
 	 * @return
 	 */
 	List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2);
+
+	/**
+	 * 批量审核
+	 * @param statusBatch 批量审核
+	 * @return 批量审核结果
+	 */
+	Map<String,Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch);
 }

+ 143 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageStatusServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -24,6 +25,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackageStatusBatch;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageStatus;
 import com.qunzhixinxi.hnqz.admin.entity.WmTask;
@@ -34,14 +36,17 @@ 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.WmScorePackageStatusService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -52,6 +57,7 @@ import java.util.stream.Collectors;
  * @author pigx code generator
  * @date 2020-07-17 23:32:01
  */
+@Slf4j
 @Service
 @AllArgsConstructor
 public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageStatusMapper, WmScorePackageStatus> implements WmScorePackageStatusService {
@@ -415,4 +421,141 @@ public class WmScorePackageStatusServiceImpl extends ServiceImpl<WmScorePackageS
 	public List<Map<String, String>> getDeptReceiveUserList(String deptId, String packageType1, String packageType2) {
 		return wmScorePackageStatusMapper.getDeptReceiveUserList(deptId, packageType1, packageType2);
 	}
+
+	/**
+	 * 批量审核
+	 * @param statusBatch 批量审核
+	 * @return 审核结果
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Map<String, Integer> approvalStatusBatch(WmScorePackageStatusBatch statusBatch) {
+		// 封装结果实体
+		Map<String, Integer> result = new HashMap<>(2);
+		result.put("operation", 0);
+		result.put("remain", 0);
+
+		// 获取批量操作id集合
+		List<Integer> idList =
+				StrUtil.split(statusBatch.getBatchIds(), StrUtil.COMMA)
+						.stream()
+						.map(Integer::parseInt)
+						.collect(Collectors.toList());
+
+		for (Integer id : idList) {
+			oneByOne(id, statusBatch.getStatus(), result);
+		}
+
+		return result;
+	}
+
+	private void oneByOne(Integer statusId, WmScorePackageStatusBatch.ApprovalStatus approvalStatus, Map<String, Integer> result) {
+
+		// 获取结果数
+		int operation = result.get("operation");
+		int remain = result.get("remain");
+
+		// 查询领包记录
+		WmScorePackageStatus status = this.getById(statusId);
+
+		// 获取积分包
+		WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(status.getPackageId());
+
+
+		log.warn("开始审批,id:[{}], packageId:[{}]", status, wmScorePackage.getId());
+		//定额
+		if (StrUtil.equals("1", wmScorePackage.getPackageType1())) {
+			//定额包一人一包,所以score=userscore
+			status.setUserScore(String.valueOf(wmScorePackage.getScore()));
+			status.setTaskNum(0);
+		} else {
+			status.setTaskNum(wmScorePackage.getTaskNum());
+			status.setUserScore(String.valueOf(wmScorePackage.getUserScore()));
+		}
+
+		status.setUpdateTime(LocalDateTime.now());
+		status.setUserId(null);
+		this.updateById(status);
+
+		switch (approvalStatus) {
+			case PASSED:
+				//进行中
+				wmScorePackage.setScorePackageStatus("3");
+				// 获取全部的领包记录
+				List<WmScorePackageStatus> sList =
+						this.list(Wrappers.<WmScorePackageStatus>lambdaQuery()
+								.eq(WmScorePackageStatus::getPackageId, wmScorePackage.getId())
+								.eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
+								.eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL)
+						);
+
+				int targetNum = wmScorePackage.getUserNum() == null ? 1 : wmScorePackage.getUserNum();
+				// 如果领取记录不大于可领取数
+				if (sList.size() <= targetNum) {
+					this.update(Wrappers.<WmScorePackageStatus>lambdaUpdate()
+							.set(WmScorePackageStatus::getStatus, "3")//审核不通过
+							.set(WmScorePackageStatus::getTaskAddFlag, "0")//不允许新增任务
+							.eq(WmScorePackageStatus::getPackageId, status.getPackageId())
+							.eq(WmScorePackageStatus::getStatus, "1")
+							.eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
+							.eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL)
+					);
+					wmScorePackage.setUpdateTime(LocalDateTime.now());
+					wmScorePackage.setReceiveDate(LocalDateTime.now());
+					wmScorePackage.setIsReceive("1");//不允许接单
+					wmScorePackageMapper.updateById(wmScorePackage);
+					operation += 1;
+				} else {
+					remain += 1;
+				}
+
+				break;
+			case REJECTED:
+				status.setTaskAddFlag("0");//不可以新增任务
+				status.setUserId(null);
+				this.updateById(status);
+				operation += 1;
+				break;
+			default:
+				remain += 1;
+
+		}
+
+
+		int total = this.count(Wrappers.<WmScorePackageStatus>lambdaQuery()
+				.eq(WmScorePackageStatus::getPackageId, status.getPackageId())
+				.eq(WmScorePackageStatus::getStatus, "2")
+				.eq(WmScorePackageStatus::getDelFlag, CommonConstants.STATUS_NORMAL)
+				.eq(WmScorePackageStatus::getEnableFlag, CommonConstants.STATUS_NORMAL)
+		);
+
+		//有人接单成功
+		if (total >= 1) {
+			wmScorePackage.setScorePackageStatus("3");//进行中
+			if (total >= wmScorePackage.getUserNum()) {//人数已满
+				wmScorePackage.setIsReceive("1");//不允许接单
+			}
+		}
+		//没有人接单成功
+		else {
+
+			int total1 =
+					this.count(Wrappers.<WmScorePackageStatus>lambdaQuery().eq(WmScorePackageStatus::getPackageId,
+							status.getPackageId()
+					).eq(WmScorePackageStatus::getStatus, "1"));
+			if (total1 == 0) {
+				wmScorePackage.setScorePackageStatus("1");//已分派待申领
+			} else {
+				wmScorePackage.setScorePackageStatus("2");//已申领待审批
+			}
+
+		}
+
+		wmScorePackageMapper.updateById(wmScorePackage);
+
+
+		result.put("operation", operation);
+		result.put("remain", remain);
+
+	}
 }