diff --git a/src/main/java/com/qs/serve/common/util/DateUtils.java b/src/main/java/com/qs/serve/common/util/DateUtils.java index 86bf67a9..cb61c429 100644 --- a/src/main/java/com/qs/serve/common/util/DateUtils.java +++ b/src/main/java/com/qs/serve/common/util/DateUtils.java @@ -41,6 +41,7 @@ public class DateUtils { return LocalDate.of(Integer.parseInt(a[0]),Integer.parseInt(a[1]),Integer.parseInt(a[2])); } + public static Date toDate(LocalDate localDate){ ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zdt = localDate.atStartOfDay(zoneId); diff --git a/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java b/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java index 135f6393..f76f6a93 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java @@ -19,10 +19,8 @@ import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.OmsSaleOrder; import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; -import com.qs.serve.modules.oms.entity.bo.OmsCheckParam; -import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; -import com.qs.serve.modules.oms.entity.bo.OmsUrgentParam; -import com.qs.serve.modules.oms.entity.bo.OrderRelateQuery; +import com.qs.serve.modules.oms.entity.bo.*; +import com.qs.serve.modules.oms.entity.vo.OmsPlanResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.service.*; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; @@ -61,6 +59,17 @@ public class OmsSaleOrderController { private BmsSupplierMapper bmsSupplierMapper; private SeeYonRequestBaseService seeYonRequestBaseService; + /** + * 查看排产预估计划 + * @param param + * @return + */ + @PostMapping("/listItemPlans") + public R listPlans(@RequestBody OmsPlanParam param){ + OmsPlanResult result = omsSaleOrderService.getPlanList(param); + return R.ok(result); + } + /** * 获取历史订单 * @param code diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsPlanParam.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsPlanParam.java new file mode 100644 index 00000000..4069c9ef --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsPlanParam.java @@ -0,0 +1,34 @@ +package com.qs.serve.modules.oms.entity.bo; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2025/1/2 + */ +@Data +public class OmsPlanParam { + + /** + * 用于更新订单 + */ + private String omsOrderId; + + private List invItemList; + + @Data + public static class InvItem{ + + private String uuid; + + private String invCode; + + private Integer qty; + + private String factory; + + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsPlanResult.java b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsPlanResult.java new file mode 100644 index 00000000..9888ae86 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/entity/vo/OmsPlanResult.java @@ -0,0 +1,44 @@ +package com.qs.serve.modules.oms.entity.vo; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author YenHex + * @since 2025/1/2 + */ +@Data +public class OmsPlanResult { + + /** + * 用于更新订单 + */ + private String omsOrderId; + + private String remark; + + private Date deliveryDate; + + private List items; + + @Data + public static class InvPlanItem{ + + private String uuid; + + private String invCode; + + private String qty; + + private String factory; + + private Date deliveryDate; + + private String remark; + + + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java index 6e8e7fea..ac43da5a 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java @@ -11,6 +11,7 @@ import com.qs.serve.modules.oms.entity.OmsSaleOrder; import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; +import com.qs.serve.modules.oms.entity.vo.OmsPlanResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import java.math.BigDecimal; @@ -23,6 +24,13 @@ import java.util.List; */ public interface OmsSaleOrderService extends IService { + /** + * 调用嘉士利提供的接口获取计划列表 + * @param param + * @return + */ + OmsPlanResult getPlanList(OmsPlanParam param); + BigDecimal getExpiredOrderRateById(String oaId); List> selectExpiredOrderRates(); diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java index 8424733e..4e9f6be4 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java @@ -1,8 +1,11 @@ package com.qs.serve.modules.oms.service.impl; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.util.StringUtil; import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.SimpleKeyValue; @@ -30,6 +33,7 @@ import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount; import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; import com.qs.serve.modules.oms.entity.dto.XltOrderDTO; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; +import com.qs.serve.modules.oms.entity.vo.OmsPlanResult; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.event.OrderCreateCacheEvent; import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper; @@ -95,6 +99,66 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl invItemList = param.getInvItemList(); + List invCodes = invItemList.stream().map(OmsPlanParam.InvItem::getInvCode).collect(Collectors.toList()); + if(invCodes.size()>0){ + List skuList = goodsSkuMapper.selectList(new LambdaQueryWrapper().in(GoodsSku::getSkuCode,invCodes)); + for (OmsPlanParam.InvItem item : invItemList) { + item.setFactory(skuList.stream().filter(sku -> sku.getSkuCode().equals(item.getInvCode())).findFirst().get().getBelong()); + } + } + String result = HttpUtil.doPost(url, JsonUtil.objectToJson(invItemList),null); + JSONObject root = JSONObject.parseObject(result); + if(root.getInteger("status")==200){ + JSONObject data = root.getJSONObject("data"); + JSONArray itemListJson = data.getJSONArray("sub"); + List itemList = new ArrayList<>(); + for (int i = 0; i < itemListJson.size(); i++) { + try { + Object obj = itemListJson.get(i); + OmsPlanResult.InvPlanItem item = JsonUtil.jsonToPojo(obj.toString(), OmsPlanResult.InvPlanItem.class); + itemList.add(item); + } catch (Exception e) { + e.printStackTrace(); + } + } + String remark = data.getString("remark"); + Date deliveryDate = data.getDate("deliveryDate"); + //封装返回结果 + OmsPlanResult planResult = new OmsPlanResult(); + planResult.setOmsOrderId(param.getOmsOrderId()); + planResult.setDeliveryDate(deliveryDate); + planResult.setRemark(remark); + planResult.setItems(itemList); + + if(StringUtil.isNotEmpty(param.getOmsOrderId())){ + OmsSaleOrder order = this.getById(param.getOmsOrderId()); + if(order.getOrderStatusCombo()<2){ + OmsSaleOrder updSaleOrder = new OmsSaleOrder(); + updSaleOrder.setId(order.getId()); + updSaleOrder.setPreProductionDate(DateUtils.toLocalDate(deliveryDate)); + updSaleOrder.setProductionRemark(remark); + this.updateById(order); + List omsSaleOrderItems = omsSaleOrderItemService.listByOrderId(Long.parseLong(param.getOmsOrderId())); + for (OmsSaleOrderItem orderItem : omsSaleOrderItems) { + for (OmsPlanResult.InvPlanItem planItem : itemList) { + if(orderItem.getSkuCode().equals(planItem.getInvCode())){ + orderItem.setPreProductionDate(DateUtils.toLocalDate(planItem.getDeliveryDate())); + orderItem.setProductionRemark(planItem.getRemark()); + omsSaleOrderItemService.updateById(orderItem); + } + } + } + } + } + return planResult; + } + return null; + } + @Override public BigDecimal getExpiredOrderRateById(String oaId) { return baseMapper.getExpiredOrderRates(oaId); diff --git a/src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java b/src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java index 7022176a..2ed20486 100644 --- a/src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java +++ b/src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java @@ -54,4 +54,9 @@ public class ProcessCreatePolicyCostBo { */ private String recId; + /** + * 忽略时间 + */ + private Integer ignoreTime; + } diff --git a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java index 7fd73b9d..ea74b566 100644 --- a/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java +++ b/src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java @@ -209,11 +209,13 @@ public class PortalOfCostApplication { log.error("获取SysConfig政策延迟时间异常: PolicyDelayDays"); } } - if(nowTime.isAfter(policyItem.getPolicyStartDate().atStartOfDay())){ - Assert.throwEx("政策活动未开始"); - } - if(nowTime.isBefore(policyItem.getPolicyEndDate().plusDays(-delayDays).atStartOfDay())){ - Assert.throwEx("政策活动已截止于"+policyItem.getPolicyEndDate()); + if(createBo.getIgnoreTime()==null || createBo.getIgnoreTime()==0){ + if(nowTime.isBefore(policyItem.getPolicyStartDate().atStartOfDay())){ + Assert.throwEx("政策活动未开始"); + } + if(nowTime.isAfter(policyItem.getPolicyEndDate().plusDays(delayDays).atStartOfDay())){ + Assert.throwEx("政策活动已截止于"+policyItem.getPolicyEndDate()); + } } if(CollectionUtil.isEmpty(createBo.getGoodsList()) || createBo.getGoodsList().size()==0){ Assert.throwEx("商品数据不能为空");