rev:修改回传公共代码

This commit is contained in:
zhangzq
2024-11-27 20:03:59 +08:00
parent c791f86e84
commit 9e00dc5d2b
7 changed files with 160 additions and 148 deletions

View File

@@ -44,7 +44,7 @@ public class GateWayActivityBehavior extends FlowNodeActivityBehavior<JSONObject
String skipExpression = sequenceFlow.getSkipExpression();
if (StringUtils.isEmpty(skipExpression)){
targetSequence = sequenceFlow;
break;
continue;
}
Boolean parse = SpelUtil.parse(entity.getT().getJSONObject("t"),skipExpression, Boolean.class);
if (parse){

View File

@@ -13,6 +13,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SpelUtil;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
@@ -71,24 +72,13 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
Map<String, String> formDataSpelMap = new HashMap<>();
JSONObject form_data = new JSONObject();
for (String item : form_param.keySet()) {
String value = "";
Object struc = form_param.get(item);
if (formDataMapping!=null){
JSONObject formDataMappingJson = (JSONObject) formDataMapping;
String skip = formDataMappingJson.getString(item);
if (StringUtils.isNotEmpty(skip)){
if (skip.contains("#M")){
formDataSpelMap.put(item,skip);
continue;
}
if(skip.contains("#V[]")){
//直接指定参数
value = sourceFormData.getString(skip);
continue;
}
value = sourceFormData.getString(skip);
}
Object value = velueMapping(sourceFormData, item, struc, (JSONObject) formDataMapping);
form_data.put(item,value);
}else {
form_data.put(item,"");
}
form_data.put(item,value);
}
form_data.putAll(SpelUtil.parse(sourceFormData, formDataSpelMap));
t.put("form_data",form_data);
@@ -118,4 +108,57 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
resultT.put("t",t);
return resultT;
}
private Object velueMapping(JSONObject sourceFormData,String key,Object valueStruc,JSONObject formDataMapping){
Object value = null;
String skip = formDataMapping.getString(key);
if (valueStruc instanceof String){
if (StringUtils.isNotEmpty(skip)){
if (skip.contains("#M")){
value = SpelUtil.parse(sourceFormData, skip, String.class);
}else if(skip.contains("#V[")){
//直接指定参数#V['value'] = value
value = skip.split("'")[1];
}else {
value = sourceFormData.getString(skip);
}
}
}
if (valueStruc instanceof Map){
Map<String, Object> valueStrucMap = (Map<String, Object>) valueStruc;
Map<String, Object> valueMap = new HashMap<>();
if (StringUtils.isNotEmpty(skip)){
if (skip.contains("#M")){
value = SpelUtil.parse(sourceFormData, skip, String.class);
}else if(skip.contains("#V[")){
//直接指定参数#V['value'] = value
value = skip.split("'")[1];
}else {
value = sourceFormData.getString(skip);
}
for (String innerKey : valueStrucMap.keySet()) {
valueMap.put(innerKey,value);
}
}else {
for (String innerKey : valueStrucMap.keySet()) {
Object innerValueStruc = valueStrucMap.get(innerKey);
Object innerValue = this.velueMapping(sourceFormData, innerKey, innerValueStruc, formDataMapping);
valueMap.put(innerKey,innerValue);
}
}
value = valueMap;
}
return value;
}
public static void main(String[] args) {
String struc = "{\"Model\":{\"FBillTypeID\":\"单据类型\",\"FStockOrgId\":{\"FNumber\":\"入库日期\"}}}";
JSONObject strucJson = JSON.parseObject(struc);
JSONObject sourceData = new JSONObject(MapOf.of("Model", MapOf.of("FBillTypeID", "123", "FStockOrgId", MapOf.of("FNumber", "shouliao"))));
JSONObject formDataMapping = new JSONObject(MapOf.of("FBillTypeID", "#M['Model']['FBillTypeID']", "FStockOrgId", "#M['Model']['FStockOrgId']['FNumber']"));
MappingHandler handler = new MappingHandler();
Object result = handler.velueMapping(sourceData, "Model", strucJson.get("Model"), formDataMapping);
System.out.println(result);
}
}

View File

@@ -75,20 +75,29 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
@Override
@Transactional
public void groupDick(JSONObject forms) {
List<Map> tableData = (List)forms.remove("item");
if (CollectionUtils.isEmpty(forms)){
throw new BadRequestException("入库失败:入库明细数据不能为空");
}
JSONObject item0 = new JSONObject(tableData.get(0));
String vehicle0 = item0.getString("vehicle_code");
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicle0);
Integer h = vehicleInfo.getH();
RedissonUtils.lock(()->{
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
.eq("is_used", true)
.eq("lock_type", StatusEnum.LOCK.code("无锁"))
.eq("stor_code", forms.getString("stor_code"))
.isNull("vehicle_code");;
.isNull("vehicle_code");
if (h!=null){
query.ge("h",h);
}
int structCount = iStIvtStructattrService.count(query);
if (structCount< DictConstantPool.STRUCT_COUNT){
throw new BadRequestException("入库失败:当前仓库可用库位小于"+DictConstantPool.STRUCT_COUNT);
}
}, StatusEnum.STRATEGY_TYPE.code("入库")+forms.getString("stor_code"),5);
List<Map> tableData = (List)forms.remove("item");
String now = DateUtil.now();
forms.put("create_name",SecurityUtils.getCurrentNickName());
forms.put("create_time", now);
@@ -101,7 +110,6 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
JSONObject item = new JSONObject(itemMap);
String vehicle_code = item.getString("vehicle_code");
MdPbVehicleMater vehicleMater = item.toJavaObject(MdPbVehicleMater.class);
MdGruopDick mdGruopDick = map.get(vehicle_code);
if (mdGruopDick ==null){
MdGruopDick dick = forms.toJavaObject(MdGruopDick.class);
@@ -111,6 +119,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
dick.setStatus(StatusEnum.FORM_STATUS.code("完成"));
dick.setCreate_name(SecurityUtils.getCurrentNickName());
dick.setCreate_time(now);
dick.setForm_data(forms.getJSONObject("form_data"));
map.put(vehicle_code,dick);
vehicleMater.setGroup_id(dick.getId());
}else {
@@ -118,6 +127,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
mdGruopDick.setStatus(StatusEnum.FORM_STATUS.code("完成"));
mdGruopDick.setUpdate_name(SecurityUtils.getCurrentNickName());
mdGruopDick.setUpdate_time(now);
mdGruopDick.setForm_data(forms.getJSONObject("form_data"));
}
vehicleMater.setId(IdUtil.getStringId());
vehicleMater.setCreate_time(now);

View File

@@ -1,5 +1,8 @@
package org.nl.wms.pda_manage.group.dto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.Data;
import java.util.List;
@@ -27,6 +30,11 @@ public class MaterGroupDto {
* 备注
*/
private String remark;
/**
* 存储业务数据
*/
private JSONObject form_data;
/**
* 组盘物料明细数据
*/

View File

@@ -47,7 +47,7 @@ public class PdaInController {
private PdaIOService pdaIOService;
@PostMapping("/confirm")
@Log("单据入库组盘确认")
@Log("合格证入库确认")
public ResponseEntity<TableDataInfo> confirm(@RequestBody PdaFormInMst pdaFormInMst) {
RedissonUtils.lock(() -> {
pdaInIOService.pdaInIostorUseCode(pdaFormInMst);

View File

@@ -1,6 +1,7 @@
package org.nl.wms.pda_manage.iostorage.server.dto;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.util.CollectionUtils;
@@ -36,11 +37,13 @@ public class PdaFormInMst implements Serializable {
/**
* 订单号
*/
@JsonProperty("MONumber")
private String MONumber;
/**
* 订单号
*/
@JsonProperty("MOSeq")
private String MOSeq;
/**
@@ -73,22 +76,29 @@ public class PdaFormInMst implements Serializable {
/**
* 入库数量
*/
private String qty;
private Integer qty;
/**
* 组织
*/
@JsonProperty("StockOrgId")
private String StockOrgId;
/**
* 货主
*/
@JsonProperty("OwnerId_Id")
private String OwnerId_Id;
/**
* ERP仓库
*/
private String stockId;
/**
* 入库仓库
*/
private String stor_code;
/**
* 单重
*/

View File

@@ -10,10 +10,20 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.*;
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.base_manage.measure.service.IBmMeasureUnitService;
import org.nl.wms.base_manage.measure.service.dao.BmMeasureUnit;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.external_system.erp.dto.ErpQuery;
import org.nl.wms.external_system.erp.dto.ErpSec;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.pda_manage.group.dto.GroupItemData;
import org.nl.wms.pda_manage.group.dto.MaterGroupDto;
import org.nl.wms.pda_manage.group.dto.MaterItem;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormInMst;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutDtl;
import org.nl.wms.pda_manage.iostorage.server.dto.PdaFormOutMst;
@@ -26,6 +36,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
@@ -37,137 +48,67 @@ import java.util.List;
public class PdaInIOService {
@Autowired
ErpSec erpSec;
IMdGruopDickService iMdGruopDickService;
@Autowired
IBmFormStrucService iBmFormStrucService;
IMdMeMaterialbaseService iMdMeMaterialbaseService;
@Autowired
IStIvtIostorinvService iStIvtIostorinvService;
IBmVehicleInfoService iBmVehicleInfoService;
@Autowired
IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
public void pdaInIostorUseCode(PdaFormInMst pdaFormInMst) {
// PdaInIOService ioService = SpringContextHolder.getBean(PdaInIOService.class);
// //创建单据分配货位
// StIvtIostorinv ivtIostorinv = ioService.createPadIvtAndoutDispense(pdaFormOutMst);
// StIvtIostorinv byId = iStIvtIostorinvService.getById(ivtIostorinv.getId());
// //生成流程
// this.pdaTaskOpen(byId);
}
@Transactional
public StIvtIostorinv createPadIvtAndoutDispense(PdaFormOutMst pdaFormOutMst) {
// || StringUtils.isEmpty(pdaFormOutMst.getStor_code())
if (pdaFormOutMst == null || !pdaFormOutMst.getHasChildren()) {
throw new BadRequestException("出库申请失败:请求参数异常");
}
List<PdaFormOutDtl> dtls = pdaFormOutMst.getChildren();
if (CollectionUtils.isEmpty(dtls)) {
throw new BadRequestException("出库申请失败:出库明细不能为空");
}
BmFormStruc formType = iBmFormStrucService.getFormType(pdaFormOutMst.getForm_type());
String billType = StatusEnum.IOBILL_TYPE_OUT.code(formType.getForm_desc());
StIvtIostorinv mst = new StIvtIostorinv();
mst.setId(IdUtil.getStringId());
mst.setCreate_name(SecurityUtils.getCurrentNickName());
mst.setCreate_time(DateUtil.now());
mst.setCode(CodeUtil.getNewCode("IO_CODE"));
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
mst.setSource_form_id(pdaFormOutMst.getId());
mst.setSource_form_type(pdaFormOutMst.getForm_type());
mst.setProduct_area(mst.getForm_data().getString("product_area"));
mst.setBill_type(billType);
mst.setIn_storage(false);
mst.setForm_data(new JSONObject(MapOf.of("shipper",null,"product_area",null)));
List<StIvtIostorinvdtl> list = new ArrayList<>();
for (PdaFormOutDtl dtl : dtls) {
BigDecimal now_assign_qty = dtl.getNow_assign_qty();
if (now_assign_qty==null || now_assign_qty.intValue()==0){
throw new BadRequestException("出库申请失败:当前"+dtl.getMaterial_name()+"明细申请数量为0");
}
StIvtIostorinvdtl ivtDtl = new StIvtIostorinvdtl();
ivtDtl.setSource_form_id(dtl.getId());
ivtDtl.setSource_form_type(dtl.getForm_type());
ivtDtl.setMaterial_id(dtl.getMaterial_id());
String productArea = dtl.getProduct_area();
if (StringUtils.isEmpty(productArea) || !"A1A2A3".contains(productArea)){
throw new BadRequestException("出库申请失败:明细数据车间字段未指定或不正确");
}
String storCode = dtl.getStor_code();
if (StringUtils.isEmpty(storCode)){
throw new BadRequestException("出库申请失败:明细数据仓库字段未指定");
}
HashMap map = MapOf.of("end_struct_code", "", "start_struct_code", "", "order", "", "product_area", productArea);
ivtDtl.setForm_data(new JSONObject(map));
ivtDtl.setQty(now_assign_qty);
ivtDtl.setPcsn(dtl.getPcsn());
ivtDtl.setStor_code(storCode);//pdaFormOutMst.getStor_code()
ivtDtl.setId(IdUtil.getStringId());
ivtDtl.setInv_id(mst.getId());
ivtDtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
list.add(ivtDtl);
}
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("出库申请失败:出库入明细不能为空");
}
iStIvtIostorinvdtlService.saveBatch(list);
iStIvtIostorinvService.save(mst);
for (StIvtIostorinvdtl stIvtIostorinvdtl : list) {
iStIvtIostorinvService.outDispense((JSONObject) JSON.toJSON(stIvtIostorinvdtl));
}
return mst;
}
private void pdaTaskOpen(StIvtIostorinv mst) {
iStIvtIostorinvService.taskOpen((JSONObject) JSONObject.toJSON(mst));
}
public PmFormData getCertificateInfo(String id) {
PmFormData result = new PmFormData();
try {
if (id.contains("OP")||id.contains("op")) {
getOpBills(id, result);
} else {
}
} catch (Exception e) {
throw new BadRequestException("未查询到对应合格证信息!");
}
return result;
}
IBmMeasureUnitService iBmMeasureUnitService;
/**
*
* 合格证入库
* 确认参数完整性
* 生成组盘单子
* 走组盘入库流程
* 回传代码
*/
private void getOpBills(String id, PmFormData result) throws Exception {
IdentifyInfo identifyInfo = new IdentifyInfo();
BeanUtils.copyProperties(erpSec, identifyInfo);
K3CloudApi cloudApi = new K3CloudApi(identifyInfo);
String filterString = "FBillNo = '" + id + "'";
ErpQuery query = new ErpQuery();
query.setFilterString(filterString);
query.setFormId("SFC_OperationPlanning");
query.setFieldKeys("FBillNo,FProOrgId,FProductId,FProductName,FProSpecification,FMOQty,FMOUnitId,FOwnerId,FLot,FProDepartmentId,FStockInOrgId");
query.setLimit(1);
String jsonString = JSON.toJSONString(query);
List<List<Object>> lists = cloudApi.executeBillQuery(jsonString);
if (ObjectUtils.isNotEmpty(lists)) {
List<Object> dataList = lists.get(0);
if (dataList != null && !dataList.isEmpty()) {
result.setCode(dataList.get(0).toString());
result.setPrdOrgId(dataList.get(1).toString());
result.setMaterial_id(dataList.get(2).toString());
result.setMaterial_name(dataList.get(3).toString());
result.setMaterial_spec(dataList.get(4).toString());
result.setQty(new BigDecimal(dataList.get(5).toString()));
result.setUnit_id(dataList.get(6).toString());
result.setOwnerId(dataList.get(7).toString());
result.setPcsn(dataList.get(8).toString());
result.setProduct_area(dataList.get(9).toString());
//result.setStockId(dataList.get(10).toString());
}
public void pdaInIostorUseCode(PdaFormInMst mst) {
String materialId = mst.getMaterial_id();
String vehicleCode = mst.getVehicle_code();
String unitId = mst.getUnit_id();
Assert.noNullElements(new Object[]{mst.getStor_code(),mst.getQty(),mst.getMaterial_code(),mst.getBar_code(), materialId,mst.getQty(),mst.getSingle_weight(),mst.getOwnerId_Id(),mst.getStockId(),mst.getStockOrgId()},"入库失败:请求参数不全");
MaterGroupDto groupDto = new MaterGroupDto();
groupDto.setStor_code(mst.getStor_code());
String form_type;
if (mst.getBillNo().contains("OP")||mst.getBillNo().contains("op")) {
form_type = "PRD_INSTOCK";
}else {
form_type = "STK_InStock";
}
MdMeMaterialbase meMaterialbase = iMdMeMaterialbaseService.getById(materialId);
if (meMaterialbase==null){
throw new BadRequestException("入库失败物料id在系统中不存在");
}
BmMeasureUnit measureUnit = iBmMeasureUnitService.getById(unitId);
if (measureUnit==null){
throw new BadRequestException("入库失败物料单位ID在系统中不存在");
}
BmVehicleInfo vehicleInfo = iBmVehicleInfoService.vehileInfo(vehicleCode);
if (vehicleInfo==null){
throw new BadRequestException("入库失败,载具编码在基础信息中不存在");
}
groupDto.setSource_form_type(form_type);
groupDto.setSource_form_id(mst.getBar_code());
groupDto.setForm_data((JSONObject) JSONObject.toJSON(mst));
MaterItem materItem = new MaterItem();
materItem.setMaterial_id(materialId);
materItem.setMaterial_code(mst.getMaterial_code());
materItem.setMaterial_name(mst.getMaterial_name());
materItem.setMaterial_spec(mst.getMaterial_spec());
materItem.setQty(mst.getQty());
materItem.setPcsn(mst.getPcsn());
materItem.setVehicle_code(vehicleCode);
materItem.setSingle_weight(mst.getSingle_weight());
materItem.setUnit_id(unitId);
materItem.setStor_code(mst.getStor_code());
GroupItemData groupItemData = new GroupItemData();
groupItemData.setSingle_weight(mst.getSingle_weight());
groupItemData.setFMoBillNo(mst.getBillNo());
materItem.setForm_data(groupItemData);
groupDto.setItem(ListOf.of(materItem));
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(groupDto));
}
}