ensign/src/main/java/com/yem/wm/task/TrackconsoleMachineTask.java
2024-08-26 09:19:12 +08:00

211 lines
12 KiB
Java

package com.yem.wm.task;
import com.yem.wm.es.Util.PlanJobCMMP;
import com.yem.wm.es.Util.ViewInterfaceDocking;
import com.yem.wm.utils.DynamicObjectUtil;
import com.yem.wm.utils.YEM;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.exception.KDException;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.util.*;
/**
* @author zhouc
* @date 2024/4/13 11:43
* @className TrackconsoleMachineTask
* @description 定时获取整机信息
*/
public class TrackconsoleMachineTask extends AbstractTask {
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("yem_tracktaskconsole", "id,billno,yem_bd_products,yem_es_salesorder_r,yem_es_salesorder_r.yem_es_salesorder_z" +
",yem_es_salesorder_z.yem_resourcescode,yem_es_salesorder_z.yem_milltype,yem_es_salesorder_z.yem_vehicleno,yem_es_salesorder_z.yem_engineno,yem_es_salesorder_z.yem_enginemodel" +
",yem_es_salesorder_z.yem_enginevendor,yem_es_salesorder_z.yem_currentstate,yem_es_salesorder_z.yem_currentstatedate,yem_es_salesorder_z.yem_prepareway" +
",yem_es_salesorder_z.yem_assembleupline,yem_es_salesorder_z.yem_upline,yem_es_salesorder_z.yem_assembledownline,yem_es_salesorder_z.yem_downline" +
",yem_es_salesorder_z.yem_debugst,yem_es_salesorder_z.yem_debugstatdate,yem_es_salesorder_z.yem_accuracytest,yem_es_salesorder_z.yem_accuratdate" +
",yem_es_salesorder_z.yem_waitforinspection,yem_es_salesorder_z.yem_waitforinspecdate,yem_es_salesorder_z.yem_qualitytest,yem_es_salesorder_z.yem_qualitytestdate" +
",yem_es_salesorder_z.yem_factputstor,yem_es_salesorder_z.yem_factputstordate,yem_es_salesorder_z.yem_backonline,yem_es_salesorder_z.yem_backonlinedate" +
",yem_es_salesorder_z.yem_putintostoragedate,yem_es_salesorder_z.yem_putintostorage"
, new QFilter[]{new QFilter("billstatus", QCP.equals, "C")});
if (dynamicObjects.length > 0) {
for (DynamicObject dynamicObject : dynamicObjects) {
HashMap<String, Object> hashMap = new HashMap<>();
Set<String> resourcesCodeSet = new HashSet();
Set<String> vehicleNoSet = new HashSet();
// int machineProductInfoRows = dynamicObject.getEntryRowCount("yem_es_salesorder_z");
// for (int i = 0; i < machineProductInfoRows; i++) {
DynamicObjectCollection yemEsSalesorderR = dynamicObject.getDynamicObjectCollection("yem_es_salesorder_r");
if (yemEsSalesorderR.size() > 0) {
for (DynamicObject yemEsSalesorder : yemEsSalesorderR) {
DynamicObjectCollection yemEsSalesorderZ = yemEsSalesorder.getDynamicObjectCollection("yem_es_salesorder_z");
if (yemEsSalesorderZ.size() > 0) {
for (DynamicObject object : yemEsSalesorderZ) {
DynamicObject resourcesCode = object.getDynamicObject("yem_resourcescode");
if (YEM.isNotEmpty(resourcesCode)) {
resourcesCodeSet.add(resourcesCode.getString("number"));
}
String vehicleNo = object.getString("yem_vehicleno");
vehicleNoSet.add(vehicleNo);
}
}
// }
if (resourcesCodeSet.size() > 0) {
hashMap.put(PlanJobCMMP.productCode, resourcesCodeSet);
}
if (vehicleNoSet.size() > 0) {
hashMap.put(PlanJobCMMP.planPin, vehicleNoSet);
}
long productsid = dynamicObject.getDynamicObject("yem_bd_products").getLong("id");
List<Map> dockings = ViewInterfaceDocking.docking(ViewInterfaceDocking.PLAN_JOB, hashMap, productsid);
if (YEM.isNotEmpty(dockings)) {
dockings.sort(new Comparator<Map>() {
@Override
public int compare(Map o1, Map o2) {
Date date1 = (Date) o1.get(PlanJobCMMP.jobTime);
Date date2 = (Date) o1.get(PlanJobCMMP.jobTime);
return date1.compareTo(date2);
}
});
// for (int i = 0; i < machineProductInfoRows; i++) {
if (yemEsSalesorderZ.size() > 0) {
for (DynamicObject object : yemEsSalesorderZ) {
DynamicObject resourcesCodeObj = object.getDynamicObject("yem_resourcescode");
String resourcescode = YEM.isNotEmpty(resourcesCodeObj) ? resourcesCodeObj.getString("number") : "";
String vehicleno = object.getString("yem_vehicleno");
for (Map docking : dockings) {
String planPin = (String) docking.get(PlanJobCMMP.planPin);
String productCode = (String) docking.get(PlanJobCMMP.productCode);
if (resourcescode.equals(productCode) && vehicleno.equals(planPin)) {
object.set("yem_engineno", docking.get(PlanJobCMMP.stockBatch));//发动机号
object.set("yem_enginemodel", docking.get(PlanJobCMMP.specification));//发动机型号
object.set("yem_enginevendor", docking.get(PlanJobCMMP.supName));//发动机厂商
// setInstructionValue(model, docking);
String instructionCode = (String) docking.get(PlanJobCMMP.instructionCode);
Date instructionTime = (Date) docking.get(PlanJobCMMP.jobTime);
String instructionName = (String) docking.get(PlanJobCMMP.instructionName);
object.set("yem_currentstate", instructionName);
object.set("yem_currentstatedate", instructionTime);
String prepareWay = object.getString("yem_prepareway");
switch (prepareWay) {
case "A":
ZZ(object, instructionCode, instructionTime, instructionName);
break;
case "B":
GZ(object, instructionCode, instructionTime, instructionName);
break;
}
}
}
}
}
}
}
}
OperationServiceHelper.executeOperate("getmachine", "yem_tracktaskconsole", new Object[]{dynamicObject.getLong("id")}, OperateOption.create());
}
SaveServiceHelper.update(dynamicObjects);
}
}
public static void ZZ(DynamicObject model, String instructionCode, Date instructionTime, String instructionName) {
switch (instructionCode) {
case "SX":
model.set("yem_assembleupline", "A");
model.set("yem_upline", instructionTime);
break;
case "XX":
model.set("yem_assembledownline", "A");
model.set("yem_downline", instructionTime);
break;
case "TS":
model.set("yem_debugst", "A");
model.set("yem_debugstatdate", instructionTime);
break;
case "JS":
model.set("yem_accuracytest", "A");
model.set("yem_accuratdate", instructionTime);
break;
case "DJ":
model.set("yem_waitforinspection", "A");
model.set("yem_waitforinspecdate", instructionTime);
break;
case "ZJHG":
model.set("yem_qualitytest", "A");
model.set("yem_qualitytestdate", instructionTime);
break;
case "RK":
model.set("yem_factputstor", "A");
model.set("yem_factputstordate", instructionTime);
break;
case "FGSX":
model.set("yem_backonline", "A");
model.set("yem_backonlinedate", instructionTime);
break;
case "FGRK":
model.set("yem_putintostorage", "A");
model.set("yem_putintostoragedate", instructionTime);
break;
}
}
public static void GZ(DynamicObject model, String instructionCode, Date instructionTime, String instructionName) {
switch (instructionCode) {
case "SX":
model.set("yem_assembleupline", "A");
model.set("yem_upline", instructionTime);
break;
case "GZSX":
model.set("yem_assembleupline", "A");
model.set("yem_upline", instructionTime);
break;
case "GZRK":
model.set("yem_factputstor", "A");
model.set("yem_factputstordate", instructionTime);
break;
case "RK":
model.set("yem_factputstor", "A");
model.set("yem_factputstordate", instructionTime);
break;
case "XX":
model.set("yem_assembledownline", "A");
model.set("yem_downline", instructionTime);
break;
case "TS":
model.set("yem_debugst", "A");
model.set("yem_debugstatdate", instructionTime);
break;
case "JS":
model.set("yem_accuracytest", "A");
model.set("yem_accuratdate", instructionTime);
break;
case "DJ":
model.set("yem_waitforinspection", "A");
model.set("yem_waitforinspecdate", instructionTime);
break;
case "ZJHG":
model.set("yem_qualitytest", "A");
model.set("yem_qualitytestdate", instructionTime);
break;
case "FGSX":
model.set("yem_backonline", "A");
model.set("yem_backonlinedate", instructionTime);
break;
case "FGRK":
model.set("yem_putintostorage", "A");
model.set("yem_putintostoragedate", instructionTime);
break;
}
}
}