add:增加塑料件倒库扫描识别OP单在线查询生产订单

This commit is contained in:
2024-12-16 14:36:07 +08:00
parent 365a350174
commit cec9880ed4
2 changed files with 112 additions and 40 deletions

View File

@@ -145,7 +145,7 @@ public class SyncReceiptProcessHandler implements ClassProcess {
if ("RECEIPT_PickMtrl".equals(formType)) {
for (int i = 0; i < fEntityArray.size(); i++) {
JSONObject fEntity = fEntityArray.getJSONObject(i);
List<MdMeMaterialbase> materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code,JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber") ));
List<MdMeMaterialbase> materialList = iMdMeMaterialbaseService.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code,JSON.parseObject(fEntity.getString("FMaterialId")).getString("FNumber")));
MdMeMaterialbase materialInfo = materialList.get(0);
//没有启用批次号
if ("0".equals(materialInfo.getPrint_no())) {
@@ -168,6 +168,7 @@ public class SyncReceiptProcessHandler implements ClassProcess {
}
if ("FStockId".equals(entry.getKey())) {
JSONObject fStockId = new JSONObject();
//tofix 目前都入料箱库
fStockId.put("FNumber", "25");
linkedMap.put("FStockId", fStockId);
}

View File

@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.kingdee.bos.webapi.entity.IdentifyInfo;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -41,7 +40,9 @@ import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StructAssignQty;
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
import org.springframework.beans.BeanUtils;
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceImpl;
import org.nl.wms.system_manage.service.quartz.task.SyncErpBillsScheduleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -61,6 +62,14 @@ public class PdaIOService {
@Autowired
private ErpSec erpSec;
@Autowired
private ErpServiceUtils erpServiceUtils;
@Autowired
private SyncErpBillsScheduleService syncErpBillsScheduleService;
@Autowired
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
@Autowired
private IBmFormStrucService iBmFormStrucService;
@Autowired
@@ -75,6 +84,7 @@ public class PdaIOService {
private StIvtBsrealstorattrServiceImpl stIvtBsrealstorattrServiceImpl;
@Autowired
private MdMeMaterialbaseServiceImpl mdMeMaterialbaseServiceImpl;
@Resource
private PmFormDataMapper pmFormDataMapper;
@Autowired
@@ -301,11 +311,12 @@ public class PdaIOService {
}
public PmFormData getCertificateInfo(String id) {
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
PmFormData result = new PmFormData();
try {
if (id.contains("OP") || id.contains("op")) {
//生产入库
getOpBills(id, result);
getOpBills(id, result, k3CloudApi);
} else {
//采购入库
ReceiveBillData receiveBillData = pmFormDataMapper.queryReceiveBill(id);
@@ -357,10 +368,19 @@ public class PdaIOService {
}
if (StringUtils.isNotBlank(result.getMaterial_id())) {
List<MdMeMaterialbase> materialbaseList = mdMeMaterialbaseServiceImpl.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_id, result.getMaterial_id()));
//本地存在改物料信息
if (ObjectUtils.isNotEmpty(materialbaseList)) {
result.setMaterial_code(materialbaseList.get(0).getMaterial_code());
result.setMaterial_spec(materialbaseList.get(0).getMaterial_spec());
result.setMaterial_name(materialbaseList.get(0).getMaterial_name());
} else {
SyncFormMapping syncFormMapping = syncFormMappingServiceImpl.getOne(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
String materialMappingString = JSON.toJSONString(syncFormMapping.getMapping_json());
syncErpBillsScheduleService.queryMaterialInfo(materialMappingString, "BD_MATERIAL", false, result.getMaterial_id(), k3CloudApi);
List<MdMeMaterialbase> materialList = mdMeMaterialbaseServiceImpl.list(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_id, result.getMaterial_id()));
result.setMaterial_code(materialList.get(0).getMaterial_code());
result.setMaterial_spec(materialList.get(0).getMaterial_spec());
result.setMaterial_name(materialList.get(0).getMaterial_name());
}
}
if (StringUtils.isNotBlank(result.getStockId())) {
@@ -377,10 +397,7 @@ public class PdaIOService {
/**
*
*/
private void getOpBills(String id, PmFormData result) throws Exception {
IdentifyInfo identifyInfo = new IdentifyInfo();
BeanUtils.copyProperties(erpSec, identifyInfo);
K3CloudApi cloudApi = new K3CloudApi(identifyInfo);
private void getOpBills(String id, PmFormData result, K3CloudApi k3CloudApi) throws Exception {
String filterString = "FBillNo = '" + id + "'";
ErpQuery query = new ErpQuery();
query.setFilterString(filterString);
@@ -388,43 +405,97 @@ public class PdaIOService {
query.setFieldKeys("FBillNo,FProOrgId,FStockInOrgId,FProductId,FProductName,FProSpecification,FMOQty,FMOUnitId,FOwnerId,FLot,FProDepartmentId,FMONumber,FMOEntrySeq,FOwnerTypeId");
query.setLimit(1);
String jsonString = JSON.toJSONString(query);
List<List<Object>> lists = cloudApi.executeBillQuery(jsonString);
List<List<Object>> lists = k3CloudApi.executeBillQuery(jsonString);
if (ObjectUtils.isNotEmpty(lists)) {
List<Object> dataList = lists.get(0);
if (ObjectUtils.isNotEmpty(dataList)) {
String moNumber = dataList.get(11).toString();
String moSeq = dataList.get(12).toString();
String moEntryId;
String moId;
String prdOrgId;
String stockOrgId;
String ownerIdHead_Id;
String workShopId1;
BigDecimal qty;
String ownerId_Id;
String stockId;
String keeperId;
String srcBillNo;
JSONObject pFormJson;
JSONObject dFormJson;
//查询本地生产订单信息
ReceiveBillData prdMoBillData = pmFormDataMapper.queryOrderStockId(dataList.get(11).toString(),dataList.get(12).toString());
if (prdMoBillData == null) {
throw new BadRequestException("查询合格证关联的生产订单信息异常!");
}
String pForm_data = prdMoBillData.getPForm_data();
String dForm_data = prdMoBillData.getDForm_data();
JSONObject pFormJson = JSONObject.parseObject(pForm_data);
JSONObject dFormJson = JSONObject.parseObject(dForm_data);
if (ObjectUtils.isNotEmpty(dFormJson) && ObjectUtils.isNotEmpty(pFormJson)) {
String moNumber = dataList.get(11).toString();
result.setBillNo(dataList.get(0).toString());
result.setPrdOrgId((pFormJson.getString("PrdOrgId")));
result.setStockOrgId((dFormJson.getString("StockOrgId")));
result.setOwnerIdHead_Id((dFormJson.getString("InStockOwnerId")));
result.setMoNumber(moNumber);
result.setMoId(prdMoBillData.getPId().substring(0, prdMoBillData.getPId().indexOf("$")));
result.setMoEntryId(prdMoBillData.getDId().substring(0, prdMoBillData.getDId().indexOf("$")));
result.setMaterial_id(dataList.get(3).toString());
result.setPcsn(dataList.get(11).toString());
result.setUnit_id(dataList.get(7).toString());
result.setWorkShopId1(dFormJson.getString("product_code"));
result.setQty(prdMoBillData.getQty());
result.setMustQty(prdMoBillData.getQty());
result.setInStockType("1");
result.setOwnerTypeId(StringUtils.isBlank(dataList.get(13).toString()) ? "BD_OwnerOrg" : dataList.get(13).toString());
result.setOwnerId_Id(dFormJson.getString("InStockOwnerId"));
result.setStockStatusId("10000");
result.setStockId(dFormJson.getString("stockId"));
result.setKeeperId((dFormJson.getString("StockOrgId")));
result.setKeeperTypeId("BD_KeeperOrg");
result.setSrcBillNo(dFormJson.getString("saleOrderEntryId"));
ReceiveBillData prdMoBillData = pmFormDataMapper.queryOrderStockId(dataList.get(11).toString(), dataList.get(12).toString());
if (prdMoBillData != null) {
String pForm_data = prdMoBillData.getPForm_data();
String dForm_data = prdMoBillData.getDForm_data();
pFormJson = JSONObject.parseObject(pForm_data);
dFormJson = JSONObject.parseObject(dForm_data);
if (ObjectUtils.isEmpty(dFormJson) || ObjectUtils.isEmpty(pFormJson)) {
throw new BadRequestException("查询合格证关联的生产订单信息异常!");
}
moId = prdMoBillData.getPId().substring(0, prdMoBillData.getPId().indexOf("$"));
prdOrgId = pFormJson.getString("PrdOrgId");
moEntryId = prdMoBillData.getDId().substring(0, prdMoBillData.getDId().indexOf("$"));
stockOrgId = dFormJson.getString("StockOrgId");
ownerIdHead_Id = dFormJson.getString("InStockOwnerId");
workShopId1 = dFormJson.getString("product_code");
qty = prdMoBillData.getQty();
ownerId_Id = dFormJson.getString("InStockOwnerId");
//tofix 目前都入料箱库
stockId = "25";
keeperId = dFormJson.getString("StockOrgId");
srcBillNo = dFormJson.getString("saleOrderEntryId");
} else {
query.setFieldKeys("FID");
query.setFilterString("FBillNo ='" + moNumber + "'");
query.setFormId("PRD_MO");
JSONArray moBills = erpServiceUtils.queryBills(query);
JSONObject moBill = moBills.getJSONObject(0);
moId = moBill.getString("Id");
prdOrgId = JSON.parseObject(moBill.getString("PrdOrgId")).getString("FNumber");
JSONArray moTreeEntity = moBills.getJSONObject(0).getJSONArray("TreeEntity");
JSONObject entity = moTreeEntity.stream()
.map(r -> (JSONObject) r)
.filter(json -> moSeq.equals(json.getString("Seq")))
.findFirst()
.orElse(null);
if (entity != null) {
moEntryId = entity.getString("Id");
stockOrgId = JSON.parseObject(entity.getString("StockInOrgId")).getString("FNumber");
ownerIdHead_Id = JSON.parseObject(entity.getString("InStockOwnerId")).getString("FNumber");
workShopId1 = JSON.parseObject(entity.getString("WorkShopID")).getString("FNumber");
qty = new BigDecimal(entity.getString("Qty"));
ownerId_Id = JSON.parseObject(entity.getString("InStockOwnerId")).getString("FNumber");
keeperId = JSON.parseObject(entity.getString("InStockOwnerId")).getString("FNumber");
srcBillNo = entity.getString("SaleOrderEntryId");
//tofix 目前都入料箱库
stockId = "25";
} else {
throw new BadRequestException("查询合格证关联的生产订单明细信息异常!");
}
}
result.setBillNo(dataList.get(0).toString());
result.setPrdOrgId(prdOrgId);
result.setStockOrgId(stockOrgId);
result.setOwnerIdHead_Id(ownerIdHead_Id);
result.setMoNumber(moNumber);
result.setMoId(moId);
result.setMoEntryId(moEntryId);
result.setMaterial_id(dataList.get(3).toString());
result.setPcsn(dataList.get(11).toString());
result.setUnit_id(dataList.get(7).toString());
result.setWorkShopId1(workShopId1);
result.setQty(qty);
result.setMustQty(qty);
result.setInStockType("1");
result.setOwnerTypeId(StringUtils.isBlank(dataList.get(13).toString()) ? "BD_OwnerOrg" : dataList.get(13).toString());
result.setOwnerId_Id(ownerId_Id);
result.setStockStatusId("10000");
result.setStockId(stockId);
result.setKeeperId(keeperId);
result.setKeeperTypeId("BD_KeeperOrg");
result.setSrcBillNo(srcBillNo);
} else {
throw new BadRequestException("查询合格证关联的生产订单信息异常!");
}