diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java index 350c4c02..a94e6577 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/until/job/JobUtils.java @@ -1,40 +1,91 @@ package com.win.module.wms.until.job; +import cn.hutool.core.exceptions.UtilException; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Component; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +@Slf4j +@Component public class JobUtils { /** * 解析JSON串,返回两个对象的集合 * - * @param jobJson - * @param recordJson + * @param jsonString * @return List */ - public List parseJobAndRecord(String jobJson, String recordJson) { + public static List parseJobAndRecord(String jsonString) { //返回的对象集合 List resList = new ArrayList(); //判断前端传的数据是否为空 - if (StringUtils.isNotEmpty(jobJson)) { + if (StringUtils.isNotEmpty(jsonString)) { // 任务参数 - JSONObject jobJsonObject = JSONUtil.parseObj(jobJson); - Map jobMap = jobJsonObject.get("job", Map.class); - resList.add(jobMap); + try { + JSONObject jobJsonObject = JSONUtil.parseObj(jsonString); + Map jobMap = jobJsonObject.get("job", Map.class); + resList.add(jobMap); + } catch (Exception e) { + log.error("数据解析异常,请重试!", e); + } } //判断前端传的数据是否为空 - if (StringUtils.isNotEmpty(jobJson)) { + if (StringUtils.isNotEmpty(jsonString)) { // 记录参数 - JSONObject recordJsonObject = JSONUtil.parseObj(recordJson); - Map recordMap = recordJsonObject.get("record", Map.class); - resList.add(recordMap); + try { + JSONObject recordJsonObject = JSONUtil.parseObj(jsonString); + Map recordMap = recordJsonObject.get("record", Map.class); + resList.add(recordMap); + } catch (Exception e) { + throw new UtilException("数据解析异常,请重试!", e); + } } + return resList; } + /** + * 数量与任务是否一致(可配置) + * + * @return List + */ + public static boolean numAndJobIsSame(List param) { + boolean result = false; + // 任务参数 + Map jobMap = (Map) param.get(0).get("details"); + BigDecimal recommendQty = new BigDecimal(Integer.parseInt(jobMap.get("qty").toString())); + + // 记录参数 + Map recordMap = (Map) param.get(1).get("details"); + BigDecimal handleQty = new BigDecimal(Integer.parseInt(recordMap.get("qty").toString())); + + String allowBiggerQty = (String) jobMap.get("allowBiggerQty"); + String allowSmallerQty = (String) jobMap.get("allowBiggerQty"); + + // 验证数据 + if (handleQty.compareTo(recommendQty) == 1) { + if ("TRUE".equals(allowBiggerQty)) { + result = true; + } else { + throw new UtilException("实际数量" + handleQty + " 不允许大于推荐数量" + recommendQty); + } + } else if (handleQty.compareTo(recommendQty) == -1) { + if ("TRUE".equals(allowSmallerQty)) { + result = true; + } else { + throw new UtilException("实际数量" + handleQty + " 不允许小于推荐数量" + recommendQty); + } + } else if (handleQty.compareTo(recommendQty) == 0) { + result = true; + } + return result; + } + }