Browse Source

feat:订单拓展审批(列表提交)

muti_db
Yen 11 months ago
parent
commit
25903beaf6
  1. 26
      src/main/java/com/qs/serve/modules/oms/common/OmsOrderState.java
  2. 2
      src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java
  3. 2
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java
  4. 164
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java

26
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;
}

2
src/main/java/com/qs/serve/modules/oms/controller/OmsOrderExpiredController.java

@ -37,4 +37,6 @@ public class OmsOrderExpiredController {
return R.ok(); return R.ok();
} }
} }

2
src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java

@ -48,6 +48,8 @@ public class OmsOrder implements Serializable {
/** OA审批状态,订单审批状态 */ /** OA审批状态,订单审批状态 */
private Integer orderCheckState; private Integer orderCheckState;
private String syFormId;
/** 供应商ID */ /** 供应商ID */
@NotNull(message = "供应商ID不能为空") @NotNull(message = "供应商ID不能为空")
private Long supplierId; private Long supplierId;

164
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderOptionsServiceImpl.java

@ -1,31 +1,50 @@
package com.qs.serve.modules.oms.service.impl; package com.qs.serve.modules.oms.service.impl;
import com.qs.serve.common.util.Assert; import com.alibaba.fastjson.JSON;
import com.qs.serve.common.util.AuthContextUtils; import com.alibaba.fastjson.JSONObject;
import com.qs.serve.common.util.StringUtils; 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.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierAddress; 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.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.GoodsImminentBatch; import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; 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.goods.service.GoodsImminentBatchService;
import com.qs.serve.modules.oms.entity.OmsOrder; 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.dto.SeeYonOrderItemDTO;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderOptionsService; import com.qs.serve.modules.oms.service.OmsOrderOptionsService;
import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.utils.OmsOrderUtil; 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.tbs.entity.bo.TbsAffairCommitBo;
import com.qs.serve.modules.vtb.common.VtbVerificationState;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; 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 GoodsImminentBatchService goodsImminentBatchService;
private final OmsOrderService omsOrderService; private final OmsOrderService omsOrderService;
private final OmsOrderItemService omsOrderItemService; private final OmsOrderItemService omsOrderItemService;
private final SysUserService sysUserService;
private final BmsRegionMapper regionMapper;
private final BmsRegion2Mapper region2Mapper;
private final GoodsCategoryRuleMapper goodsCategoryRuleMapper; private final GoodsCategoryRuleMapper goodsCategoryRuleMapper;
private BmsSupplierAddressService bmsSupplierAddressService; private final BmsSupplierAddressService bmsSupplierAddressService;
private BmsSupplierMapper bmsSupplierMapper; private final BmsSupplierMapper bmsSupplierMapper;
private BmsRegionMapper bmsRegionMapper; 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 @Override
public Object submitExpiredOrder(String orderId) { public Object submitExpiredOrder(String orderId) {
OmsOrder omsOrder = omsOrderService.getById(orderId); OmsOrder omsOrder = omsOrderService.getById(orderId);
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId);
if (omsOrder == null) { if (omsOrder == null) {
Assert.throwEx("订单不存在或被移除"); Assert.throwEx("订单不存在或被移除");
} }
if(!userId.equals(omsOrder.getCreateBy())){
Assert.throwEx("越权访问被拦截了");
}
if (!omsOrder.getUserId().equals(userId)) { if (!omsOrder.getUserId().equals(userId)) {
Assert.throwEx("非制单人无法下单"); Assert.throwEx("非制单人无法下单");
} }
@ -95,6 +126,9 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService {
} }
//客户校验 //客户校验
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId());
if(supplierAddress==null){
Assert.throwEx("客户地址为空");
}
BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId()); BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId());
if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) { if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) {
Assert.throwEx("请补充CD单号"); Assert.throwEx("请补充CD单号");
@ -108,11 +142,123 @@ public class OmsOrderOptionsServiceImpl implements OmsOrderOptionsService {
//更新最新的用户特殊价格 //更新最新的用户特殊价格
omsOrderService.updateCusPrice(omsOrder.getSupplierCode(), orderItemList); 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) { if (imminentBatches.size() > 0) {
goodsImminentBatchService.updateBatchById(imminentBatches); 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<String, Object> 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<String> 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<String, Object> buildSeeyonData(OmsOrder omsOrder, SysUser sysUser, List<OmsOrderItem> orderItemList, BmsSupplierAddress supplierAddress, BmsSupplier supplier, BigDecimal totalOrderAmt, String templateCode, String saleBizNames, String bizBizNames) {
Map<String, Object> 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<String> 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<SeeYonOrderItemDTO> 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 @Override

Loading…
Cancel
Save