|
@@ -6,6 +6,7 @@ import cn.ezhizao.project.business.domain.*;
|
|
|
import cn.ezhizao.project.business.domain.vo.OutsourceOrderDetailBalance;
|
|
|
import cn.ezhizao.project.business.service.*;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
@@ -59,7 +60,9 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
@Resource
|
|
|
private IBizOutsourcedOrderDetailProcessService bizOutsourcedOrderDetailProcessService;
|
|
|
@Resource
|
|
|
- private IBizMaterialBaseService bizMaterialBaseInfoService;
|
|
|
+ private IBizMaterialBaseService bizMaterialBaseService;
|
|
|
+ @Resource
|
|
|
+ private IBizMaterialBaseInfoService bizMaterialBaseInfoService;
|
|
|
|
|
|
/**
|
|
|
* 拉取 Sfc10100 表数据到 machine_center表
|
|
@@ -118,7 +121,7 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
private boolean pullP2Inv10100() {
|
|
|
BizPullP2Time pullDetail = new BizPullP2Time();
|
|
|
// 加工中心
|
|
|
- pullDetail.setType("material_base_info");
|
|
|
+ pullDetail.setType("material_base");
|
|
|
List<BizPullP2Time> pullDetails = pullP2TimeService.getList(pullDetail);
|
|
|
BizPullP2Time lastPullDetail = null;
|
|
|
if (pullDetails.size() > 0) {
|
|
@@ -135,7 +138,7 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
queryWrapper.apply("modate IS NOT NULL AND modate > {0}", newCondition);
|
|
|
}
|
|
|
List<Inv10100> inv10100List = inv10100Service.getList(queryWrapper);
|
|
|
- List<BizMaterialBase> machineCenters = bizMaterialBaseInfoService.query().list();
|
|
|
+ List<BizMaterialBase> machineCenters = bizMaterialBaseService.query().list();
|
|
|
List<BizMaterialBase> insertMachineCenter = new ArrayList<>();
|
|
|
List<BizMaterialBase> updateMachineCenter = new ArrayList<>();
|
|
|
|
|
@@ -152,6 +155,55 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ if ((insertMachineCenter.isEmpty() || bizMaterialBaseService.saveBatch(insertMachineCenter)) && (updateMachineCenter.isEmpty() || bizMaterialBaseService.updateBatchById(updateMachineCenter))) {
|
|
|
+ BizPullP2Time bizPullP2Time = new BizPullP2Time();
|
|
|
+ // 将当前时间赋值给 pullTime 属性
|
|
|
+ bizPullP2Time.setPullTime(new Date());
|
|
|
+ bizPullP2Time.setType("material_base");
|
|
|
+ // 保存数据
|
|
|
+ pullP2TimeService.saveOrUpdate(bizPullP2Time);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean pullP2Bom30101() {
|
|
|
+ BizPullP2Time pullDetail = new BizPullP2Time();
|
|
|
+ // 加工中心
|
|
|
+ pullDetail.setType("material_base_info");
|
|
|
+ List<BizPullP2Time> pullDetails = pullP2TimeService.getList(pullDetail);
|
|
|
+ BizPullP2Time lastPullDetail = null;
|
|
|
+ if (pullDetails.size() > 0) {
|
|
|
+ int lastIndex = pullDetails.size() - 1;
|
|
|
+ lastPullDetail = pullDetails.get(lastIndex);
|
|
|
+ }
|
|
|
+ QueryWrapper<Bom30101> queryWrapper = new QueryWrapper<>();
|
|
|
+ if (lastPullDetail != null) {
|
|
|
+ Date newCondition = lastPullDetail.getPullTime();
|
|
|
+ /*
|
|
|
+ * 这里应该根据新系统中记录的最大的拉取日期
|
|
|
+ * modate:P2中的修改日期,为了避免重复拉取,需要做条件判断。modate必须大于上一次拉取时间
|
|
|
+ */
|
|
|
+ queryWrapper.apply("modate IS NOT NULL AND modate > {0}", newCondition);
|
|
|
+ }
|
|
|
+ List<Bom30101> bom30101List = bom30101Service.getList(queryWrapper);
|
|
|
+ List<BizMaterialBaseInfo> machineCenters = bizMaterialBaseInfoService.query().list();
|
|
|
+ List<BizMaterialBaseInfo> insertMachineCenter = new ArrayList<>();
|
|
|
+ List<BizMaterialBaseInfo> updateMachineCenter = new ArrayList<>();
|
|
|
+
|
|
|
+ bom30101List.forEach(l -> {
|
|
|
+ // 判断之前是否有这个材料
|
|
|
+ if (machineCenters.stream().anyMatch(v -> v.getMaterialCode().equals(l.getPart().trim()) && v.getProductCode().equals(l.getCpart().trim()))) {
|
|
|
+ // 已插入材料
|
|
|
+ BizMaterialBaseInfo oldItem = machineCenters.stream().filter(v -> v.getMaterialCode().equals(l.getPart().trim()) && v.getProductCode().equals(l.getCpart().trim())).findFirst().orElse(null);
|
|
|
+ oldItem.setByBom30101(l);
|
|
|
+ updateMachineCenter.add(oldItem);
|
|
|
+ } else {
|
|
|
+ BizMaterialBaseInfo newItem = new BizMaterialBaseInfo(l);
|
|
|
+ insertMachineCenter.add(newItem);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
if ((insertMachineCenter.isEmpty() || bizMaterialBaseInfoService.saveBatch(insertMachineCenter)) && (updateMachineCenter.isEmpty() || bizMaterialBaseInfoService.updateBatchById(updateMachineCenter))) {
|
|
|
BizPullP2Time bizPullP2Time = new BizPullP2Time();
|
|
|
// 将当前时间赋值给 pullTime 属性
|
|
@@ -177,16 +229,19 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
|
|
|
boolean pullResult = pullP2Sfc10100();
|
|
|
boolean pullMaterialResult = pullP2Inv10100();
|
|
|
+ boolean pullMaterialInfoResult = pullP2Bom30101();
|
|
|
// 获取产品材料信息
|
|
|
- QueryWrapper<Inv10100> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.in("rtrim(part)", furnaceNoInfos.isEmpty() ? Collections.singletonList("0") : furnaceNoInfos.stream().map(BizFurnaceNoInfo::getRawMaterialCode).collect(Collectors.toList()));
|
|
|
- List<Inv10100> inv10100s = inv10100Service.getList(queryWrapper);
|
|
|
- List<BizProduct> products = bizProductService.query().in("id", orderDetails.stream().map(BizOutsourcedOrderDetail::getProductId).collect(Collectors.toList())).list();
|
|
|
- QueryWrapper<Bom30101> bom30101QueryWrapper = new QueryWrapper<>();
|
|
|
- bom30101QueryWrapper.in("rtrim(cpart)", products.isEmpty() ? Collections.singletonList("0") : products.stream().map(BizProduct::getProductCode).collect(Collectors.toList()));
|
|
|
- List<Bom30101> bom30101s = bom30101Service.getList(bom30101QueryWrapper);
|
|
|
+// QueryWrapper<Inv10100> queryWrapper = new QueryWrapper<>();
|
|
|
+// queryWrapper.in("rtrim(part)", furnaceNoInfos.isEmpty() ? Collections.singletonList("0") : furnaceNoInfos.stream().map(BizFurnaceNoInfo::getRawMaterialCode).collect(Collectors.toList()));
|
|
|
+// List<Inv10100> inv10100s = inv10100Service.getList(queryWrapper);
|
|
|
+ List<BizMaterialBase> materialBases = bizMaterialBaseService.query().in("material_code", furnaceNoInfos.isEmpty() ? Collections.singletonList("0") : furnaceNoInfos.stream().map(BizFurnaceNoInfo::getRawMaterialCode).collect(Collectors.toList())).list();
|
|
|
+ List<BizProduct> products = bizProductService.query().in("id", orderDetails.isEmpty() ? Collections.singletonList(0L) : orderDetails.stream().map(BizOutsourcedOrderDetail::getProductId).collect(Collectors.toList())).list();
|
|
|
+// QueryWrapper<Bom30101> bom30101QueryWrapper = new QueryWrapper<>();
|
|
|
+// bom30101QueryWrapper.in("rtrim(cpart)", products.isEmpty() ? Collections.singletonList("0") : products.stream().map(BizProduct::getProductCode).collect(Collectors.toList()));
|
|
|
+// List<Bom30101> bom30101s = bom30101Service.getList(bom30101QueryWrapper);
|
|
|
+ List<BizMaterialBaseInfo> materialBaseInfos = bizMaterialBaseInfoService.query().in("product_code", products.isEmpty() ? Collections.singletonList("0") : products.stream().map(BizProduct::getProductCode).collect(Collectors.toList())).list();
|
|
|
QueryWrapper<Inc10100> inc10100QueryWrapper = new QueryWrapper<>();
|
|
|
- inc10100QueryWrapper.in("rtrim(cpart)", products.isEmpty() ? Collections.singletonList("0") : products.stream().map(BizProduct::getProductCode).collect(Collectors.toList()));
|
|
|
+ inc10100QueryWrapper.in("rtrim(part)", products.isEmpty() ? Collections.singletonList("0") : products.stream().map(BizProduct::getProductCode).collect(Collectors.toList()));
|
|
|
List<Inc10100> inc10100List = inc10100Service.getList(inc10100QueryWrapper);
|
|
|
List<BizOutsourcedOrderDetailProcess> processes = bizOutsourcedOrderDetailProcessService.query().in("detail_id", orderDetails.isEmpty() ? Collections.singletonList(0L) : orderDetails.stream().map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList())).list();
|
|
|
|
|
@@ -202,10 +257,18 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
BizSupplier supplier = suppliers.stream().filter(v -> v.getId().equals(l.getSupplierId())).findFirst().orElse(null);
|
|
|
List<BizReturnReceiptDetail> currentReturn = returnReceiptDetails.stream().filter(v -> v.getOutsourceDetailId().equals(l.getId())).collect(Collectors.toList());
|
|
|
BizFurnaceNoInfo furnaceNoInfo = furnaceNoInfos.stream().filter(v -> v.getDayworkId().equals(l.getDayworkId())).findFirst().orElse(new BizFurnaceNoInfo());
|
|
|
- Inv10100 itemInv10100 = inv10100s.stream().filter(v -> v.getPart().trim().equals(furnaceNoInfo.getRawMaterialCode())).findFirst().orElse(null);
|
|
|
+ BizMaterialBase itemInv10100 = materialBases.stream().filter(v -> v.getMaterialCode().trim().equals(furnaceNoInfo.getRawMaterialCode())).findFirst().orElse(null);
|
|
|
BizProduct product = products.stream().filter(v -> v.getId().equals(l.getProductId())).findFirst().orElse(new BizProduct());
|
|
|
- Bom30101 itemBom30101 = bom30101s.stream().filter(v -> v.getCpart().trim().equals(product.getProductCode())).findFirst().orElse(new Bom30101());
|
|
|
+ BizMaterialBaseInfo itemBom30101 = materialBaseInfos.stream().filter(v -> v.getProductCode().trim().equals(product.getProductCode())).findFirst().orElse(new BizMaterialBaseInfo());
|
|
|
Inc10100 itemInc10100 = inc10100List.stream().filter(v -> v.getPart().trim().equals(product.getProductCode())).findFirst().orElse(new Inc10100());
|
|
|
+ balance.setProductCode(product.getProductCode());
|
|
|
+ balance.setProductDescription(product.getDescription());
|
|
|
+ balance.setProcessName(processes.stream().map(BizOutsourcedOrderDetailProcess::getProcessAlias).collect(Collectors.joining()));
|
|
|
+ balance.setProductName(product.getDrawingNumber());
|
|
|
+ balance.setProductNum(l.getProductNum());
|
|
|
+ balance.setLotCode(l.getLotCode());
|
|
|
+ balance.setSupplierCode(supplier != null ? supplier.getCode() : "");
|
|
|
+ balance.setTaxRatio(supplier != null ? supplier.getTaxRatio() : null);
|
|
|
// 料损数量
|
|
|
// 99984与99024无料损数量 【不扣料损】
|
|
|
// 其他外协厂[料损数量]计算公式=发出数量 * (1 - 料损率 / 1000) - 合格数量,结果取整 【料损率从外协厂基础配置表中读】
|
|
@@ -336,7 +399,7 @@ public class OutsourceBalanceController extends BaseController {
|
|
|
// 按炉结算
|
|
|
}
|
|
|
}
|
|
|
- balance.setFreightPrice(supplier.getFreightDeductUnitPrice().multiply(BigDecimal.valueOf(l.getNewCarrierCount())).setScale(4, RoundingMode.HALF_UP));
|
|
|
+ balance.setFreightPrice(supplier != null ? supplier.getFreightDeductUnitPrice().multiply(BigDecimal.valueOf(l.getNewCarrierCount())).setScale(4, RoundingMode.HALF_UP) : null);
|
|
|
balances.add(balance);
|
|
|
});
|
|
|
return success(balances);
|