【生产订单】 1:物料信息中增加字段:外部编码、颜色,同步数据时; 2:同步数据时, 2.1 客户需要取值销售订单的“结算客户”; 2.2 需要把明细中的颜色也同步过来,若根据物料编码、物料名称、颜色、规格型号,在《物料信息》中找不到对应的物料,则自动新增一条插入《物料信息》中

dev
siontion 3 months ago
parent 6e19d1cf76
commit 09e32175bc

@ -21,7 +21,7 @@ public class QuerySaleOrderListReqVO extends AbstractChanjetContent {
// "SaleOrder.Department.Name", 提出部门
//"SaleOrder.Clerk.Name" 业务员
private List<String> selectFields = Arrays.asList("SaleOrder.ID", "SaleOrder.Code","SaleOrder.Customer.ID","SaleOrder.SaleOrderDetails.Inventory.ID","SaleOrder.SaleOrderDetails.Unit.Code","SaleOrder.SaleOrderDetails.Quantity","SaleOrder.SaleOrderDetails.Warehouse.ID","SaleOrder.VoucherDate");
private List<String> selectFields = Arrays.asList("SaleOrder.ID", "SaleOrder.Code","SaleOrder.idsettlecustomer","SaleOrder.SaleOrderDetails.Inventory.ID","SaleOrder.SaleOrderDetails.Unit.Code","SaleOrder.SaleOrderDetails.Quantity","SaleOrder.SaleOrderDetails.Warehouse.ID","SaleOrder.VoucherDate");
private Map<String, List<ParamDicDTO>> paramDic = new HashMap<String, List<ParamDicDTO>>(2){{
put("SaleOrder.VoucherState.Code", new ArrayList<ParamDicDTO>(){{
add(new ParamDicDTO("01"));

@ -805,6 +805,8 @@ public class ChanjetManager {
// 处理数据
if(!resulDataList.isEmpty()){
// 存在新物料标记位
final Boolean[] hasNewMat = {false};
Map<String, List<QuerySaleOrderListResDTO>> dataGroupByCode =
resulDataList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getExternalCode));
@ -841,6 +843,11 @@ public class ChanjetManager {
subDO.setAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
subDO.setOrderAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
subDOList.add(subDO);
if(materialMapper.selectOne(MaterialDO::getCode,subDO.getMaterialCode())==null){
hasNewMat[0] = true;
}
});
saveReqVO.setProjectOrderSubs(subDOList);
@ -897,6 +904,11 @@ public class ChanjetManager {
}
});
if(hasNewMat[0]){
// 存在新的物料,则同步物料信息
this.queryMaterial();
}
}
}

@ -175,6 +175,8 @@ public class ChanjetSchedule {
@Transactional(rollbackFor = Exception.class)
public void queryProcessBom(String projectOrderCode) throws ChanjetApiException {
TenantContextHolder.setTenantId(new Long(2));
// 存在新物料标记位
final Boolean[] hasNewMat = {false};
List<ProjectOrderSubDO> projectOrderSubDOS = projectOrderSubMapper.selectListAll(projectOrderCode);
List<String> codes = new ArrayList<>();
if(CollUtil.isNotEmpty(projectOrderSubDOS)){
@ -183,6 +185,12 @@ public class ChanjetSchedule {
List<BomMaterialVO> bomMaterialVOS = queryProcessBom(so.getProjectSubCode(), so.getWarehouseId());
if (CollUtil.isNotEmpty(bomMaterialVOS)) {
bomMaterialVOS.forEach(mo->{
if(materialMapper.selectOne(MaterialDO::getCode,mo.getProjectSubCode())==null){
hasNewMat[0] = true;
}
});
List<TplusLastestBomDO> insertList = BeanUtils.toBean(bomMaterialVOS, TplusLastestBomDO.class);
insertList.forEach(xo -> {
@ -198,6 +206,10 @@ public class ChanjetSchedule {
}
}
if(hasNewMat[0]){
// 存在新的物料,则同步物料信息
chanjetManager.queryMaterial();
}
}
}

Loading…
Cancel
Save