|
|
@@ -7,12 +7,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.trade.purchase.office.service.IStockService;
|
|
|
import com.trade.purchase.order.entity.Order;
|
|
|
import com.trade.purchase.order.entity.OrderItems;
|
|
|
+import com.trade.purchase.order.enums.OrderTypeEnum;
|
|
|
import com.trade.purchase.order.mapper.OrderItemsMapper;
|
|
|
import com.trade.purchase.order.mapper.OrderMapper;
|
|
|
import com.trade.purchase.order.service.IPurchaseService;
|
|
|
import com.trade.purchase.order.vo.OrderItemsVO;
|
|
|
import io.seata.spring.annotation.GlobalTransactional;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.springblade.check.dto.AuditProecessDTO;
|
|
|
+import org.springblade.check.entity.AuditPathsActs;
|
|
|
+import org.springblade.check.entity.AuditPathsLevels;
|
|
|
+import org.springblade.check.feign.ICheckClient;
|
|
|
import org.springblade.client.entity.CorpsDesc;
|
|
|
import org.springblade.client.entity.GoodsDesc;
|
|
|
import org.springblade.client.entity.GoodsType;
|
|
|
@@ -20,10 +25,12 @@ import org.springblade.client.feign.ICorpsDescClient;
|
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
|
import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.client.vo.GoodsDescVO;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.mocha.entity.SalesPolicyItem;
|
|
|
import org.springblade.mocha.feign.ISalesPolicyClient;
|
|
|
+import org.springblade.mocha.vo.SalesPolicyItemVO;
|
|
|
import org.springblade.stock.feign.IStockGoodsClient;
|
|
|
import org.springblade.system.entity.Tenant;
|
|
|
import org.springblade.system.feign.ITenantClient;
|
|
|
@@ -32,9 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
@@ -46,6 +51,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
private ICorpsDescClient corpsDescClient;
|
|
|
private IStockGoodsClient stockGoodsClient;//查询库存账对外访问接口
|
|
|
private ISalesPolicyClient salesPolicyClient;//获取政策信息
|
|
|
+ private final ICheckClient iCheckClient;
|
|
|
/**
|
|
|
* 生成系统编号
|
|
|
*/
|
|
|
@@ -56,9 +62,22 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
public R createOrder(Order order) {
|
|
|
//查询采购合同主表信息
|
|
|
Order orderMessage = orderMapper.selectById(order.getId());
|
|
|
+ //查询采购合同明细信息
|
|
|
+ LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getGoodType,0);
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getTenantId,SecureUtil.getTenantId());
|
|
|
+ lambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
|
|
|
+ List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isEmpty(orderItemsList)){
|
|
|
+ throw new SecurityException("未找到采购合同明细");
|
|
|
+ }
|
|
|
if (orderMessage == null){
|
|
|
throw new SecurityException("未找到采购合同");
|
|
|
}
|
|
|
+ if (orderMessage.getGenerate() == 1){
|
|
|
+ throw new SecurityException("采购合同已提交平台,请勿重复提交");
|
|
|
+ }
|
|
|
//获取平台租户id
|
|
|
Tenant tenant = tenantClient.tenantMessage(SecureUtil.getTenantId());
|
|
|
if (tenant == null){
|
|
|
@@ -71,7 +90,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
|
|
|
}
|
|
|
//获取客户信息
|
|
|
- CorpsDesc agentCode = corpsDescClient.getAgentCode(tenant.getCorpCode(), tenant.getTerrace());
|
|
|
+ CorpsDesc agentCode = corpsDescClient.getAgentCode(tenant.getCorpCode(), tenant.getTerrace(),"KH");
|
|
|
if (agentCode == null){
|
|
|
throw new SecurityException("在平台上未找到对应的客户信息,请通知平台维护");
|
|
|
}
|
|
|
@@ -85,14 +104,10 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
packageRemarks = "无包装";
|
|
|
}
|
|
|
//获取客户对应的所属公司
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(Long.valueOf(agentCode.getBelongtocompany()));
|
|
|
- if (!corpMessage.isSuccess()){
|
|
|
- throw new SecurityException("获取客户对应的所属公司失败");
|
|
|
- }
|
|
|
- if (corpMessage.getData() == null){
|
|
|
+ CorpsDesc corpsDesc = corpsDescClient.getCorpId(Long.valueOf(agentCode.getBelongtocompany()));
|
|
|
+ if (corpsDesc == null){
|
|
|
throw new SecurityException("未找到客户对应的所属公司信息");
|
|
|
}
|
|
|
- CorpsDesc corpsDesc = corpMessage.getData();//所属公司信息
|
|
|
//获取所属公司对应的供应商
|
|
|
CorpsDesc desc = new CorpsDesc();
|
|
|
desc.setCorpType("GYS");
|
|
|
@@ -111,6 +126,8 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
purchase.setBusinesDate(new Date());//订单日期
|
|
|
//purchase.setCreateUser(SecureUtil.getUserId());
|
|
|
purchase.setCreateTime(new Date());
|
|
|
+ purchase.setSrcOrderNo(orderMessage.getOrderNo());//来源订单号
|
|
|
+ purchase.setSrcId(orderMessage.getId());//来源id
|
|
|
purchase.setPaymentType("预付");//付款方式
|
|
|
purchase.setRequiredDeliveryDate(new Date());//要求发货日期
|
|
|
purchase.setRequiredArrivalDate(new Date());//要求到货日期
|
|
|
@@ -121,6 +138,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
purchase.setBanksAccountName(corpsDesc.getAccountName());//公司户头
|
|
|
purchase.setAccountBank(corpsDesc.getAccountBank());//开户银行
|
|
|
purchase.setShippingAddress(supplier.getStorageAddr());//发货地址
|
|
|
+ purchase.setStatus(1);
|
|
|
purchase.setArrivalAddress(agentCode.getStorageAddr());//到货地址
|
|
|
//生成系统编号
|
|
|
R billNo = serialClient.getNo(purchase.getBillType(), purchase.getTradeType(), purchase.getBillType(),tenant.getTerrace());
|
|
|
@@ -137,13 +155,6 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
purchase.setMorderNo(order.getOrderNo());//主订单号
|
|
|
purchase.setOrderStatus("录入");
|
|
|
orderMapper.insert(purchase);
|
|
|
- //查询采购合同明细信息
|
|
|
- LambdaQueryWrapper<OrderItems> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getIsDeleted,0);
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getGoodType,0);
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getTenantId,SecureUtil.getTenantId());
|
|
|
- lambdaQueryWrapper.eq(OrderItems::getPid,order.getId());
|
|
|
- List<OrderItems> orderItemsList = orderItemsMapper.selectList(lambdaQueryWrapper);
|
|
|
//生成平台代理商订单明细
|
|
|
if (CollectionUtils.isNotEmpty(orderItemsList)){
|
|
|
orderItemsList.stream().forEach(item ->{
|
|
|
@@ -154,10 +165,7 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
//获取代理商商品信息
|
|
|
R<GoodsDescVO> goods = goodsDescClient.selectGoodsMessage(item.getItemId());
|
|
|
if (goods.isSuccess() && goods.getData() != null){
|
|
|
- GoodsDesc goodsDesc = new GoodsDesc();
|
|
|
- goodsDesc.setCode(goods.getData().getTerraceCode());
|
|
|
- goodsDesc.setTenantId(tenant.getTerrace());
|
|
|
- GoodsDesc terraceCode = goodsDescClient.terraceCode(goodsDesc);
|
|
|
+ GoodsDesc terraceCode = goodsDescClient.terraceCode(goods.getData().getTerraceCode(),tenant.getTerrace());
|
|
|
if (terraceCode == null){
|
|
|
throw new SecurityException("平台未找到对应的商品,请通知平台维护");
|
|
|
}
|
|
|
@@ -191,6 +199,64 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
orderItemsMapper.insert(orderItems);
|
|
|
});
|
|
|
}
|
|
|
+ //修改原订单信息
|
|
|
+ Order deal = new Order();
|
|
|
+ deal.setId(orderMessage.getId());
|
|
|
+ deal.setGenerate(1);
|
|
|
+ deal.setOrderStatus("提交平台审核");
|
|
|
+ orderMapper.updateById(deal);
|
|
|
+ //生成平台审核数据
|
|
|
+ AuditPathsActs pathsActs = iCheckClient.getApprovalActId(14, "status",tenant.getTerrace());
|
|
|
+ if (pathsActs == null || pathsActs.getIsEnable() == 2) {
|
|
|
+ throw new SecurityException("当前租户未查询到审批流配置");
|
|
|
+ } else {
|
|
|
+ //获取审批级次
|
|
|
+ List<AuditPathsLevels> auditPathsLevels = iCheckClient.listApproval(14, "status",tenant.getTerrace());
|
|
|
+ if (CollectionUtils.isEmpty(auditPathsLevels)) {
|
|
|
+ throw new SecurityException("开启审批失败:未查询到审批信息");
|
|
|
+ }
|
|
|
+ //修改订单信息
|
|
|
+ AuditProecessDTO auditProecessDTO = new AuditProecessDTO();
|
|
|
+ // 绑定审核类型
|
|
|
+ auditProecessDTO.setCheckType("dldd");//代理订单
|
|
|
+ // 追加跳转路由url
|
|
|
+ auditProecessDTO.setUrl("/businessManagement/proxyOrder/index");
|
|
|
+ auditProecessDTO.setPageStatus("this.$store.getters.domSaleStatus");
|
|
|
+ auditProecessDTO.setPageLabel("代理订单(N)");
|
|
|
+ //增加审批类型
|
|
|
+ auditProecessDTO.setProcessType("代理订单审批");
|
|
|
+ LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ orderItemsLambdaQueryWrapper
|
|
|
+ .eq(OrderItems::getGoodType, 0)
|
|
|
+ .eq(OrderItems::getPid, purchase.getId())
|
|
|
+ .eq(OrderItems::getIsDeleted, 0);
|
|
|
+ List<OrderItems> orderItems = orderItemsMapper.selectList(orderItemsLambdaQueryWrapper);
|
|
|
+ if (CollectionUtils.isNotEmpty(orderItems)) {
|
|
|
+ auditProecessDTO.setOrderQuantity(orderItems.stream().map(OrderItems::getOrderQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ auditProecessDTO.setAmount(orderItems.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
+ } else {
|
|
|
+ auditProecessDTO.setOrderQuantity(BigDecimal.ZERO);
|
|
|
+ auditProecessDTO.setAmount(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ auditProecessDTO.setOrderRemark(purchase.getOrderRemark());
|
|
|
+ auditProecessDTO.setGrossProfit(purchase.getGrossProfit());
|
|
|
+ auditProecessDTO.setGrossProfitRate(purchase.getGrossProfitRate());
|
|
|
+ auditProecessDTO.setCorpId(purchase.getCorpId());
|
|
|
+ auditProecessDTO.setPathsLevelsList(auditPathsLevels);
|
|
|
+ auditProecessDTO.setActId(1);
|
|
|
+ auditProecessDTO.setSrcBillId(purchase.getId());
|
|
|
+ auditProecessDTO.setBillId(purchase.getId());
|
|
|
+ auditProecessDTO.setBillNo(purchase.getOrderNo());
|
|
|
+ auditProecessDTO.setSendUserId(AuthUtil.getUserId());
|
|
|
+ auditProecessDTO.setSendName(AuthUtil.getUserName());
|
|
|
+ auditProecessDTO.setSendTime(new Date());
|
|
|
+ auditProecessDTO.setTenantId(tenant.getTerrace());
|
|
|
+ R financeProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
|
|
|
+ if (!financeProcess.isSuccess()) {
|
|
|
+ throw new SecurityException("操作失败,请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
return R.success("操作成功");
|
|
|
}
|
|
|
|
|
|
@@ -209,16 +275,57 @@ public class PurchaseServiceImpl extends ServiceImpl<OrderMapper, Order> impleme
|
|
|
throw new SecurityException("未找到租户对应的平台客户编码,请维护平台客户编码");
|
|
|
}
|
|
|
//获取平台销售政策 需将平台编码转成代理商编码
|
|
|
- List<SalesPolicyItem> salesPolicy = salesPolicyClient.getSalesPolicy(tenant.getCorpCode(), tenant.getTerrace());
|
|
|
- if (CollectionUtils.isEmpty(salesPolicy)){
|
|
|
+ List<SalesPolicyItemVO> salesPolicy = salesPolicyClient.getSalesPolicy(tenant.getCorpCode(), tenant.getTerrace());
|
|
|
+ if (CollectionUtils.isNotEmpty(salesPolicy)){
|
|
|
salesPolicy.stream().forEach(item ->{
|
|
|
+ //获取代理商商品信息
|
|
|
+ OrderItemsVO orderItemsVO = new OrderItemsVO();
|
|
|
+ GoodsDesc terraceCode = goodsDescClient.getTerraceCode(item.getCode(), SecureUtil.getTenantId());
|
|
|
+ if (terraceCode == null){
|
|
|
+ throw new SecurityException("未找到商品"+item.getCode());
|
|
|
+ }
|
|
|
+ orderItemsVO.setCode(terraceCode.getCode());
|
|
|
+ orderItemsVO.setCname(terraceCode.getCname());
|
|
|
+
|
|
|
+ orderItemsVO.setItemId(terraceCode.getId());
|
|
|
+ //获取商品分类
|
|
|
+ GoodsType goodsType = goodsDescClient.goodTypeId(terraceCode.getId());
|
|
|
+ orderItemsVO.setPriceCategory(goodsType.getCname());//产品分类
|
|
|
+ orderItemsVO.setPriceType(item.getPolicy());//价格类别
|
|
|
+ orderItemsVO.setTypeno(terraceCode.getTypeno());//规格型号
|
|
|
+ orderItemsVO.setBrandItem(terraceCode.getBrandItem());//花纹
|
|
|
+ orderItemsVO.setSize(terraceCode.getSize());//尺寸
|
|
|
+ orderItemsVO.setCorpId(terraceCode.getCorpId());//供应商id
|
|
|
+ orderItemsVO.setCorpName(terraceCode.getCorpName());//供应商名称
|
|
|
+ orderItemsVO.setShopQuality(0);//质量胎
|
|
|
+ orderItemsVO.setOrderQuantity(item.getOrderQuantity());//数量
|
|
|
+ orderItemsVO.setActualQuantity(BigDecimal.ZERO);//发货数量
|
|
|
+ orderItemsVO.setPurchaseAmount(item.getPurchaseAmount());//采购价格
|
|
|
+ orderItemsVO.setPrice(item.getSalesPrice());//最新价格
|
|
|
+ //orderItemsVO.setAmount(orderItemsVO.getOrderQuantity().multiply(orderItemsVO.getPrice()));//金额
|
|
|
+ orderItemsVO.setIntegral(BigDecimal.ZERO);//赠送积分
|
|
|
+ orderItemsVO.setIntegralMultiples(BigDecimal.ZERO);//积分倍数
|
|
|
+ orderItemsVO.setCartonWeight(terraceCode.getCartonWeight());//重量
|
|
|
+ orderItemsVO.setCntrVolumn(terraceCode.getCntrVolumn());//体积
|
|
|
+ //获取平台库存
|
|
|
+ orderItemsVO.setPlatformInventory(stockGoodsClient.getStockNumber(item.getItemId(),tenant.getTerrace()));
|
|
|
+ //获取代理商库存
|
|
|
+ orderItemsVO.setStorageQuantity(stockGoodsClient.getStockNumber(terraceCode.getId(),SecureUtil.getTenantId()));//库存数量
|
|
|
+ //获取最近六十天销售
|
|
|
+ BigDecimal bigDecimal = orderItemsMapper.orderNumber(OrderTypeEnum.DEALER.getType(), SecureUtil.getTenantId(), OrderTypeEnum.SALES.getType());
|
|
|
+ if (bigDecimal != null){
|
|
|
+ orderItemsVO.setSalesVolume(bigDecimal);
|
|
|
+ }else {
|
|
|
+ orderItemsVO.setSalesVolume(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
|
|
|
+ list.add(orderItemsVO);
|
|
|
});
|
|
|
}
|
|
|
- //获取平台库存
|
|
|
- //获取代理商库存
|
|
|
- //获取最近六十天销售
|
|
|
- //
|
|
|
- return null;
|
|
|
+ //政策不为空,按销量倒叙排序
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
+ list.sort(Comparator.comparing(OrderItemsVO::getSalesVolume).reversed());
|
|
|
+ }
|
|
|
+ return R.data(list);
|
|
|
}
|
|
|
}
|