Эх сурвалжийг харах

feat: 手动修改结算回调状态

lixuesong 1 жил өмнө
parent
commit
cc5ba84948

+ 42 - 26
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmPayOffController.java

@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.DesensitizedUtil;
 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;
@@ -21,12 +20,14 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDictItem;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
+import com.qunzhixinxi.hnqz.admin.entity.dto.NotifyByOneSelfDTO;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleInput;
 import com.qunzhixinxi.hnqz.admin.entity.input.WmScorePackageSettleOutput;
 import com.qunzhixinxi.hnqz.admin.entity.model.excel.SettlementProofModel;
 import com.qunzhixinxi.hnqz.admin.entity.model.excel.WmScorePackageSettleExcelModel;
 import com.qunzhixinxi.hnqz.admin.entity.vo.SettleFinancialReviewSettleDetailVO;
 import com.qunzhixinxi.hnqz.admin.entity.vo.SettleFinancialReviewVO;
+import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.enums.DeptPermissionEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageFinishStatusEnum;
 import com.qunzhixinxi.hnqz.admin.enums.PackageTypeEnum;
@@ -909,56 +910,71 @@ public class WmPayOffController {
 	}
 
 	/**
-	 * 手动回调
+	 * 结算状态手动回调
 	 *
-	 * @param input 修改的对象信息
+	 * @param dto 修改的对象信息
 	 * @return 结算操作结果
 	 */
-	@SysLog("手动回调")
+	@SysLog("结算状态手动回调")
 	@PostMapping("/notify-by-oneself")
-	public R<Boolean> notifyByOneself(@RequestBody WmScorePackageSettleNote input) {
+	public R<?> notifyByOneself(@RequestBody NotifyByOneSelfDTO dto) {
 		// 开始输出
-		log.info("===== 手工回调开始 =====");
+		log.info("===== 手工回调开始 参数:{} =====", dto);
 
 		// 初始化变量命名
-		Integer settleNoteId = input.getId();
-		LocalDateTime notifyTime = input.getNotifyTime();
-		Integer settleNoteStatus = input.getSettleNoteStatus();
+		String packageId = dto.getPackageId();
+		String scorePackageName = dto.getScorePackageName();
+		LocalDateTime notifyTime = dto.getNotifyTime();
+		Integer settleStatus = dto.getSettleStatus();
 
-		// 初始化内部参数
-		Integer userid = SecurityUtils.getUser().getId();
-		String remark = ("手动回调,操作人" + userid);
-
-		// 主键id校验,防止异常
-		if (null == settleNoteId) {
-			R.failed("积分包ID不能为空");
+		if (StrUtil.isAllBlank(packageId, scorePackageName)) {
+			throw new BizException("积分包ID或积分包名称不能同时为空");
 		}
 
 		// 信息校验,防止异常
-		if (null == notifyTime ||
-				null == settleNoteStatus
-		) {
-			R.failed("结算修改信息不能为空");
+		if (null == notifyTime || null == settleStatus) {
+			throw new BizException("结算修改信息不能为空");
+		}
+
+		List<String> packageIdList = null;
+		if (StrUtil.isNotBlank(scorePackageName)) {
+			List<String> spnList = StrUtil.splitTrim(scorePackageName, ",");
+			List<WmScorePackage> packages = wmScorePackageMapper.selectList(Wrappers.<WmScorePackage>lambdaQuery()
+					.in(WmScorePackage::getScorePackageName, spnList)
+					.eq(WmScorePackage::getDelFlag, DelEnum.NOT_DEL.val()));
+			if (CollUtil.isEmpty(packages) || packages.size() != spnList.size()) {
+				throw new BizException("积分包名称不存在或同一个积分包名称存在两个以上: " + scorePackageName);
+			}
+			packageIdList = packages.stream().map(WmScorePackage::getId).collect(Collectors.toList());
+		} else {
+			packageIdList = StrUtil.splitTrim(packageId, ",");
 		}
 
+		// 初始化内部参数
+		Integer userid = SecurityUtils.getUser().getId();
+		String remark = ("手动回调,操作人" + userid);
+
 		// 校验数据有效性
 		// 查询结算中的数据
-		List<WmScorePackageSettleNote> settleNoteByidList = wmScorePackageSettleNoteService.getSettleNoteById(input.getId(), Integer.parseInt(SettleStatusEnum.SETTLE_STATUS_SUBMIT.getVal()));
+		List<WmScorePackageSettleNote> settleNoteByidList = wmScorePackageSettleNoteService.list(Wrappers.<WmScorePackageSettleNote>lambdaQuery()
+				.in(WmScorePackageSettleNote::getPackageId, packageIdList)
+				.eq(WmScorePackageSettleNote::getSettleNoteStatus, Integer.parseInt(SettleStatusEnum.SETTLE_STATUS_SUBMIT.getVal())));
 		log.info("结算信息查询:{}", settleNoteByidList);
 		if (CollUtil.isEmpty(settleNoteByidList)) {
-			return R.failed("修改的目标数据状态异常,不能修改");
+			throw new BizException("结算信息不存在或状态不是已提交: " + scorePackageName);
 		}
 
-		String packageId = settleNoteByidList.get(0).getPackageId();
+		settleNoteByidList.forEach(note -> {
+			// 更新结算数据
+			wmScorePackageSettleNoteService.updateSettleNoteById(note.getPackageId(), note.getId(), settleStatus, remark, notifyTime);
+		});
 
-		// 更新结算数据
-		boolean updateSettleResult = wmScorePackageSettleNoteService.updateSettleNoteById(packageId, settleNoteId, settleNoteStatus, remark, notifyTime);
 
 		// 结束输出
 		log.info("===== 手工回调结束 =====");
 
 		// 返回更新结果
-		return R.ok(updateSettleResult);
+		return R.ok();
 	}
 
 }

+ 37 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/dto/NotifyByOneSelfDTO.java

@@ -0,0 +1,37 @@
+package com.qunzhixinxi.hnqz.admin.entity.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 结算手动回调参数
+ *
+ * @author lixuesong
+ * @date 2024/02/01
+ */
+@Data
+public class NotifyByOneSelfDTO implements Serializable {
+	private static final long serialVersionUID = -1814430828743680757L;
+
+	/**
+	 * 积分包id
+	 */
+	private String packageId;
+
+	/**
+	 * 积分包名称
+	 */
+	private String scorePackageName;
+
+	/**
+	 * 结算回调时间
+	 */
+	private LocalDateTime notifyTime;
+
+	/**
+	 * 结算状态
+	 */
+	private Integer settleStatus;
+}