diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java index a8fb1c3a..cbf325e9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/PageQuery.java @@ -58,7 +58,7 @@ public class PageQuery implements Serializable { if (pageNum <= 0) { pageNum = DEFAULT_PAGE_NUM; } - Page page = new Page<>(pageNum, pageSize); + Page page = new Page<>(pageNum+1, pageSize); if (StringUtils.isNotBlank(sort)){ String[] split = sort.split(","); for (int i = 0; i < (split.length & ~1); i=i+2) { diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java index e7f050c8..e60e8871 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/QueryTEnum.java @@ -29,10 +29,12 @@ public enum QueryTEnum { }); }), LE((q, k, v) -> { q.le(k[0],v); }), + GE((q, k, v) -> { q.ge(k[0],v); }), BY((q, k, v) -> { q.orderByDesc(k[0],String.valueOf(v)); }), NO((q, k, v) -> { q.isNull(k[0]); }), NULL_OR_EMPTY((queryWrapper, k, v) -> { queryWrapper.nested(a->a.isNull(k[0]).or().eq(k[0],"")); }), LT((q, k, v) -> { q.lt(k[0],v); }), + GT((q, k, v) -> { q.gt(k[0],v); }), OREQ((q, k, v) -> { if (StringUtils.isBlank((String)v)){ q.isNull(k[0]); }else { q.eq(k[0],v); } }); private LConsumer,String[], Object> doP; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ListOf.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ListOf.java index 17e203c3..e1430961 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ListOf.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/ListOf.java @@ -4,6 +4,8 @@ package org.nl.common.utils; import java.io.Serializable; import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; /* * @author ZZQ @@ -19,4 +21,12 @@ public class ListOf implements Serializable { } return list; } + + public static Set ofSet(K... key){ + Set list = new HashSet<>(); + for (K k : key) { + list.add(k); + } + return list; + } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java new file mode 100644 index 00000000..3af75663 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/utils/SpelUtil.java @@ -0,0 +1,96 @@ +package org.nl.common.utils; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.springframework.expression.Expression; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; + +import java.util.HashMap; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2024/5/13 16:23 + */ +public class SpelUtil { + //SpelExpressionParser方法是否线程安全? + private static SpelExpressionParser SPEL_PARSER = new SpelExpressionParser(); + + public static void main(String[] args) { + JSONObject source = new JSONObject(); + JSONObject model = new JSONObject(); + JSONObject FBillType = new JSONObject(); + JSONArray FARRAY = new JSONArray(); + + source.put("FID","120222"); + source.put("Model",model); + model.put("FDATA", DateUtil.now()); + model.put("FCODE", IdUtil.getStringId()); + model.put("FBillType", FBillType); + FBillType.put("FNumber",33066); + model.put("FARRAY", FARRAY); + FARRAY.add(MapOf.of("ARR1","子子子数字")); + FARRAY.add(MapOf.of("ARR2","子子子数字2")); + Map parse = SpelUtil.parse(source, MapOf.of("FID", "#M['FID']", "ARR1", "#M['Model']['FARRAY'][1]['ARR2']")); + System.out.println(parse.toString()); + /* + { + "FID": "120222", + "Model": { + "FBillType": {"FNumber": 33066 }, + "FCODE": "1789927465523744768", + "FDATA": "2024-05-13 15:55:37", + "FARRAY": [ + {"ARR1": "子子子数字"}, + {"ARR2": "子子子数字2"} + ] + } + } + * */ + System.out.println(source.toJSONString()); +// DemoJSON demoJSON = source.toJavaObject(DemoJSON.class); +//// SpelExpressionParser SPEL_PARSER = new SpelExpressionParser(); +//// StandardEvaluationContext context = new StandardEvaluationContext(); +//// context.setVariable("source",demoJSON); +//// //这种表达式只支持实体 +//// Expression expression = SPEL_PARSER.parseExpression("T(String).valueOf(#source.model.FDATA)"); +//// String value = expression.getValue(context, String.class); +// SpelExpressionParser SPEL_PARSER = new SpelExpressionParser(); +// StandardEvaluationContext context = new StandardEvaluationContext(); +// context.setVariable("k",source); +// //这种表达式只支持实体:map的映射都是通过['xxx']获取,对象的映射通过.xxx +// Expression expression = SPEL_PARSER.parseExpression("#M['Model']['FARRAY'][1]['ARR2']"); +// String value = expression.getValue(context, String.class); +// System.out.println(value); + } + public static Map parse(JSONObject sourceData,Map fieldSkip){ + StandardEvaluationContext context = new StandardEvaluationContext(); + context.setVariable("M",sourceData); + Map result = new HashMap<>(); + for (String field : fieldSkip.keySet()) { + String skip = fieldSkip.get(field); + Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip); + String value = expression.getValue(context, String.class); + result.put(field,value); + } + return result; + } +} +@Data +class DemoJSON{ + private String FID; + private Model model; +} +@Data +class Model{ + private String FDATA; + private String FCODE; + private FBillType FBillType; +} +@Data +class FBillType{ + private Integer FNumber; +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/controller/BmVehicleInfoController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/controller/BmVehicleInfoController.java index 670d4fcf..db7b7e7e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/controller/BmVehicleInfoController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/controller/BmVehicleInfoController.java @@ -37,8 +37,8 @@ public class BmVehicleInfoController { @GetMapping @Log("查询载具") - public ResponseEntity query(VehicleQuery whereJson, PageQuery page) { - return new ResponseEntity<>(TableDataInfo.build(vehicleInfoService.queryAll(whereJson, page)), HttpStatus.OK); + public ResponseEntity query(VehicleQuery query, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(vehicleInfoService.page(page.build(), query.build())), HttpStatus.OK); } @PostMapping diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/dto/VehicleQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/dto/VehicleQuery.java index 2c7ae77c..6ca8f797 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/dto/VehicleQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/dto/VehicleQuery.java @@ -13,13 +13,13 @@ import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; @Data public class VehicleQuery extends BaseQuery { - private String storagevehicle_code_begin; - private String storagevehicle_code_end; - private String storagevehicle_type; + private String vehicle_code_begin; + private String vehicle_code_end; + private String vehicle_type; @Override public void paramMapping() { - super.doP.put("storagevehicle_code_begin", QParam.builder().k(new String[]{"storagevehicle_code"}).type(QueryTEnum.LT).build()); - super.doP.put("storagevehicle_code_end", QParam.builder().k(new String[]{"storagevehicle_code"}).type(QueryTEnum.LE).build()); + super.doP.put("vehicle_code_begin", QParam.builder().k(new String[]{"vehicle_code"}).type(QueryTEnum.GE).build()); + super.doP.put("vehicle_code_end", QParam.builder().k(new String[]{"vehicle_code"}).type(QueryTEnum.LE).build()); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/impl/BmVehicleInfoServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/impl/BmVehicleInfoServiceImpl.java index b940efe7..54301e53 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/impl/BmVehicleInfoServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/base_manage/vehicle/service/impl/BmVehicleInfoServiceImpl.java @@ -18,6 +18,9 @@ import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; import org.nl.wms.base_manage.vehicle.service.dao.mapper.BmVehicleInfoMapper; import org.nl.wms.base_manage.vehicle.service.dto.VehicleQuery; +import org.nl.wms.system_manage.service.dict.ISysDictService; +import org.nl.wms.system_manage.service.dict.dao.Dict; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -37,6 +40,8 @@ import java.util.Map; @Service public class BmVehicleInfoServiceImpl extends ServiceImpl implements IBmVehicleInfoService { + @Autowired + private ISysDictService dictService; @Override public BmVehicleInfo vehileInfo(String vehicle_code) { @@ -50,37 +55,21 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl().eq("para1", map.getString("vehicle_type"))); + if (dict==null){ + throw new BadRequestException("此载具类型"+map.getString("vehicle_type")+"没有配置字典值"); } JSONArray resultCodeArr = new JSONArray(); int num = MapUtil.getInt(map, "num"); for (int i = 0; i < num; i++) { BmVehicleInfo entity = new BmVehicleInfo(); - entity.setVehicle_code(CodeUtil.getNewCode(code)); + entity.setVehicle_code(CodeUtil.getNewCode(map.getString("vehicle_type"))); entity.setVehicle_name(entity.getVehicle_name()); entity.setUpdate_name(SecurityUtils.getCurrentNickName()); entity.setUpdate_name(DateUtil.now()); entity.setIs_used(map.getString("is_used").equals("1")); - entity.setVehicle_type(map.getString("vehicle_type")); + entity.setVehicle_type(dict.getValue()); this.save(entity); resultCodeArr.add(entity.getVehicle_code()); } @@ -167,30 +156,8 @@ public class BmVehicleInfoServiceImpl extends ServiceImpl dtl_items = new ArrayList<>(); - BmFormStruc child_struc = iBmFormStrucService.getOne(new QueryWrapper().eq("parent_id", form_struc.getForm_type())); + BmFormStruc child_struc = iBmFormStrucService.getOne(new QueryWrapper().eq("parent_id", form_struc.getId())); + if (child_struc == null){ + throw new BadRequestException("当前表单配置异常:无子表配置信息"); + } JSONObject child_param = child_struc.getForm_param(); child_param.putAll(BASE_FORM); for (String key : child_param.keySet()) { - dtl_items.add(MapOf.of("lable",form_param.get(key),"value",key)); + dtl_items.add(MapOf.of("lable",child_param.get(key),"value",key)); } result.put("dtl_item",dtl_items); } result.put("item",items); return new ResponseEntity<>(result,HttpStatus.OK); } - - } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java index 7e145a59..b376d63c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/config_manage/form_struc/service/dao/BmFormStruc.java @@ -94,6 +94,11 @@ public class BmFormStruc implements Serializable { */ private String qty; + /** + * 单位id + */ + private String unit_id; + /** * 批次号 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java index 3315c23c..6185d1d1 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/external_system/acs/service/WmsToAcsService.java @@ -1,7 +1,7 @@ package org.nl.wms.external_system.acs.service; -import cn.hutool.json.JSONArray; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.common.utils.InterationUtil; @@ -38,7 +38,7 @@ public class WmsToAcsService implements InitializingBean { //封装数据: TransferDto dto = new TransferDto(); MappingSourceDataTypeHandler typeHandler = new MappingSourceDataTypeHandler<>(); - List items = typeHandler.sourceHandler((JSONArray) JSON.toJSON(arr), mapping); + List items = typeHandler.sourceHandler((JSONArray)JSONArray.toJSON(arr), mapping); dto.setModel(items); JSONObject result = InterationUtil.notifyExt(mapping.getSync_url(), (JSONObject) JSON.toJSON(dto)); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/FormActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/FormActivityBehavior.java index 09c870f7..c41be14d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/FormActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/FormActivityBehavior.java @@ -67,7 +67,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior { // throw new BadRequestException("【flow】当前节点表单类型未定义"); // } //TEST:这部分数据放在框架中,每个节点都需要 - entity.setForm_struc(targetStruc); + entity.setForm_struc(sourceStruc); //处理自定义参数: if (currentNode.getSkipExpression()!=null || currentNode.getSkipExpression().size()>0){ @@ -75,7 +75,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior { if (typeHandler==null){ throw new BadRequestException("【flow】当前节点处理类型未定义"); } - JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), sourceStruc); + JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), targetStruc); //该参数里包含三部分:主数据基础字段,组数据自定义及明细, //明细:基础字段,组数据自定义及参数: diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/MappingHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/MappingHandler.java index 702ba8ce..ad5a9bbc 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/MappingHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/MappingHandler.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.exception.BadRequestException; import org.nl.common.utils.ListOf; import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; @@ -66,11 +67,14 @@ public class MappingHandler extends TypeHandler { } returnObj.put("form_data",form_data); } - JSONArray item = data.getJSONArray("item"); + BmFormStruc item_struc = iBmFormStrucService.getOne(new QueryWrapper().eq("parent_id",form_struc.getForm_type())); if (item!=null){ + //暂定:强制校验 + if (item_struc == null){ + throw new BadRequestException("当前数据存在明细且目标单据:"+form_struc.getForm_type()+" 未配置明细表"); + } JSONArray itemList = new JSONArray(); - BmFormStruc item_struc = iBmFormStrucService.getOne(new QueryWrapper().eq("parent_id",form_struc.getForm_type())); for (int i = 0; i < item.size(); i++) { itemList.add(this.handler(param, item.getJSONObject(i), item_struc)); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/SourceDataTypeHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/SourceDataTypeHandler.java index 23eb1569..be642732 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/SourceDataTypeHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/SourceDataTypeHandler.java @@ -1,7 +1,7 @@ package org.nl.wms.flow_manage.flow.framework.process.nodeType.source; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc; import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/impl/MappingSourceDataTypeHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/impl/MappingSourceDataTypeHandler.java index 9a6de598..d1ebed1f 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/impl/MappingSourceDataTypeHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/source/impl/MappingSourceDataTypeHandler.java @@ -1,6 +1,6 @@ package org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl; -import cn.hutool.json.JSONArray; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import org.nl.common.utils.ListOf; @@ -28,15 +28,17 @@ public class MappingSourceDataTypeHandler extends SourceDataTypeHandler{ public List sourceHandler(JSONArray entity, SyncFormMapping formMapping) { List list = new ArrayList<>(); - JSONObject mappingJson = formMapping.getMapping_json(); + JSONArray mapping_json = formMapping.getMapping_json(); for (Object jdata : entity) { JSONObject data = (JSONObject) jdata; data.putAll(data.getJSONObject("form_data")); JSONObject item = new JSONObject(); - for (String target : mappingJson.keySet()) { - String key = mappingJson.getString(target); - item.put(target,data.get(key)); + for (int i = 0; i < mapping_json.size(); i++) { + JSONObject jsonObject = mapping_json.getJSONObject(i); + String key = jsonObject.getString("mapping_field"); + item.put(key,data.get(key)); } + TypeReference> typeRef = new TypeReference>() {}; list.add(data.toJavaObject(typeRef)); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java index 6416470a..8acf2ac5 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/IPmFormDataService.java @@ -2,6 +2,9 @@ package org.nl.wms.pm_manage.form_data.service; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; + +import java.util.List; /** *

@@ -15,4 +18,6 @@ public interface IPmFormDataService extends IService { Integer syncFormData(String type,String dataString); + List syncAnalyse(SyncFormMapping mapping, String dataString); + } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java index 57b624f2..a0a15dcb 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/dao/PmFormData.java @@ -84,6 +84,11 @@ public class PmFormData implements Serializable { */ private BigDecimal qty; + /** + * 数量 + */ + private String unit_id; + /** * 批次号 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java index c3e61d16..c2951367 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java @@ -1,9 +1,13 @@ package org.nl.wms.pm_manage.form_data.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.utils.ListOf; +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; -import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.SourceDataTypeHandler; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.mapper.PmFormDataMapper; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; @@ -11,13 +15,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.stream.Collectors; /** *

@@ -40,13 +44,11 @@ import java.util.Map; public class PmFormDataServiceImpl extends ServiceImpl implements IPmFormDataService { + @Autowired + private IBmFormStrucService formStrucService; + @Autowired + private ISyncFormMappingService iSyncFormMappingService; - @Autowired - IBmFormStrucService formStrucService; - @Autowired - ISyncFormMappingService iSyncFormMappingService; -// @Autowired - Map SourceDataTypeHandlerMap; @Override public Integer syncFormData(String form_type, String dataString) { @@ -71,5 +73,66 @@ public class PmFormDataServiceImpl extends ServiceImpl syncAnalyse(SyncFormMapping formMapping, String dataString) { + BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", formMapping.getForm_type())); + //目标数据 + JSONObject dataJson = JSONObject.parseObject(dataString); + if (StringUtils.isNotEmpty(one.getConvert_json())){ + dataJson = dataJson.getJSONObject(one.getConvert_json()); + } + Map itemMapping = formMapping.getMapping_json().stream().collect(HashMap::new, (formMap, o) -> { + JSONObject item = (JSONObject) o; + formMap.put(item.getString("value"), item); + }, HashMap::putAll); + //基础字段 + Set fields = ListOf.ofSet(one.getBiz_code() + , one.getBiz_id() + , one.getBiz_code() + , one.getBiz_status() + , one.getMaterial_id() + , one.getPcsn() + , one.getVehicle_code() + , one.getUnit_id() + , one.getQty()); + //查询目标表字段 + JSONObject returnObj = new JSONObject(); + //基础字段映射:如果只有一个就不迭代 + Map map = new HashMap<>(); + JSONObject targetData = mappingParse(fields, itemMapping, dataJson); + //查询表单配置表,获取自定义json:自定义字段参数获取 + JSONObject form_param = one.getForm_param(); + if (form_param!=null){ + JSONObject form_data = mappingParse(form_param.keySet(), itemMapping, dataJson); + targetData.put("form_data",form_data); + } + return null; + } + + + private JSONObject mappingParse(Set fields,Map itemMapping,JSONObject sourceData){ + Map SpelMap = new HashMap<>(); + JSONObject data = new JSONObject(); + for (String field : fields) { + if (StringUtils.isNotEmpty(field)){ + JSONObject itemMappingConfig = itemMapping.get(field); + if (itemMappingConfig == null){ + throw new BadRequestException(String.format("当前表单没有配置字段:%s 映射", new String[]{field})); + } + if (StringUtils.isNotEmpty(itemMappingConfig.getString("skipExpression"))){ + //el表达式解析 + SpelMap.put(field,itemMappingConfig.getString("skipExpression")); + }else { + data.put(field,sourceData.getString(itemMappingConfig.getString("mapping_field"))); + } + if (!CollectionUtils.isEmpty(SpelMap)){ + Map parse = SpelUtil.parse(sourceData, SpelMap); + data.putAll(parse); + } + } + } + return data; + } } + diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java index d8833bd1..0ac525c8 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/dao/SyncFormMapping.java @@ -1,7 +1,6 @@ package org.nl.wms.sync_manage.service.form_mapping.dao; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -62,7 +61,7 @@ public class SyncFormMapping implements Serializable { * 关系中维护springEL表达式 */ @TableField(typeHandler = FastjsonTypeHandler.class) - private JSONObject mapping_json; + private JSONArray mapping_json; /** * 修改人ID diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/impl/SyncFormMappingServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/impl/SyncFormMappingServiceImpl.java index 5db9a83e..238f172a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/impl/SyncFormMappingServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/service/form_mapping/impl/SyncFormMappingServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.wms.sync_manage.service.form_mapping.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; @@ -11,6 +12,7 @@ import org.nl.wms.sync_manage.service.form_mapping.dao.mapper.SyncFormMappingMap import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** *

@@ -38,11 +40,14 @@ public class SyncFormMappingServiceImpl extends ServiceImpl().eq("form_type",mst.getString("form_type"))); SyncFormMapping mapping = new SyncFormMapping(); mapping.setId(IdUtil.getStringId()); mapping.setForm_name(mst.getString("form_name")); @@ -53,7 +58,7 @@ public class SyncFormMappingServiceImpl extends ServiceImpl select sys_code_rule_detail.* from sys_code_rule_detail left join sys_code_rule on sys_code_rule_detail.code_rule_id = sys_code_rule.id - where sys_code_rule.code = #{code} + where sys_code_rule.code = #{code} order by sys_code_rule_detail.sort_num asc diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/dto/CodeRuleQuery.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/dto/CodeRuleQuery.java index de7fb483..8484bacb 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/dto/CodeRuleQuery.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/dto/CodeRuleQuery.java @@ -14,6 +14,6 @@ public class CodeRuleQuery extends BaseQuery { @Override public void paramMapping() { - this.doP.put("blurry", QParam.builder().k(new String[]{"code", "name"}).type(QueryTEnum.LK).build()); + this.doP.put("blurry", QParam.builder().k(new String[]{"code", "name"}).type(QueryTEnum.ORLK).build()); } } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java index 027003ba..1812bb62 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/coderule/impl/SysCodeRuleServiceImpl.java @@ -55,6 +55,9 @@ public class SysCodeRuleServiceImpl extends ServiceImpl ruleDtl = this.baseMapper.findBycode(code); + if (CollectionUtils.isEmpty(ruleDtl)){ + return ""; + } if (CollectionUtils.isEmpty(ruleDtl)){ throw new BadRequestException("编码规则不存在"+code); } diff --git a/wms_pro/qd/src/views/tools/codeGen/codeDetail.vue b/wms_pro/qd/src/views/tools/codeGen/codeDetail.vue index 650d68b0..858474b1 100644 --- a/wms_pro/qd/src/views/tools/codeGen/codeDetail.vue +++ b/wms_pro/qd/src/views/tools/codeGen/codeDetail.vue @@ -60,6 +60,10 @@ + + + + diff --git a/wms_pro/qd/src/views/wms/base_manage/vehicle/index.vue b/wms_pro/qd/src/views/wms/base_manage/vehicle/index.vue index fd2f3d59..58dfed51 100644 --- a/wms_pro/qd/src/views/wms/base_manage/vehicle/index.vue +++ b/wms_pro/qd/src/views/wms/base_manage/vehicle/index.vue @@ -177,7 +177,7 @@ @@ -188,6 +188,38 @@ + + + + + + + + + + + + + + + + + + + + @@ -209,7 +241,7 @@ @selection-change="crud.selectionChangeHandler" > - + @@ -289,14 +321,14 @@ const defaultForm = { l: null, h: null, weight: null, - overstruct_type: null, - occupystruct_qty: null, + overstruct_type: '0', + occupystruct_qty: '1', ext_json: null, num: '1' } export default { name: 'Storagevehicleinfo', - dicts: ['storagevehicle_type'], + dicts: ['storagevehicle_type',"VEHICLE_OVER_TYPE"], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { @@ -371,6 +403,9 @@ export default { [CRUD.HOOK.beforeRefresh]() { return true }, + onCloseDialog(){ + this.form=defaultForm + }, queryMater(index, row) { this.materialShow = true }, diff --git a/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue b/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue index e134c277..ec876240 100644 --- a/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue +++ b/wms_pro/qd/src/views/wms/sync_manage/form_mapping/index.vue @@ -128,6 +128,25 @@ 确认 + + + + + + + + + +

+ - - - - - - - - - - - - + + + + + + + + + @@ -215,6 +240,8 @@ export default { dataTypeList: [], addShow: false, editShow: false, + syncShow: false, + syncForm: {}, permission: {}, rules: { position_code: [ @@ -262,6 +289,16 @@ export default { }, querytable1() { this.crud.toQuery() + }, + syncTest(row){ + this.syncShow = true + this.syncForm = row + }, + syncTestSubmit(){ + this.crud.notify('操作成功'+row.form_type, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + syncTestCannel(){ + this.syncForm = {} } } }