fix 晟华ERP对接及特殊电气交互
This commit is contained in:
@@ -157,59 +157,7 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
|
||||
@Override
|
||||
public void synchronize(Map whereJson) {
|
||||
JSONArray erp_materials = WQL.getWO("QMD_ME_MATERIAL").setDbname("dataSource1").addParam("flag", "2").process().getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(erp_materials)) {
|
||||
WQLObject material_table = WQLObject.getWQLObject("md_me_materialbase");
|
||||
List<String> material_codes = material_table.query().getResultJSONArray(0).stream().map(o -> ((JSONObject) o).getString("material_code")).collect(Collectors.toList());
|
||||
WQLObject dict_detail_table = WQLObject.getWQLObject("sys_dict_detail");
|
||||
|
||||
Long user_id = SecurityUtils.getCurrentUserId();
|
||||
String nick_name = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
erp_materials.forEach(o -> {
|
||||
JSONObject erp_material = (JSONObject) o;
|
||||
String material_code = erp_material.getString("cinvcode").substring(1);
|
||||
if (!material_codes.contains(material_code)) {
|
||||
JSONObject material = new JSONObject();
|
||||
long id = IdUtil.getSnowflake(1L, 1L).nextId();
|
||||
material.put("material_id", id);
|
||||
material.put("material_code", material_code);
|
||||
material.put("material_name", erp_material.getString("cinvname"));
|
||||
material.put("weight", String.format("%.2f", erp_material.getDoubleValue("changerate") * 1000));
|
||||
String qty = String.format("%.0f", erp_material.getDoubleValue("qty") * 1000);
|
||||
material.put("qty", qty);
|
||||
material.put("surplus_qty", qty);
|
||||
String aux_qty = String.format("%.0f", erp_material.getDoubleValue("auxqty"));
|
||||
material.put("aux_qty", aux_qty);
|
||||
material.put("surplus_aux_qty", aux_qty);
|
||||
material.put("order_code", erp_material.getString("free1"));
|
||||
|
||||
String furnace_code = material_code.substring(0, 2);
|
||||
JSONObject furnace_name = dict_detail_table.query("name = 'furnace' AND value = '" + furnace_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(furnace_name)) {
|
||||
material.put("furnace", furnace_name.getString("label"));
|
||||
} else {
|
||||
material.put("furnace", furnace_code);
|
||||
}
|
||||
String material_brick_code = material_code.substring(2, 5);
|
||||
JSONObject material_brick_type = dict_detail_table.query("name = 'material_brick_type' AND value = '" + material_brick_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(material_brick_type)) {
|
||||
material.put("material_brick_type", material_brick_type.getString("label"));
|
||||
} else {
|
||||
material.put("material_brick_type", material_brick_code);
|
||||
}
|
||||
material.put("product_grade", erp_material.getString("free3"));
|
||||
material.put("brick_type", erp_material.getString("free4"));
|
||||
|
||||
material.put("create_id", user_id);
|
||||
material.put("create_name", nick_name);
|
||||
material.put("create_time", now);
|
||||
|
||||
material_table.insert(material);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -728,10 +728,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) {
|
||||
workorder.put("unqualified_qty", unqualified_qty);
|
||||
}
|
||||
if (!"0".equals(workorder.getString("unqualified_qty"))) {
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromWorkorder(workorder);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
String qualified_qty = jsonObject.getString("qualified_qty");
|
||||
if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) {
|
||||
workorder.put("qualified_qty", qualified_qty);
|
||||
@@ -953,9 +949,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
vd.put("is_in_kiln", "0");
|
||||
vd_table.update(vd);
|
||||
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.GZ, vd.getLongValue("qty"), null);
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
|
||||
JSONObject workorder = WQLObject.getWQLObject("pdm_bd_workorder").query("workorder_id = " + vd.getString("workorder_id")).uniqueResult(0);
|
||||
to_package = TrueOrFalse.trueOrFalse(workorder.getString("is_pri"));
|
||||
}
|
||||
|
||||
@@ -450,11 +450,6 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
workorder.put("unqualified_qty", unqualified_qty);
|
||||
}
|
||||
|
||||
if (!"0".equals(workorder.getString("unqualified_qty"))) {
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromWorkorder(workorder);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
|
||||
String qualified_qty = row.getString("qualified_qty");
|
||||
if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) {
|
||||
workorder.put("qualified_qty", qualified_qty);
|
||||
|
||||
@@ -22,8 +22,6 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class FJCallEmptyTask extends AbstractAcsTask {
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
if (TaskStatus.EXECUTING.value().equals(status)) {
|
||||
@@ -114,12 +112,6 @@ public class FJCallEmptyTask extends AbstractAcsTask {
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
JSONArray request_param = new JSONArray();
|
||||
request_param.add(point.getString("point_code"));
|
||||
JSONObject result = wmsToAcsService.getTray(request_param);
|
||||
if (!"200".equals(result.getString("status"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("device_code"));
|
||||
|
||||
@@ -213,9 +213,6 @@ public class FJCallMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionOut = TaskUtils.buildRegionOut(task, RegionOutType.BCPCK);
|
||||
WQLObject.getWQLObject("st_ivt_regionout").insert(regionOut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,6 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
if (TaskStatus.EXECUTING.value().equals(status)) {
|
||||
@@ -65,10 +63,6 @@ public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
);
|
||||
|
||||
if (TrueOrFalse.trueOrFalse(vd.getString("is_full"))) {
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.CP, vd.getLongValue("qty"), vd.getLongValue("workorder_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
material_task.put("table_fk_id", pn.getLong("data_id"));
|
||||
|
||||
JSONObject empty_task = TaskUtils.buildTask(
|
||||
"分拣区叫空",
|
||||
TaskType.CALL_EMPTY.value(),
|
||||
@@ -148,13 +142,6 @@ public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(fmj_point)) {
|
||||
JSONArray request_param = new JSONArray();
|
||||
request_param.add(fmj_point.getString("point_code"));
|
||||
JSONObject result = wmsToAcsService.getTray(request_param);
|
||||
if (!"200".equals(result.getString("status"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
empty_task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
empty_task.put("point_code1", fmj_point.getString("device_code"));
|
||||
empty_task.put("vehicle_code", TaskUtils.formatVehicleCode(fmj_point.getString("vehicle_code")));
|
||||
@@ -310,20 +297,6 @@ public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
if (TaskType.SEND_MATERIAL.value().equals(task.getString("task_type"))) {
|
||||
JSONObject point2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
if (Region.FJ.value().equals(point2.getString("region_code")) && "5".equals(point2.getString("point_type"))) {
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vd_id = " + task.getString("group_id")).uniqueResult(0);
|
||||
JSONArray param = new JSONArray();
|
||||
JSONObject info = new JSONObject();
|
||||
info.put("device_code", point_code2);
|
||||
info.put("vehicle_type", task.getIntValue("vehicle_type") - 2);
|
||||
info.put("vehicle_code", task.getString("vehicle_code"));
|
||||
info.put("is_package", vd.getString("is_package"));
|
||||
param.add(info);
|
||||
wmsToAcsService.writeVehicle(param);
|
||||
}
|
||||
|
||||
JSONObject workorder = WQL
|
||||
.getWO("SEND_MATERIAL_TASK")
|
||||
|
||||
@@ -46,9 +46,6 @@ public class HLSendMaterialTask extends AbstractAcsTask {
|
||||
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
|
||||
JSONObject vd = form.getJSONObject("vd");
|
||||
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.YL, vd.getLongValue("weight"), vd.getLongValue("workorder_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"混料区送料",
|
||||
TaskType.SEND_MATERIAL.value(),
|
||||
@@ -66,7 +63,6 @@ public class HLSendMaterialTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
|
||||
@@ -220,9 +220,6 @@ public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.BCPRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,9 +44,6 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
|
||||
JSONObject vd = form.getJSONObject("vd");
|
||||
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.YZ, vd.getLongValue("qty"), vd.getLongValue("workorder_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"压制区送料",
|
||||
TaskType.SEND_MATERIAL.value(),
|
||||
@@ -64,7 +61,6 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
|
||||
@@ -43,9 +43,6 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
JSONObject point = form.getJSONObject("point");
|
||||
JSONObject vd = form.getJSONObject("vd");
|
||||
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.CP, vd.getLongValue("qty"), vd.getLongValue("workorder_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"半托缓存区去包装",
|
||||
TaskType.TO_PACKAGE.value(),
|
||||
@@ -63,7 +60,6 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
@@ -227,19 +223,6 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vd_id = " + task.getString("group_id")).uniqueResult(0);
|
||||
JSONArray param = new JSONArray();
|
||||
JSONObject info = new JSONObject();
|
||||
info.put("device_code", point_code2);
|
||||
info.put("vehicle_type", task.getIntValue("vehicle_type") - 2);
|
||||
info.put("vehicle_code", task.getString("vehicle_code"));
|
||||
info.put("is_package", vd.getString("is_package"));
|
||||
param.add(info);
|
||||
wmsToAcsService.writeVehicle(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,9 +45,6 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
|
||||
JSONObject vd = form.getJSONObject("vd");
|
||||
|
||||
JSONObject pn = TaskUtils.buildPN(PickType.CP, vd.getLongValue("qty"), vd.getLongValue("workorder_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").insert(pn);
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"分拣区去包装",
|
||||
TaskType.TO_PACKAGE.value(),
|
||||
@@ -65,7 +62,6 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
@@ -229,19 +225,6 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vd_id = " + task.getString("group_id")).uniqueResult(0);
|
||||
JSONArray param = new JSONArray();
|
||||
JSONObject info = new JSONObject();
|
||||
info.put("device_code", point_code2);
|
||||
info.put("vehicle_type", task.getIntValue("vehicle_type") - 2);
|
||||
info.put("vehicle_code", task.getString("vehicle_code"));
|
||||
info.put("is_package", vd.getString("is_package"));
|
||||
param.add(info);
|
||||
wmsToAcsService.writeVehicle(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,79 +158,4 @@ public class TaskUtils {
|
||||
row.put("update_optname", form.getString("create_name"));
|
||||
row.put("update_time", DateUtil.now());
|
||||
}
|
||||
|
||||
public static JSONObject buildPN(PickType pickType, long real_qty, Long workorder_id) {
|
||||
JSONObject pn = new JSONObject();
|
||||
pn.put("data_id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
pn.put("pick_type", pickType.value());
|
||||
pn.put("real_qty", real_qty);
|
||||
pn.put("workorder_id", workorder_id);
|
||||
pn.put("create_time", DateUtil.now());
|
||||
return pn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionInFromTask(JSONObject task, RegionInType regionInType) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "1").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0);
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.now());
|
||||
regionIn.put("cVouchType", regionInType.label());
|
||||
String material_code = detail.getString("material_code");
|
||||
String order_code = detail.getString("order_code");
|
||||
regionIn.put("cMocode", order_code);
|
||||
regionIn.put("cInvCode", regionInType.value() + material_code);
|
||||
double vd_weight = detail.getDoubleValue("vd_weight");
|
||||
int qty = detail.getIntValue("qty");
|
||||
double material_weight = detail.getDoubleValue("material_weight");
|
||||
if (vd_weight == 0) {
|
||||
vd_weight = qty * material_weight;
|
||||
}
|
||||
regionIn.put("iQuantity", String.format("%.3f", vd_weight / 1000));
|
||||
regionIn.put("iNum", qty);
|
||||
regionIn.put("iinvexchrate", String.format("%.5f", material_weight / 1000));
|
||||
regionIn.put("cBatch", order_code);
|
||||
return regionIn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionInFromWorkorder(JSONObject workorder) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "2").addParam("workorder_id", workorder.getString("workorder_id")).process().uniqueResult(0);
|
||||
RegionInType regionInType = RegionInType.BCPFPRK;
|
||||
if (Region.FJ.value().equals(detail.getString("region_code"))) {
|
||||
regionInType = RegionInType.CCPFPRK;
|
||||
}
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.now());
|
||||
regionIn.put("cVouchType", regionInType.label());
|
||||
String material_code = detail.getString("material_code");
|
||||
String order_code = detail.getString("order_code");
|
||||
regionIn.put("cMocode", order_code);
|
||||
regionIn.put("cInvCode", regionInType.value() + material_code);
|
||||
int qty = workorder.getIntValue("unqualified_qty");
|
||||
regionIn.put("iNum", qty);
|
||||
double material_weight = detail.getDoubleValue("material_weight");
|
||||
regionIn.put("iinvexchrate", String.format("%.5f", material_weight / 1000));
|
||||
regionIn.put("iQuantity", String.format("%.3f", qty * material_weight / 1000));
|
||||
regionIn.put("cBatch", order_code);
|
||||
return regionIn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionOut(JSONObject task, RegionOutType regionOutType) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "1").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0);
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.now());
|
||||
String material_code = detail.getString("material_code");
|
||||
String order_code = detail.getString("order_code");
|
||||
regionIn.put("cMocode", order_code);
|
||||
regionIn.put("cInvCode", regionOutType.value() + material_code);
|
||||
regionIn.put("iQuantity", String.format("%.3f", detail.getDoubleValue("vd_weight") / 1000));
|
||||
regionIn.put("iNum", detail.getString("qty"));
|
||||
regionIn.put("iinvexchrate", String.format("%.5f", detail.getDoubleValue("material_weight") / 1000));
|
||||
regionIn.put("cBatch", order_code);
|
||||
return regionIn;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user