diff --git a/src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java b/src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java new file mode 100644 index 00000000..30edb15b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java @@ -0,0 +1,26 @@ +package com.qs.serve.modules.oms.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author YenHex + * @since 2022/11/24 + */ +@Getter +@AllArgsConstructor +public enum OmsOrderState { + + //状态:1=审批中;2=完成;3-中止;4-回滚;5-作废;6-关闭 + Commiting(1), + Finished(2), + Stop(3), + Rollback(4), + Cancel(5), + Close(6); + + private Integer code; + + + +} diff --git a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java index dccad509..5204d88b 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java @@ -37,4 +37,6 @@ public class OmsOrderExpiredController { return R.ok(); } + + } diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index 7f5d35d0..afee2faa 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -48,6 +48,8 @@ public class OmsOrder implements Serializable { /** OA审批状态,订单审批状态 */ private Integer orderCheckState; + private String syFormId; + /** 供应商ID */ @NotNull(message = "供应商ID不能为空") private Long supplierId; diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java index f1314f5d..b894efe9 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java @@ -1,31 +1,50 @@ package com.qs.serve.modules.oms.service.impl; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.AuthContextUtils; -import com.qs.serve.common.util.StringUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.oa.OaFormMainProcess; +import com.qs.serve.common.util.*; +import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.modules.bms.entity.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplierAddress; +import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.BmsSupplierAddressService; -import com.qs.serve.modules.goods.entity.GoodsCategoryRule; -import com.qs.serve.modules.goods.entity.GoodsImminentBatch; +import com.qs.serve.modules.goods.entity.*; +import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; +import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; +import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.service.GoodsImminentBatchService; import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrderItem; +import com.qs.serve.modules.oms.entity.dto.SeeYonOrderItemDTO; import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderOptionsService; import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.utils.OmsOrderUtil; +import com.qs.serve.modules.seeyon.service.SeeYonRequestService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; +import com.qs.serve.modules.tag.mapper.TagInfoMapper; +import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; +import com.qs.serve.modules.vtb.common.VtbVerificationState; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 订单审批操作类 @@ -40,20 +59,32 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { private final GoodsImminentBatchService goodsImminentBatchService; private final OmsOrderService omsOrderService; private final OmsOrderItemService omsOrderItemService; + private final SysUserService sysUserService; + private final BmsRegionMapper regionMapper; + private final BmsRegion2Mapper region2Mapper; private final GoodsCategoryRuleMapper goodsCategoryRuleMapper; - private BmsSupplierAddressService bmsSupplierAddressService; + private final BmsSupplierAddressService bmsSupplierAddressService; - private BmsSupplierMapper bmsSupplierMapper; - private BmsRegionMapper bmsRegionMapper; + private final BmsSupplierMapper bmsSupplierMapper; + private final BmsRegionMapper bmsRegionMapper; + private final TagInfoMapper tagInfoMapper; + private final GoodsSkuMapper goodsSkuMapper; + private final GoodsSpuMapper goodsSpuMapper; + private final GoodsCategoryMapper goodsCategoryMapper; + private final SeeYonRequestService seeYonService; @Override public Object submitExpiredOrder(String orderId) { OmsOrder omsOrder = omsOrderService.getById(orderId); String userId = AuthContextUtils.getSysUserId(); + SysUser sysUser = sysUserService.getById(userId); if (omsOrder == null) { Assert.throwEx("订单不存在或被移除"); } + if(!userId.equals(omsOrder.getCreateBy())){ + Assert.throwEx("越权访问被拦截了"); + } if (!omsOrder.getUserId().equals(userId)) { Assert.throwEx("非制单人无法下单"); } @@ -95,6 +126,9 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { } //客户校验 BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); + if(supplierAddress==null){ + Assert.throwEx("客户地址为空"); + } BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId()); if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) { Assert.throwEx("请补充CD单号"); @@ -108,11 +142,123 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService { //更新最新的用户特殊价格 omsOrderService.updateCusPrice(omsOrder.getSupplierCode(), orderItemList); + BigDecimal totalOrderAmt = orderItemList.stream().map(a->a.getSalesPrice().multiply(new BigDecimal(a.getQuantity()))) + .reduce(BigDecimal.ZERO,BigDecimal::add); + if (imminentBatches.size() > 0) { goodsImminentBatchService.updateBatchById(imminentBatches); } - return null; + String templateCode = TbsSeeYonConst.ExpiredOrderConf.Code(); + + //加载大区信息 + String saleRegionId = supplier.handleSaleRegionId(); + BmsRegion saleRegion = regionMapper.selectById(saleRegionId); + String saleBizNames = saleRegion!=null?saleRegion.getPathNames():"null_申请时未录入"; + String bizRegionId = supplier.handleBizRegionId(); + BmsRegion2 bizRegion = region2Mapper.selectById(bizRegionId); + String bizBizNames = bizRegion!=null?bizRegion.getPathNames():"null_申请时未录入"; + + // 构建DATA + Map data = this.buildSeeyonData(omsOrder, sysUser, orderItemList, supplierAddress, supplier, + totalOrderAmt, templateCode, saleBizNames, bizBizNames); + + OaFormMainProcess mainProcess = new OaFormMainProcess(); + mainProcess.setTargetId(orderId); + mainProcess.setUploadFiles(new ArrayList<>()); + mainProcess.setTableName("formmain_2206"); + mainProcess.setData(data); + mainProcess.setTemplateCode(templateCode); + mainProcess.setUserId(sysUser.getId()); + mainProcess.setSenderLoginName(sysUser.getAccount()); + R flowIdResult = seeYonService.newCreateProcess(mainProcess); + + if(flowIdResult==null||flowIdResult.getStatus()!=200){ + assert flowIdResult != null; + Assert.throwEx("远程服务调用失败:"+flowIdResult.getMsg()); + } + if(flowIdResult.getMsg()!=null && flowIdResult.getMsg().length()>45){ + log.error(flowIdResult.getMsg()); + JSONObject object = JSON.parseObject(flowIdResult.getMsg()); + if(!object.get("code").toString().equals("0")){ + Assert.throwEx("流程发起被拦截了"); + } + } + String formId = null; + R formIdResult = seeYonService.getFormId(templateCode,omsOrder.getId()); + if(formIdResult.getStatus()==200){ + formId = formIdResult.getData(); + } + omsOrder.setSyFormId(formId); + omsOrder.setOrderCheckState(VtbVerificationState.Commiting.getCode()); + omsOrderService.updateById(omsOrder); + return R.ok(); + } + + /** + * 构建DATA + * @param omsOrder + * @param sysUser + * @param orderItemList + * @param supplierAddress + * @param supplier + * @param totalOrderAmt + * @param templateCode + * @param saleBizNames + * @param bizBizNames + * @return + */ + private Map buildSeeyonData(OmsOrder omsOrder, SysUser sysUser, List orderItemList, BmsSupplierAddress supplierAddress, BmsSupplier supplier, BigDecimal totalOrderAmt, String templateCode, String saleBizNames, String bizBizNames) { + Map data = new HashMap<>(); + data.put("title", omsOrder.getOrderSn()); + data.put("orgId", omsOrder.getId()); + data.put("targetId", omsOrder.getId()); + data.put("targetCode", omsOrder.getOrderSn()); + data.put("applyUserCode", sysUser.getCode()); + data.put("applyUserName", sysUser.getName()); + data.put("supplierName", supplier.getName()); + data.put("supplierCode", supplier.getCode()); + data.put("exsp1", templateCode); + data.put("exsp2", saleBizNames); + data.put("biz_region", bizBizNames); + //添加跳转地址业务 + String baseJumpUrl = "https://shop.gdjsl.com/pcOrder/#/"; + data.put("cmsLink",baseJumpUrl); + data.put("rowDate", DateUtils.format(LocalDateTime.now(), DateFormatString.DATE_TIME)); + data.put("rowState","00"); + data.put("templateId", ""); + data.put("templateName", ""); + //添加客户标签 + List tags = tagInfoMapper.lisTagsBySupplierCode(supplier.getCode()); + data.put("tags",tags); + + data.put("totalOrderAmt", totalOrderAmt); + data.put("cusAddr", supplierAddress.getDetail()); + data.put("cdNumber", omsOrder.getCdOrderRemark()); + data.put("remark", omsOrder.getRemark()); + data.put("mainRemark", omsOrder.getRemark()); + + List itemDTOList = orderItemList.stream().map(item->{ + SeeYonOrderItemDTO dto = new SeeYonOrderItemDTO(); + dto.setSpuCode(item.getSpuCode()); + dto.setSkuTitle(item.getSkuTitle()); + GoodsSpu goodsSpu = goodsSpuMapper.selectById(item.getSpuId()); + GoodsSku goodsSku = goodsSkuMapper.selectById(item.getSkuId()); + GoodsCategory goodsCategory = goodsCategoryMapper.selectById(goodsSpu.getCategoryLast()); + dto.setSkuAddCode(goodsSku.getSkuAddCode()); + dto.setSkuCode(item.getSkuCode()); + dto.setBatchCode(item.getSkuBatchCode()); + dto.setSkuCategories(goodsCategory.getLevelPathNames()); + dto.setSpecVal(item.getSpecValues()); + dto.setRemark(item.getRemark()); + dto.setWeight(item.getWeight()); + dto.setVolume(item.getVolume()); + dto.setSalesPrice(item.getSalesPrice()); + dto.setTotalPrice(item.getSalesPrice().multiply(new BigDecimal(item.getQuantity()))); + return dto; + }).collect(Collectors.toList()); + data.put("formson_2210",itemDTOList); + return data; } @Override