opt:优化ERP单据回传

This commit is contained in:
2025-03-14 23:13:14 +08:00
parent da8ebb188d
commit fa0e6a4c6c
11 changed files with 71 additions and 13 deletions

View File

@@ -25,10 +25,10 @@ public enum StatusEnum {
FORM_STATUS(ForkMap.of("生成", "10", null, "已分配", "13", null, "下发", "15", null, "执行中", "20", null, "暂停", "30", null, "完成", "80", null, "强制完成", "82", null, "取消", "90", null)),
/**
* 出入库单据类型
* 出入库单据类型退货出库
*/
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10", "inStorageTask", "调拨入库", "11", "inStorageTask", "退货入库", "12", "inStorageTask", "拣选回库", "13", "inStorageTask", "盘点入库", "14", "inStorageTask", "托盘入库", "30", "inStorageTask", "二楼CTU入库", "80", "inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "22", "outStorageTask", "拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "inStorageTask", "二楼出库AGV搬运", "82", "inStorageTask", "二楼空架AGV搬运", "83", "inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "22", "outStorageTask", "拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask", "退货出库", "26", "outStorageTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "inStorageTask", "二楼出库AGV搬运", "82", "inStorageTask", "二楼空架AGV搬运", "83", "inStorageTask")),
IOBILL_TYPE_MOVE(ForkMap.of("移库", "50", "moveStorageTask", "异常位移库", "51", "moveStorageTask")),
EXT_TASK_TYPE(ForkMap.of("盘点", "60", "moveStorageTask")),
OTHER_TASK_TYPE(ForkMap.of("转运", "70", "tranforTask")),
@@ -39,7 +39,7 @@ public enum StatusEnum {
*/
ERP_TYPE(ForkMap.of("PRD_MO", "10", "生产订单", "PUR_ReceiveBill", "11", "收料通知单",
"SAL_SaleOrder", "12", "销售订单", "PRD_INSTOCK", "13", "生产入库单", "STK_InStock", "14", "采购入库单",
"PRD_PPBOM", "20", "生产用料清单", "PRD_PickMtrl", "21", "生产领料单",
"SUB_PickMtrl", "19", "委外用料清单", "PRD_PPBOM", "20", "生产用料清单", "PRD_PickMtrl", "21", "生产领料单",
"SP_PickMtrl", "22", "简单生产领料单",
"STK_TransferDirect", "23", "调拨出库单", "SAL_RETURNSTOCK", "24", "销售退货单",
"PUR_MRB", "25", "采购退料单", "STK_MisDelivery", "26", "其他出库单")),

View File

@@ -86,7 +86,7 @@ public class SchBaseTaskController {
@GetMapping("/taskSchedule")
@Log("任务调度")
public ResponseEntity<Object> taskSchedule() {
taskScheduleService.taskPublish();
iSchBaseTaskService.deleteCtuStruct();
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/taskMsgSchedule")

View File

@@ -55,6 +55,7 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
* @param ids /
*/
void deleteAll(Set<String> ids);
public void deleteCtuStruct();
/**
* 任务操作

View File

@@ -30,6 +30,10 @@ public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
List<Map> getIoSourceFormData(@Param("vehicle_code") String vehicle_code, @Param("pcsn") String pcsn);
int updateVehiclemater();
int updateStructattr();
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
}

View File

@@ -106,4 +106,10 @@
AND (status <![CDATA[ < ]]> '80')
AND (is_delete = '0')
</select>
<update id="updateVehiclemater">
UPDATE `md_pb_vehiclemater` SET is_delete='1' WHERE vehicle_code in (SELECT vehicle_code FROM `st_ivt_structattr` WHERE stor_code ='CStockId' AND vehicle_code IS NOT NULL AND lock_type ='00')
</update>
<update id="updateStructattr">
UPDATE `st_ivt_structattr` SET vehicle_code=null,lock_type='00' WHERE stor_code ='CStockId' AND vehicle_code IS NOT NULL AND lock_type ='00'
</update>
</mapper>

View File

@@ -41,6 +41,7 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.*;
@@ -71,6 +72,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
private WmsToAcsService wmsToAcsService;
@Autowired
private IPmFormDataService iPmFormDataService;
@Autowired
private SchBaseTaskMapper schBaseTaskMapper;
@Override
public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
@@ -122,6 +125,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
this.removeByIds(ids);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteCtuStruct() {
schBaseTaskMapper.updateVehiclemater();
schBaseTaskMapper.updateStructattr();
}
@Override
public void create(SchBaseTask entity) {
String nickName = SecurityUtils.getCurrentNickName();
@@ -159,11 +169,6 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
if (ObjectUtils.isEmpty(vehicleMaterList)) {
throw new BadRequestException("当前任务未找到组盘信息");
}
if (StringUtils.isEmpty(vehicleMaterList.get(0).getProc_inst_id())) {
FlowContinueEvent continueEvent = new FlowContinueEvent(vehicleMaterList.get(0).getProc_inst_id(), null, null);
if (ObjectUtil.isEmpty(vehicleMaterList)) {
throw new BadRequestException("任务完成失败,到载具物料信息: " + task.getVehicle_code());
}
if (StringUtils.isNotBlank(vehicleMaterList.get(0).getProc_inst_id())) {
FlowContinueEvent continueEvent = new FlowContinueEvent(vehicleMaterList.get(0).getProc_inst_id(), null, null);
BussEventMulticaster.Publish(continueEvent);

View File

@@ -86,7 +86,7 @@ public class SyncReceiptProcessHandler implements ClassProcess {
res = JSONObject.parseObject(result);
}
JSONObject responseStatus = res.getJSONObject("Result").getJSONObject("ResponseStatus");
boolean isSuccess = responseStatus.getBooleanValue("IsSuccess");
boolean isSuccess = responseStatus.getBooleanValue ("IsSuccess");
JSONArray errors = responseStatus.getJSONArray("Errors");
String errorMessages = "";
if (ObjectUtils.isNotEmpty(errors)) {
@@ -237,5 +237,33 @@ public class SyncReceiptProcessHandler implements ClassProcess {
fEntity.putAll(tempMap);
}
}
if ("RECEIPT_SUB_PickMtrl".equals(formType)) {
for (int i = 0; i < fEntityArray.size(); i++) {
JSONObject fEntity = fEntityArray.getJSONObject(i);
Map<String, Object> linkedMap = new LinkedHashMap<>();
for (String key : fEntity.keySet()) {
linkedMap.put(key, fEntity.get(key));
}
Map<String, Object> tempMap = new LinkedHashMap<>();
for (Map.Entry<String, Object> entry : linkedMap.entrySet()) {
tempMap.put(entry.getKey(), entry.getValue());
}
JSONArray fEntityLinkArray = new JSONArray();
JSONObject fEntityLink = new JSONObject();
fEntityLink.put("FEntity_Link_FFlowLineId", 6);
fEntityLink.put("FEntity_Link_FBaseActualQty", fEntity.getString("FActualQty"));
fEntityLink.put("FEntity_Link_FSId",fEntity.getString("FSrcEntryId"));
fEntityLink.put("FEntity_Link_FBaseActualQtyOld", fEntity.getString("FBaseActualQty"));
fEntityLink.put("FEntity_Link_FRuleId", "SUB_PPBOM_Pick");
fEntityLink.put("FEntity_Link_FSTableId", 0);
fEntityLink.put("FEntity_Link_FFlowId","0b064121-4926-4808-8632-a195b6a202e8");
fEntityLink.put("FEntity_Link_FSBillId",fEntity.getString("FSrcInterId"));
fEntityLink.put("FEntity_Link_FSTableName", "T_SUB_PPBOMENTRY");
fEntityLinkArray.add(fEntityLink);
tempMap.put("FEntity_Link", fEntityLinkArray);
fEntity.clear();
fEntity.putAll(tempMap);
}
}
}
}

View File

@@ -63,7 +63,8 @@ public class PdaOutController {
// result.add(MapOf.of("text",formStruc.getForm_name(),"value",formStruc.getForm_type()));
// }
result.add(MapOf.of("text","生产用料清单","value","PRD_PPBOM"));
//result.add(MapOf.of("text","委外用料清单","value","SUB_PickMtrl"));
result.add(MapOf.of("text","委外用料清单","value","SUB_PPBOM"));
result.add(MapOf.of("text","采购退料单","value","PUR_MRB"));
result.add(MapOf.of("text","直接调拨单","value","STK_TransferDirect"));
result.add(MapOf.of("text","简单领料申请单","value","ka7c19edf9d4b4b39b8cc4a06802163b0"));
result.add(MapOf.of("text","其他出库单","value","STK_MisDelivery"));

View File

@@ -408,6 +408,9 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
child.setPcsn("");
} else {
for (StructAssignQty assignQty : maps) {
if (StringUtils.isBlank(assignQty.getPcsn())) {
throw new BadRequestException(assignQty.getMaterial_id() + "该物料批次号为空!请检查!");
}
if (assignQty.getPcsn().equals(child.getPcsn())) {
child.setSto_qty(assignQty.getSto_qty());
child.setPcsn(assignQty.getPcsn());

View File

@@ -33,7 +33,6 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
@@ -84,6 +83,7 @@ public class SyncErpBillsScheduleService {
"STK_TransferDirect", "FStockOrgId",
"SAL_RETURNSTOCK", "FStockOrgId",
"PUR_MRB", "FStockOrgId",
"SUB_PickMtrl", "FStockOrgId",
"STK_MisDelivery", "FStockOrgId");
//仓库信息
private static final Map<String, String> BILL_STOCK_ID_MAPPING = MapOf.of(
@@ -302,6 +302,7 @@ public class SyncErpBillsScheduleService {
.set(PmFormData::getUnit_id, f.getUnit_id())
.set(PmFormData::getForm_data, JSON.toJSONString(f.getForm_data()))
.set(PmFormData::getPlan_qty, f.getPlan_qty())
.set(PmFormData::getActual_qty, f.getActual_qty())
.set(PmFormData::getTaxPrice, f.getActual_qty())
.set(PmFormData::getBar_code, f.getBar_code())
.set(PmFormData::getUpdate_name, DateUtil.now())
@@ -382,6 +383,13 @@ public class SyncErpBillsScheduleService {
JSONArray mappingJsonArray = JSONArray.parseArray(mappingJson);
List<PmFormData> formDataList = formDataService.syncAnalyse(mappingJsonArray, formType, dtlSplit, JSON.toJSONString(r));
if (formDataList != null) {
String assistUint = "0";
JSONArray uintJsonArray = JSONObject.parseObject(JSON.toJSONString(r)).getJSONArray("MaterialStock");
if (ObjectUtils.isNotEmpty(uintJsonArray)) {
JSONObject u1 = JSONObject.parseObject(JSON.toJSONString(uintJsonArray.get(0)));
JSONObject u2 = u1.getJSONObject("AuxUnitID");
assistUint = u2 != null ? u2.getString("Number") : "0";
}
PmFormData mainFormData = formDataList.stream().filter(rs1 -> "BD_MATERIAL".equals(rs1.getForm_type())).collect(Collectors.toList()).get(0);
JSONObject object = mainFormData.getForm_data();
String m_code = object.getString("m_code");
@@ -396,7 +404,7 @@ public class SyncErpBillsScheduleService {
materialBase.setMaterial_name(m_name);
materialBase.setMaterial_spec(m_spec);
materialBase.setQty_unit_id(m_unit);
materialBase.setAssist_unit_id(formData.getVehicle_code());
materialBase.setAssist_unit_id(assistUint);
materialBase.setPrint_no(formData.getPcsn());
iMdMeMaterialbaseService.save(materialBase);
}

View File

@@ -64,6 +64,8 @@ public class TaskScheduleService {
}
}
public void taskPublish(){
boolean islock = lock.tryLock();
try {