Browse Source

feat(SaleOrder): 修复随货同步时间判断错误;添加排单日期更新逻辑

muti_db
Yen 7 months ago
parent
commit
cb4a3c47f8
  1. 1
      src/main/java/com/qs/serve/common/util/DateUtils.java
  2. 17
      src/main/java/com/qs/serve/modules/oms/controller/OmsSaleOrderController.java
  3. 34
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsPlanParam.java
  4. 44
      src/main/java/com/qs/serve/modules/oms/entity/vo/OmsPlanResult.java
  5. 8
      src/main/java/com/qs/serve/modules/oms/service/OmsSaleOrderService.java
  6. 64
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java
  7. 5
      src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java
  8. 6
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

1
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])); return LocalDate.of(Integer.parseInt(a[0]),Integer.parseInt(a[1]),Integer.parseInt(a[2]));
} }
public static Date toDate(LocalDate localDate){ public static Date toDate(LocalDate localDate){
ZoneId zoneId = ZoneId.systemDefault(); ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDate.atStartOfDay(zoneId); ZonedDateTime zdt = localDate.atStartOfDay(zoneId);

17
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.OmsOrderItem;
import com.qs.serve.modules.oms.entity.OmsSaleOrder; import com.qs.serve.modules.oms.entity.OmsSaleOrder;
import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; 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.*;
import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; import com.qs.serve.modules.oms.entity.vo.OmsPlanResult;
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.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.service.*; import com.qs.serve.modules.oms.service.*;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
@ -61,6 +59,17 @@ public class OmsSaleOrderController {
private BmsSupplierMapper bmsSupplierMapper; private BmsSupplierMapper bmsSupplierMapper;
private SeeYonRequestBaseService seeYonRequestBaseService; private SeeYonRequestBaseService seeYonRequestBaseService;
/**
* 查看排产预估计划
* @param param
* @return
*/
@PostMapping("/listItemPlans")
public R<OmsPlanResult> listPlans(@RequestBody OmsPlanParam param){
OmsPlanResult result = omsSaleOrderService.getPlanList(param);
return R.ok(result);
}
/** /**
* 获取历史订单 * 获取历史订单
* @param code * @param code

34
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<InvItem> invItemList;
@Data
public static class InvItem{
private String uuid;
private String invCode;
private Integer qty;
private String factory;
}
}

44
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<InvPlanItem> items;
@Data
public static class InvPlanItem{
private String uuid;
private String invCode;
private String qty;
private String factory;
private Date deliveryDate;
private String remark;
}
}

8
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.OmsSaleOrderItem;
import com.qs.serve.modules.oms.entity.bo.*; 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.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.entity.vo.OmsSpuAssesInfo;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -23,6 +24,13 @@ import java.util.List;
*/ */
public interface OmsSaleOrderService extends IService<OmsSaleOrder> { public interface OmsSaleOrderService extends IService<OmsSaleOrder> {
/**
* 调用嘉士利提供的接口获取计划列表
* @param param
* @return
*/
OmsPlanResult getPlanList(OmsPlanParam param);
BigDecimal getExpiredOrderRateById(String oaId); BigDecimal getExpiredOrderRateById(String oaId);
List<SimpleKeyValue<String>> selectExpiredOrderRates(); List<SimpleKeyValue<String>> selectExpiredOrderRates();

64
src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java

@ -1,8 +1,11 @@
package com.qs.serve.modules.oms.service.impl; package com.qs.serve.modules.oms.service.impl;
import cn.hutool.core.collection.CollUtil; 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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.framework.redis.RedisService;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.dto.SimpleKeyValue; 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.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.dto.XltOrderDTO; 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.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.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.event.OrderCreateCacheEvent; import com.qs.serve.modules.oms.event.OrderCreateCacheEvent;
import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper; import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper;
@ -95,6 +99,66 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl<OmsSaleOrderMapper, Oms
private RedisService redisService; private RedisService redisService;
private ApplicationEventPublisher applicationEventPublisher; private ApplicationEventPublisher applicationEventPublisher;
@Override
public OmsPlanResult getPlanList(OmsPlanParam param) {
String url = "http://59.37.164.96:2505"+"/api/calculate/orders";
List<OmsPlanParam.InvItem> invItemList = param.getInvItemList();
List<String> invCodes = invItemList.stream().map(OmsPlanParam.InvItem::getInvCode).collect(Collectors.toList());
if(invCodes.size()>0){
List<GoodsSku> skuList = goodsSkuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().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<OmsPlanResult.InvPlanItem> 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<OmsSaleOrderItem> 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 @Override
public BigDecimal getExpiredOrderRateById(String oaId) { public BigDecimal getExpiredOrderRateById(String oaId) {
return baseMapper.getExpiredOrderRates(oaId); return baseMapper.getExpiredOrderRates(oaId);

5
src/main/java/com/qs/serve/modules/third/entity/ProcessCreatePolicyCostBo.java

@ -54,4 +54,9 @@ public class ProcessCreatePolicyCostBo {
*/ */
private String recId; private String recId;
/**
* 忽略时间
*/
private Integer ignoreTime;
} }

6
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -209,12 +209,14 @@ public class PortalOfCostApplication {
log.error("获取SysConfig政策延迟时间异常: PolicyDelayDays"); log.error("获取SysConfig政策延迟时间异常: PolicyDelayDays");
} }
} }
if(nowTime.isAfter(policyItem.getPolicyStartDate().atStartOfDay())){ if(createBo.getIgnoreTime()==null || createBo.getIgnoreTime()==0){
if(nowTime.isBefore(policyItem.getPolicyStartDate().atStartOfDay())){
Assert.throwEx("政策活动未开始"); Assert.throwEx("政策活动未开始");
} }
if(nowTime.isBefore(policyItem.getPolicyEndDate().plusDays(-delayDays).atStartOfDay())){ if(nowTime.isAfter(policyItem.getPolicyEndDate().plusDays(delayDays).atStartOfDay())){
Assert.throwEx("政策活动已截止于"+policyItem.getPolicyEndDate()); Assert.throwEx("政策活动已截止于"+policyItem.getPolicyEndDate());
} }
}
if(CollectionUtil.isEmpty(createBo.getGoodsList()) || createBo.getGoodsList().size()==0){ if(CollectionUtil.isEmpty(createBo.getGoodsList()) || createBo.getGoodsList().size()==0){
Assert.throwEx("商品数据不能为空"); Assert.throwEx("商品数据不能为空");
} }

Loading…
Cancel
Save