【销售订单明细】增加颜色,客户分订单号,订单序列号

dev
siontion 2 months ago
parent b6ac211af0
commit e1b53bb6bc

@ -44,7 +44,7 @@ public class QuerySaleOrderListReqVO extends AbstractChanjetContent {
add(new ParamDicDTO("01")); add(new ParamDicDTO("01"));
}}); }});
put("SaleOrder.AuditedTime", new ArrayList<ParamDicDTO>(){{ put("SaleOrder.AuditedTime", new ArrayList<ParamDicDTO>(){{
add(new ParamDicDTO(LocalDate.now().minusDays(15).toString())); add(new ParamDicDTO(LocalDate.now().minusDays(30).toString()));
add(new ParamDicDTO(LocalDate.now().toString())); add(new ParamDicDTO(LocalDate.now().toString()));
}}); }});
}}; }};

@ -144,4 +144,13 @@ public class ProjectOrderSaveReqVO {
@Schema(description = "包装状态") @Schema(description = "包装状态")
private Integer packageStatus; private Integer packageStatus;
@Schema(description = "客户分订单号")
private String pubuserdefnvc2;
@Schema(description = "订单序号")
private String priuserdefnvc2;
@Schema(description = "颜色")
private String freeItem0;
} }

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.module.biz.enums.ProjectOrderStatusEnum; import com.chanko.yunxi.mes.module.biz.enums.ProjectOrderStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -205,6 +206,21 @@ public class ProjectOrderDO extends BaseDO {
*/ */
private String ts; private String ts;
/**
*
*/
private String pubuserdefnvc2;
/**
*
*/
private String priuserdefnvc2;
/**
*
*/
private String freeItem0;
/** /**
* *
*/ */

@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -191,4 +192,19 @@ public class ProjectOrderSubDO extends BaseDO {
private Integer orderAmount; private Integer orderAmount;
/**
*
*/
private String pubuserdefnvc2;
/**
*
*/
private String priuserdefnvc2;
/**
*
*/
private String freeItem0;
} }

@ -800,9 +800,12 @@ public class ChanjetManager {
boolean hasMore = false; boolean hasMore = false;
List<QuerySaleOrderListResDTO> resulDataList = new ArrayList<>(32); List<QuerySaleOrderListResDTO> resulDataList = new ArrayList<>(32);
do { do {
// 分页查询近15天内的已生效的销售订单一次100条
QuerySaleOrderListReqVO paramVO = new QuerySaleOrderListReqVO(pageIndex); QuerySaleOrderListReqVO paramVO = new QuerySaleOrderListReqVO(pageIndex);
CommonResult<ListResultResVO> retResult = chanjetSpi.invoke(QUERY_SALE_ORDER_LIST, paramVO, ListResultResVO.class); CommonResult<ListResultResVO> retResult = chanjetSpi.invoke(QUERY_SALE_ORDER_LIST, paramVO, ListResultResVO.class);
if(!retResult.isSuccess()){
// 获取销售订单数据失败时抛出异常
if(!retResult.isSuccess()){
throw new RuntimeException(retResult.getMsg()); throw new RuntimeException(retResult.getMsg());
} }
ListResultResVO result = retResult.getData(); ListResultResVO result = retResult.getData();
@ -823,6 +826,8 @@ public class ChanjetManager {
resDTO.setExternalId(values.get(0)); resDTO.setExternalId(values.get(0));
resDTO.setExternalCode(values.get(1)); resDTO.setExternalCode(values.get(1));
resDTO.setCustomerId(ChanjetSpi.getIdPrefix() + Long.parseLong(values.get(2))); resDTO.setCustomerId(ChanjetSpi.getIdPrefix() + Long.parseLong(values.get(2)));
// 根据编码判断物料信息是否存在,没有则添加
MaterialDO materialDOByCode = materialMapper.selectOne(MaterialDO::getCode,values.get(9)); MaterialDO materialDOByCode = materialMapper.selectOne(MaterialDO::getCode,values.get(9));
if(materialDOByCode!=null){ if(materialDOByCode!=null){
resDTO.setMaterialId(materialDOByCode.getId()); resDTO.setMaterialId(materialDOByCode.getId());
@ -867,11 +872,12 @@ public class ChanjetManager {
// 处理数据 // 处理数据
if(!resulDataList.isEmpty()){ if(!resulDataList.isEmpty()){
// 存在新物料标记位
final Boolean[] hasNewMat = {false}; // 按照销售订单编码分组
Map<String, List<QuerySaleOrderListResDTO>> dataGroupByCode = Map<String, List<QuerySaleOrderListResDTO>> dataGroupByCode =
resulDataList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getExternalCode)); resulDataList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getExternalCode));
// 根据销售订单编码查询生产订单
List<ProjectOrderDO> doList = projectOrderMapper.selectList(new LambdaQueryWrapper<ProjectOrderDO>() {{ List<ProjectOrderDO> doList = projectOrderMapper.selectList(new LambdaQueryWrapper<ProjectOrderDO>() {{
in(ProjectOrderDO::getExternalCode, dataGroupByCode.keySet()); in(ProjectOrderDO::getExternalCode, dataGroupByCode.keySet());
eq(ProjectOrderDO::getOrderSource, ProjectOrderSourceEnum.INTERFACE.getCode()); eq(ProjectOrderDO::getOrderSource, ProjectOrderSourceEnum.INTERFACE.getCode());
@ -881,16 +887,18 @@ public class ChanjetManager {
// 处理 // 处理
for (Map.Entry<String, List<QuerySaleOrderListResDTO>> entry : dataGroupByCode.entrySet()) { for (Map.Entry<String, List<QuerySaleOrderListResDTO>> entry : dataGroupByCode.entrySet()) {
// 销售订单编码
String id = entry.getKey(); String id = entry.getKey();
List<QuerySaleOrderListResDTO> voList = entry.getValue(); List<QuerySaleOrderListResDTO> voList = entry.getValue();
QuerySaleOrderListResDTO vo = voList.get(0); QuerySaleOrderListResDTO vo = voList.get(0);
List<ProjectOrderDO> existsDOs = existsDOGroupByCode.get(id); List<ProjectOrderDO> existsDOs = existsDOGroupByCode.get(id);
QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id)); // 本地生产订单不存在,则创建
CommonResult<VoucherVO> orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class); if (CollUtil.isEmpty(existsDOs)) {
// QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id));
// CommonResult<VoucherVO> orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class);
if (CollUtil.isEmpty(existsDOs)) {
// 新增 // 新增
ProjectOrderSaveReqVO saveReqVO = new ProjectOrderSaveReqVO(); ProjectOrderSaveReqVO saveReqVO = new ProjectOrderSaveReqVO();
List<ProjectOrderSubDO> subDOList = new ArrayList<>(16); List<ProjectOrderSubDO> subDOList = new ArrayList<>(16);
@ -900,10 +908,11 @@ public class ChanjetManager {
.setOrderSource(ProjectOrderSourceEnum.INTERFACE.getCode()) .setOrderSource(ProjectOrderSourceEnum.INTERFACE.getCode())
.setOrderStatus(ProjectOrderStatusEnum.SAVE.getCode()) .setOrderStatus(ProjectOrderStatusEnum.SAVE.getCode())
.setIsUrgency(YesOrNoEnum.N.getCode()) .setIsUrgency(YesOrNoEnum.N.getCode())
.setActive(OperateTypeEnum.SAVE.name()); .setActive(OperateTypeEnum.SAVE.name())
;
SaleOrder saleOrder = new SaleOrder(); // SaleOrder saleOrder = new SaleOrder();
BeanUtil.copyProperties(orderDetail.getData().getData(),saleOrder); // BeanUtil.copyProperties(orderDetail.getData().getData(),saleOrder);
// 子项目处理 // 子项目处理
// 相同物料累计数量 // 相同物料累计数量
@ -911,114 +920,84 @@ public class ChanjetManager {
ProjectOrderSubDO subDO = new ProjectOrderSubDO(); ProjectOrderSubDO subDO = new ProjectOrderSubDO();
BeanUtil.copyProperties(mList.get(0), subDO); BeanUtil.copyProperties(mList.get(0), subDO);
// 获得颜色数据
String color = mList.get(0).getFreeItem0();
for(SaleOrderDetail saleOrderDetail : saleOrder.getSaleOrderDetails()){
MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{
if(saleOrderDetail.getInventory().getCode().equals(mid)) { eq(MaterialDO::getName, mList.get(0).getMaterialName());
for (Integer idx = 0; idx < saleOrderDetail.getDynamicPropertyValues().size(); idx++) { eq(MaterialDO::getCode, mList.get(0).getMaterialCode());
if (saleOrderDetail.getDynamicPropertyKeys().get(idx).equals("freeItem0".toLowerCase()) eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec());
&& !StringUtils.isEmpty(saleOrderDetail.getDynamicPropertyValues().get(idx))) { eq(MaterialDO::getColor, color);
}});
String color = saleOrderDetail.getDynamicPropertyValues().get(idx); if (materialDOWithColor == null) {
materialDOWithColor = new MaterialDO();
MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{ materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color);
eq(MaterialDO::getName, mList.get(0).getMaterialName()); materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color);
eq(MaterialDO::getCode, mList.get(0).getMaterialCode()); materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec()); materialDOWithColor.setColor(color);
eq(MaterialDO::getColor, color); materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
}}); materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode());
if (materialDOWithColor == null) { materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
materialDOWithColor = new MaterialDO(); materialDOWithColor.setUnit(mList.get(0).getUnit());
materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color); materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color); materialDOWithColor.setInventoryProperty(6);
materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
materialDOWithColor.setColor(color); materialMapper.insert(materialDOWithColor);
materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode()); subDO.setMaterialId(materialDOWithColor.getId());
materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
materialDOWithColor.setUnit(mList.get(0).getUnit());
materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
materialDOWithColor.setInventoryProperty(6);
materialMapper.insert(materialDOWithColor);
subDO.setMaterialId(materialDOWithColor.getId());
}
}
}
}
} }
// for(SaleOrderDetail saleOrderDetail : saleOrder.getSaleOrderDetails()){
//
// if(saleOrderDetail.getInventory().getCode().equals(mid)) {
// for (Integer idx = 0; idx < saleOrderDetail.getDynamicPropertyValues().size(); idx++) {
// if (saleOrderDetail.getDynamicPropertyKeys().get(idx).equals("freeItem0".toLowerCase())
// && !StringUtils.isEmpty(saleOrderDetail.getDynamicPropertyValues().get(idx))) {
//
// String color = saleOrderDetail.getDynamicPropertyValues().get(idx);
//
// MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{
// eq(MaterialDO::getName, mList.get(0).getMaterialName());
// eq(MaterialDO::getCode, mList.get(0).getMaterialCode());
// eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec());
// eq(MaterialDO::getColor, color);
// }});
// if (materialDOWithColor == null) {
// materialDOWithColor = new MaterialDO();
// materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color);
// materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color);
// materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
// materialDOWithColor.setColor(color);
// materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
// materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode());
// materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
// materialDOWithColor.setUnit(mList.get(0).getUnit());
// materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
// materialDOWithColor.setInventoryProperty(6);
//
// materialMapper.insert(materialDOWithColor);
//
// subDO.setMaterialId(materialDOWithColor.getId());
// }
// }
// }
// }
// }
subDO.setAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum()); subDO.setAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
subDO.setOrderAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum()); subDO.setOrderAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
subDO.setPubuserdefnvc2(mList.get(0).getPubuserdefnvc2());
subDO.setPriuserdefnvc2(mList.get(0).getPriuserdefnvc2());
subDO.setFreeItem0(mList.get(0).getFreeItem0());
subDOList.add(subDO); subDOList.add(subDO);
// if (materialMapper.selectList(MaterialDO::getCode, subDO.getMaterialCode()) == null) {
// hasNewMat[0] = true;
// }
}); });
saveReqVO.setProjectOrderSubs(subDOList); saveReqVO.setProjectOrderSubs(subDOList);
CommonResult<Long> orderId = projectOrderController.operateProjectOrder(saveReqVO); CommonResult<Long> orderId = projectOrderController.operateProjectOrder(saveReqVO);
saveReqVO.setId(orderId.getData()); saveReqVO.setId(orderId.getData());
// // 根据销售订单的每个产品的BOM找到物料编码为6开头的物料原先的生成生产订单的逻辑不变再另外生成一张生产订单
// // voList 是订单中的产品列表
// List<ProjectOrderSubDO> subJSDOList = new ArrayList<>(100);
// voList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getMaterialId)).forEach((mid, mList) -> {
// MaterialDO materialDO = materialMapper.selectById(mid);
// saveSemiFinishedOrder(materialDO,saveReqVO,mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum(),subJSDOList);
// });
//
// // 保存订单产品信息
// if(!CollUtil.isEmpty(subJSDOList)) {
// ProjectOrderDO newProjectOrderDO =BeanUtil.toBean(projectOrderMapper.selectById(saveReqVO.getId()),ProjectOrderDO.class);
// String code = newProjectOrderDO.getCode()+"-挤塑";
// newProjectOrderDO.setId(null)
// .setCode(code)
// .setExternalCode(code)
// .setStatus(ValidStatusEnum.VALID.getCode())
// .setOrderSource(ProjectOrderSourceEnum.INTERFACE.getCode())
// .setOrderStatus(ProjectOrderStatusEnum.SAVE.getCode())
// .setIsUrgency(YesOrNoEnum.N.getCode());
//
//
//
// // 保存订单信息
// projectOrderMapper.insert(newProjectOrderDO);
//
// // 相同物料累计数量
// List<ProjectOrderSubDO> subNewDOList = new ArrayList<>(100);
// subJSDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getMaterialId)).forEach((mid, mList) -> {
// ProjectOrderSubDO subDO = new ProjectOrderSubDO();
// BeanUtil.copyProperties(mList.get(0), subDO);
//
// subDO.setProjectOrderId(newProjectOrderDO.getId());
// subDO.setAmount(mList.stream().mapToInt(ProjectOrderSubDO::getAmount).sum());
// subDO.setOrderAmount(mList.stream().mapToInt(ProjectOrderSubDO::getOrderAmount).sum());
// subNewDOList.add(subDO);
// });
// projectOrderSubMapper.insertBatch(subNewDOList);
//
// // 手动记录日志
// operateLogFrameworkService.createOperateLog(request,
// LocalDateTime.now(),
// BusinessTypeEnum.PROJECT_ORDER.name(),
// newProjectOrderDO.getId(),
// OperateTypeEnum.valueOf(OperateTypeEnum.SAVE.name()).getType(),
// "");
// }
} }
} }
// if(hasNewMat[0]){
// // 存在新的物料,则同步物料信息
// this.queryMaterial();
// }
} }
} }

@ -98,6 +98,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
CustomerDO customer = customerService.getCustomer(projectOrder.getCustomerId()); CustomerDO customer = customerService.getCustomer(projectOrder.getCustomerId());
projectOrder.setCode(PROJECT_ORDER.getCode(customer==null?"":customer.getCode(), serialNumberDO.getSerialNumber().toString())); projectOrder.setCode(PROJECT_ORDER.getCode(customer==null?"":customer.getCode(), serialNumberDO.getSerialNumber().toString()));
projectOrder.setOrderStatus(ProjectOrderStatusEnum.valueOf(createReqVO.getActive()).getCode()); projectOrder.setOrderStatus(ProjectOrderStatusEnum.valueOf(createReqVO.getActive()).getCode());
if(!StringUtils.isEmpty(createReqVO.getExternalCode())){ if(!StringUtils.isEmpty(createReqVO.getExternalCode())){
projectOrder.setCode(projectOrder.getExternalCode()); projectOrder.setCode(projectOrder.getExternalCode());

@ -674,7 +674,7 @@ alter table wms_storage_check_mat Modify COLUMN pn_id bigint(20) default null CO
alter table project_sale_order ADD COLUMN ts varchar(32) default null COMMENT '用友时间戳'; alter table project_sale_order ADD COLUMN ts varchar(32) default null COMMENT '用友时间戳';
ALTER TABLE pro_task_report ADD COLUMN `has_synch_storage` TINYINT(1) DEFAULT null COMMENT '入库同步标识'; ALTER TABLE pro_task_report ADD COLUMN `has_synch_storage` TINYINT(1) DEFAULT null COMMENT '入库同步标识';
alter table project_sale_order_sub ADD COLUMN customer_sub_code varchar(64) default null COMMENT '客户分订单号'; alter table project_sale_order_sub ADD COLUMN pubuserdefnvc2 varchar(64) default null COMMENT '客户分订单号';
alter table project_sale_order_sub ADD COLUMN serial_number varchar(64) default null COMMENT '订单序列号'; alter table project_sale_order_sub ADD COLUMN priuserdefnvc2 varchar(64) default null COMMENT '订单序列号';
alter table project_sale_order_sub ADD COLUMN color varchar(64) default null COMMENT '颜色'; alter table project_sale_order_sub ADD COLUMN freeItem0 varchar(64) default null COMMENT '颜色';

Loading…
Cancel
Save