opt:优化拣选数量计算
This commit is contained in:
@@ -16,6 +16,7 @@ import java.math.BigDecimal;
|
||||
@Data
|
||||
@ToString
|
||||
public class TaskInfo {
|
||||
//数量
|
||||
private BigDecimal qty;
|
||||
private String vehicle_code;
|
||||
private String create_time;
|
||||
@@ -25,7 +26,9 @@ public class TaskInfo {
|
||||
private String material_name;
|
||||
private String material_code;
|
||||
private String material_spec;
|
||||
//需出数量
|
||||
private BigDecimal assign_qty;
|
||||
//单重
|
||||
private BigDecimal single_weight;
|
||||
//理论数量
|
||||
private BigDecimal theory_qty;
|
||||
@@ -35,4 +38,5 @@ public class TaskInfo {
|
||||
private BigDecimal remaining_qty;
|
||||
private String form_data;
|
||||
private String product_area;
|
||||
private BigDecimal vehicle_weight;
|
||||
}
|
||||
@@ -319,11 +319,17 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
BigDecimal theoryQty = BigDecimal.ZERO;
|
||||
BigDecimal actual_weight = BigDecimal.ZERO;
|
||||
try {
|
||||
String code1 = code;
|
||||
if ("1308".equals(code)) {
|
||||
code1 = "1207";
|
||||
} else if ("1311".equals(code)) {
|
||||
code1 = "1210";
|
||||
}
|
||||
InteracteDto<Object> dto = InteracteDto.builder()
|
||||
.service("wmsToAcsService")
|
||||
.trace_id(MDC.get("trace_id"))
|
||||
.type("getWeight")
|
||||
.data(new JSONObject().fluentPut("device_code", code))
|
||||
.data(new JSONObject().fluentPut("device_code", code1))
|
||||
.build();
|
||||
//查询称重重量
|
||||
TableDataInfo result = InterationUtil.notifyExt("/api/wmsToAcs/apply", (JSONObject) JSON.toJSON(dto));
|
||||
@@ -334,7 +340,6 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
if (data != null && data.containsKey("weight")) {
|
||||
String weightStr = data.getString("weight");
|
||||
if (ObjectUtil.isNotEmpty(weightStr)) {
|
||||
// 转换为 BigDecimal
|
||||
actual_weight = new BigDecimal(weightStr.trim());
|
||||
}
|
||||
}
|
||||
@@ -344,9 +349,10 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
r.setActual_weight(actual_weight);
|
||||
r.setActual_weight(r.getActual_weight().subtract(r.getVehicle_weight()).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN));
|
||||
//根据称重信息计算理论数量
|
||||
if (r.getActual_weight().compareTo(BigDecimal.ZERO) > 0) {
|
||||
//计算理论重量
|
||||
if (r.getActual_weight().compareTo(BigDecimal.ZERO) > 0&&r.getSingle_weight().compareTo(BigDecimal.ZERO)> 0) {
|
||||
//计算理论重量:称重-载具重量/单重 = 理论数量,理论数量!=需出数量:称重异常
|
||||
theoryQty = r.getActual_weight().divide(r.getSingle_weight(), 0, RoundingMode.DOWN);
|
||||
r.setActual_weight(r.getActual_weight().setScale(2, RoundingMode.DOWN));
|
||||
}
|
||||
@@ -354,8 +360,9 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
//计算剩余数量
|
||||
BigDecimal remaining_qty = r.getQty().subtract(theoryQty).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN);
|
||||
r.setRemaining_qty(remaining_qty);
|
||||
//小数点
|
||||
//单重
|
||||
r.setSingle_weight(r.getSingle_weight().setScale(2, RoundingMode.DOWN));
|
||||
//需出数量
|
||||
r.setAssign_qty(r.getAssign_qty().setScale(0, RoundingMode.DOWN));
|
||||
r.setQty(r.getQty().setScale(0, RoundingMode.DOWN));
|
||||
});
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
</select>
|
||||
<select id="getPickingTask" resultType="org.nl.wms.pda_manage.cockpit.service.dao.TaskInfo">
|
||||
SELECT
|
||||
b.weight as vehicle_weight,
|
||||
p.`code` as task_type,
|
||||
d.vehicle_code,
|
||||
m.material_name,
|
||||
@@ -65,6 +66,7 @@
|
||||
ON d.parent_id = p.id
|
||||
LEFT JOIN md_me_materialbase m
|
||||
ON d.material_id = m.material_id
|
||||
LEFT JOIN bm_vehicle_info b ON b.vehicle_code = d.vehicle_code
|
||||
WHERE
|
||||
JSON_UNQUOTE(JSON_EXTRACT(p.form_data, '$.point_code')) = #{code}
|
||||
AND p.status = '10'
|
||||
|
||||
@@ -60,8 +60,9 @@ public class SyncErpBillsScheduleService {
|
||||
"PRD_PPBOM", "FPrdOrgId",
|
||||
"PRD_MO", "FPrdOrgId",
|
||||
"SAL_SaleOrder", "FStockOrgId",
|
||||
"PUR_ReceiveBill", "FStockOrgId"
|
||||
, "ka7c19edf9d4b4b39b8cc4a06802163b0", "F_PMSY_PrdOrgId");
|
||||
"PUR_ReceiveBill", "FStockOrgId",
|
||||
"PUR_MRAPP", "FPURCHASEORGID",
|
||||
"ka7c19edf9d4b4b39b8cc4a06802163b0", "F_PMSY_PrdOrgId");
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
@@ -69,8 +70,9 @@ public class SyncErpBillsScheduleService {
|
||||
MDC.put("requestIp", "127.0.0.1");
|
||||
MDC.put("requestTime", DateUtil.now());
|
||||
LuceneAppender.traceIdTL.set(BaseCode.intToChars(IdUtil.getLongId()));
|
||||
//List<SyncFormMapping> list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
|
||||
List<SyncFormMapping> list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "ka7c19edf9d4b4b39b8cc4a06802163b0", "PRD_MO", "PUR_ReceiveBill", "PRD_PPBOM"));
|
||||
// List<SyncFormMapping> list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
|
||||
List<SyncFormMapping> list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "ka7c19edf9d4b4b39b8cc4a06802163b0","PRD_PPBOM","PRD_MO","SAL_SaleOrder","PUR_ReceiveBill","PUR_MRAPP"));
|
||||
// List<SyncFormMapping> list = syncFormMappingServiceImpl.list(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "ka7c19edf9d4b4b39b8cc4a06802163b0","PRD_PPBOM","PRD_MO","SAL_SaleOrder","PUR_ReceiveBill","PUR_MRAPP"));
|
||||
for (SyncFormMapping m : list) {
|
||||
JSONArray mappingJson = m.getMapping_json();
|
||||
String mappingString = JSON.toJSONString(mappingJson);
|
||||
@@ -79,6 +81,7 @@ public class SyncErpBillsScheduleService {
|
||||
} finally {
|
||||
LuceneAppender.traceIdTL.remove();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -90,13 +93,18 @@ public class SyncErpBillsScheduleService {
|
||||
IdentifyInfo identifyInfo = new IdentifyInfo();
|
||||
BeanUtils.copyProperties(erpSec, identifyInfo);
|
||||
K3CloudApi cloudApi = new K3CloudApi(identifyInfo);
|
||||
//构建查询条件
|
||||
// 获取当前日期
|
||||
String today = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
||||
String filterString = BillOrg_Mapping.get(formType) + " ='750572' AND FDocumentStatus='C' ";
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.DAY_OF_MONTH, -10);
|
||||
String sevenDaysAgo = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
|
||||
String filterString = BillOrg_Mapping.get(formType) + " = '750572' AND FDocumentStatus = 'C' ";
|
||||
if ("ka7c19edf9d4b4b39b8cc4a06802163b0".equals(formType)) {
|
||||
filterString += " AND F_PMSY_BillStatus ='A' AND F_PMSY_CreateDate >= '" + today + " 00:00:00' and F_PMSY_CreateDate <= '" + today + " 23:59:59' ";
|
||||
filterString += " AND F_PMSY_BillStatus = 'A' AND F_PMSY_CreateDate >= '" + sevenDaysAgo + " 00:00:00' AND F_PMSY_CreateDate <= '" + today + " 23:59:59' ";
|
||||
} else if ("SAL_SaleOrder".equals(formType)) {
|
||||
filterString += " AND FCloseStatus ='A' AND FCreateDate >= '" + sevenDaysAgo + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59' ";
|
||||
} else {
|
||||
filterString += " AND FCreateDate >= '" + today + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59' ";
|
||||
filterString += " AND FCreateDate >= '" + sevenDaysAgo + " 00:00:00' and FCreateDate <= '" + today + " 23:59:59' ";
|
||||
}
|
||||
// if ("ka7c19edf9d4b4b39b8cc4a06802163b0".equals(formType)) {
|
||||
// filterString += " AND F_PMSY_StockOrgId='750572' AND F_PMSY_BillStatus ='A' AND F_PMSY_CreateDate >= '2024-11-01 00:00:00' and F_PMSY_CreateDate <= '2024-12-04 23:59:59' ";
|
||||
@@ -177,7 +185,7 @@ public class SyncErpBillsScheduleService {
|
||||
}
|
||||
}
|
||||
|
||||
public void syncData1(String mappingJson, String formType, Boolean dtlSplit) {
|
||||
public void syncData2(String mappingJson, String formType, Boolean dtlSplit) {
|
||||
boolean islock = lock.tryLock();
|
||||
try {
|
||||
if (islock) {
|
||||
@@ -329,6 +337,7 @@ public class SyncErpBillsScheduleService {
|
||||
List<PmFormData> formDataFilterList = formDataList.stream().filter(rs1 -> "BD_MATERIAL_1".equals(rs1.getForm_type())).collect(Collectors.toList());
|
||||
for (PmFormData formData : formDataFilterList) {
|
||||
formDataService.save(formData);
|
||||
log.info("数据同步成功!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user