生产报工

1、生产报工事务明细中数据只显示工艺路线上的工序自定义字段IS_ERP_PRODUCT为PP01
2、生产完工入库是移动类型改取完工入库事务表的PRODUCT_TYPE,而为固定的101,现有值有531和101
3、物料消耗报工成功后更新lot_material表erp_flag为Y
4、物料消耗、完工入库如果辅助单位数量为null,那么辅助单位与辅助数量全部传null
5、生产报工事务冲销针对报工行报工
This commit is contained in:
彭枝刚 2025-01-14 16:59:37 +08:00
parent 3653685e58
commit ad57f120c7
2 changed files with 26 additions and 14 deletions

View File

@ -21,6 +21,8 @@ import com.foreverwin.iep.prd.entity.ZShoporderStatisticsTransaction;
import com.foreverwin.iep.prd.mapper.ZLotMaterialCompleteTransactionMapper;
import com.foreverwin.iep.prd.mapper.ZLotMaterialConsumptionTransactionMapper;
import com.foreverwin.iep.prd.mapper.ZShoporderStatisticsTransactionMapper;
import com.foreverwin.iep.wip.entity.LotMaterial;
import com.foreverwin.iep.wip.mapper.LotMaterialMapper;
import com.foreverwin.mom.common.core.exception.BusinessException;
import com.foreverwin.mom.common.core.util.R;
import com.foreverwin.mom.common.data.tenant.TenantContextHolder;
@ -61,6 +63,7 @@ public class ShopOrderStatisticTransController {
private final IntInDataService intInDataService;
private final IntInDataLogService intInDataLogService;
private final RegisterDocumentService registerDocumentService;
private final LotMaterialMapper lotMaterialMapper;
@ApiOperation(value = "生产管理报工平台-工单报工", notes = "生产管理报工平台-工单报工")
@SysLog("生产管理报工平台-工单报工")
@ -160,13 +163,15 @@ public class ShopOrderStatisticTransController {
InvokeResponse invokeResponse = new InvokeResponse();
List<ZShoporderStatisticsTransaction> newList = new ArrayList<>();
for (ZShoporderStatisticsTransaction statisticsTransaction : shoporderStatisticsTransactionList) {
if(StringUtils.isEmpty(statisticsTransaction.getSid())){
if (StringUtils.isEmpty(statisticsTransaction.getSid())) {
throw BusinessException.build("此笔数据还未报工无需取消报工");
}
// 重新校验一遍是否已经报过工,防止重复报工
ZShoporderStatisticsTransaction targetObj = zShoporderStatisticsTransactionMapper.selectById(statisticsTransaction.getSid());
if (targetObj==null || !"S".equals(targetObj.getSyncStatus())) {
if (targetObj == null || !"S".equals(targetObj.getSyncStatus())) {
throw BusinessException.build("工单" + targetObj.getShopOrder() + "还未报工无需取消报工");
} else if ("Y".equalsIgnoreCase(targetObj.getErpReverse())) {
throw BusinessException.build("该笔数据已经冲销");
} else {
newList.add(targetObj);
}
@ -293,10 +298,10 @@ public class ShopOrderStatisticTransController {
jsonObject.put("EBELP", ""); // 采购凭证的项目编号
jsonObject.put("MENGE", consumptionTransaction.getMainQty()); // 数量
jsonObject.put("MEINS", consumptionTransaction.getMainUom()); // 基本计量单位
if(consumptionTransaction.getSubQty()!=null){
if (consumptionTransaction.getSubQty() != null) {
jsonObject.put("ERFMG", consumptionTransaction.getSubQty()); // 以录入项单位表示的数量
jsonObject.put("ERFME", consumptionTransaction.getSubUom()); // 录入单位
}else{
} else {
jsonObject.put("ERFMG", null); // 以录入项单位表示的数量
jsonObject.put("ERFME", ""); // 录入单位
}
@ -341,7 +346,7 @@ public class ShopOrderStatisticTransController {
}
}
if ("E".equals(invokeResponse.getResult())) {
return R.failed("SAP错误:"+invokeResponse.getMessageContent());
return R.failed("SAP错误:" + invokeResponse.getMessageContent());
} else {
return R.ok();
}
@ -363,6 +368,14 @@ public class ShopOrderStatisticTransController {
targetObj.setCreator(SecurityUtils.getUserName());
targetObj.setDateCreate(LocalDateTime.now());
zLotMaterialConsumptionTransactionMapper.updateById(targetObj);
// 如果报工成功,就更新消耗表的erp标识为Y
if ("S".equalsIgnoreCase(result)) {
LotMaterial lotMaterial = lotMaterialMapper.selectById(targetObj.getLotMaterialSid());
if (lotMaterial != null) {
lotMaterial.setErpFlag("Y");
lotMaterialMapper.updateById(lotMaterial);
}
}
}
invokeResponse.setResult(result);
invokeResponse.setMessageContent(message);
@ -395,7 +408,7 @@ public class ShopOrderStatisticTransController {
@PostMapping("/api/getSapBatchNo")
public R<String> getSapBatchNo(@RequestBody String erpItem) {
String sapBatchNo = registerDocumentService.getSapBatchNo(erpItem);
return R.ok(sapBatchNo);
return R.ok(sapBatchNo);
}
@ApiOperation(value = "生产管理报工平台-批次完工入库报工", notes = "生产管理报工平台-批次完工入库报工")
@ -425,24 +438,24 @@ public class ShopOrderStatisticTransController {
jsonObject.put("WERKS", site); // 工厂
jsonObject.put("LGORT", completeTransaction.getErpInventory()); // 存储地点
jsonObject.put("CHARG", completeTransaction.getSapBatchNo()); // 批次号
jsonObject.put("BWART", "101"); // 移动类型
jsonObject.put("BWART", completeTransaction.getProductType()); // 移动类型
jsonObject.put("SOBKZ", ""); // 特殊库存标识
jsonObject.put("AUFNR", completeTransaction.getShopOrder()); // 订单号
jsonObject.put("EBELN", ""); // 采购订单号
jsonObject.put("EBELP", ""); // 采购凭证的项目编号
jsonObject.put("MENGE", completeTransaction.getMainQty()); // 数量
jsonObject.put("MEINS", completeTransaction.getMainUom()); // 基本计量单位
if(completeTransaction.getSubQty()!=null){
if (completeTransaction.getSubQty() != null) {
jsonObject.put("ERFMG", completeTransaction.getSubQty()); // 以录入项单位表示的数量
jsonObject.put("ERFME", completeTransaction.getSubUom()); // 录入单位
}else{
} else {
jsonObject.put("ERFMG", null); // 以录入项单位表示的数量
jsonObject.put("ERFME", ""); // 录入单位
}
jsonObject.put("MAT_KDAUF", completeTransaction.getSoNo()); // 评估销售定单库存的销售定单号
if(StringUtils.isNotEmpty(completeTransaction.getSoLineNo())){
if (StringUtils.isNotEmpty(completeTransaction.getSoLineNo())) {
jsonObject.put("MAT_KDPOS", Integer.valueOf(completeTransaction.getSoLineNo())); // 评估销售订单库存的销售订单项目
}else{
} else {
jsonObject.put("MAT_KDPOS", null); // 评估销售订单库存的销售订单项目
}
jsonObject.put("UMWRK", ""); // 收货工厂/发货工厂
@ -487,7 +500,7 @@ public class ShopOrderStatisticTransController {
}
}
if ("E".equals(invokeResponse.getResult())) {
return R.failed("SAP错误:"+invokeResponse.getMessageContent());
return R.failed("SAP错误:" + invokeResponse.getMessageContent());
} else {
return R.ok();
}

View File

@ -57,7 +57,7 @@ public class ShopOrderStatisticTransCancelService implements HandlerService {
shoporderStatisticsTransaction.setSyncTicketNo(outJson.getString("VORNR"));
String result = outJson.getString("MSGTY");
invokeResponse.setResult(result);
shoporderStatisticsTransaction.setSyncStatus(result);
shoporderStatisticsTransaction.setErpReverse(result);
shoporderStatisticsTransaction.setSyncMessageRemark(outJson.getString("MSGID"));
shoporderStatisticsTransaction.setSyncMessageNo(outJson.getString("MSGNO"));
String message = outJson.getString("MSGTX");
@ -65,7 +65,6 @@ public class ShopOrderStatisticTransCancelService implements HandlerService {
shoporderStatisticsTransaction.setSyncMessageText(message);
shoporderStatisticsTransaction.setUpdater(SecurityUtils.getUserName());
shoporderStatisticsTransaction.setDateUpdate(LocalDateTime.now());
shoporderStatisticsTransaction.setStatus("N");
zShoporderStatisticsTransactionMapper.updateById(shoporderStatisticsTransaction);
return invokeResponse;
}else{