rev:出入库流程兼容
This commit is contained in:
@@ -40,6 +40,7 @@ public enum StatusEnum {
|
||||
* 点位锁类型
|
||||
*/
|
||||
LOCK(MapOf.of("无","00","入","10","出","20")),
|
||||
STRATEGY_TYPE(MapOf.of("入库", "1", "出库", "2", "出入库", "3")),
|
||||
;
|
||||
private Map<String, String> code;
|
||||
|
||||
|
||||
@@ -3,13 +3,17 @@ package org.nl.common.utils;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.spel.SpelEvaluationException;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -23,7 +27,7 @@ public class SpelUtil {
|
||||
|
||||
private static SpelExpressionParser SPEL_PARSER = new SpelExpressionParser();
|
||||
|
||||
public static void main(String[] args) {
|
||||
public static void main2(String[] args) {
|
||||
JSONObject source = new JSONObject();
|
||||
JSONObject model = new JSONObject();
|
||||
JSONObject FBillType = new JSONObject();
|
||||
@@ -87,6 +91,50 @@ public class SpelUtil {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public static <Z> Z parse(JSONObject sourceData, String skip, Class<Z> target){
|
||||
StandardEvaluationContext context = new StandardEvaluationContext();
|
||||
context.setVariable("M",sourceData);
|
||||
Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip);
|
||||
try {
|
||||
return expression.getValue(context, target);
|
||||
}catch (SpelEvaluationException ex){
|
||||
throw new BadRequestException("当前业务数据没有映射 对应的数据"+skip);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
TypeReference<Class<JSONArray>> typeRef = new TypeReference<Class<JSONArray>>() {};
|
||||
ParameterizedType type = (ParameterizedType) typeRef.getType();
|
||||
Type type1 = type.getActualTypeArguments()[0];
|
||||
Class aClass = (Class) type1;
|
||||
String a="{\n" +
|
||||
"\t\"code\": \"REC10022\",\n" +
|
||||
"\t\"t\": {\n" +
|
||||
"\t\t\"form_data\": {\n" +
|
||||
"\t\t\t\"stor_code\": \"\",\n" +
|
||||
"\t\t\t\"struct_code\": \"\",\n" +
|
||||
"\t\t\t\"order\": \"\"\n" +
|
||||
"\t\t},\n" +
|
||||
"\t\t\"stor_code\": \"FStockId\",\n" +
|
||||
"\t\t\"pcsn\": \"werwe\",\n" +
|
||||
"\t\t\"material_id\": \"FMaterialId\",\n" +
|
||||
"\t\t\"biz_id\": \"1793594766324273152\",\n" +
|
||||
"\t\t\"order\": \"FMoBillNo\"\n" +
|
||||
"\t},\n" +
|
||||
"\t\"create_time\": \"2024-05-23 18:48:31\",\n" +
|
||||
"\t\"form_id\": \"\",\n" +
|
||||
"\t\"id\": \"1793594856053018624\",\n" +
|
||||
"\t\"form_type\": \"PRD_FeedMtrl\",\n" +
|
||||
"\t\"source_form_id\": \"1793594766324273152\",\n" +
|
||||
"\t\"source_form_type\": \"st_ivt_iostorinvdtl_in\",\n" +
|
||||
"\t\"status\": \"10\",\n" +
|
||||
"\t\"create_name\": \"管理员\"\n" +
|
||||
"}";
|
||||
Object o = JSONObject.parseObject(a, aClass);
|
||||
System.out.println(o.toString());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@Data
|
||||
class DemoJSON{
|
||||
|
||||
@@ -96,4 +96,9 @@ public class MdPbVehicleMater implements Serializable {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 关联实例id
|
||||
*/
|
||||
private String proc_inst_id;
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
||||
* 先进先出策略
|
||||
*/
|
||||
@Service("fifo")
|
||||
public class FIFORuleHandler extends Decisioner<StIvtStructattr, StIvtIostorinvdtl> {
|
||||
public class FIFORuleHandler extends Decisioner<StIvtStructattr, JSONObject> {
|
||||
|
||||
/**
|
||||
* 出入库明细服务
|
||||
@@ -57,17 +57,17 @@ public class FIFORuleHandler extends Decisioner<StIvtStructattr, StIvtIostorinvd
|
||||
* @return List<StIvtStructattr> :仓位集合
|
||||
*/
|
||||
@Override
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtl param) {
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, JSONObject param) {
|
||||
// 判断仓位是否为空
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
throw new BadRequestException("仓位集合为空!");
|
||||
}
|
||||
//分配数量
|
||||
int plan_qty = param.getPlan_qty().intValue();
|
||||
int plan_qty = param.getInteger("plan_qty");
|
||||
//当前条件只有id,批次
|
||||
List<StructattrVechielDto> vechielDtos = iStIvtStructattrService.collectVechicle(MapOf.of("material_id", param.getMaterial_id()
|
||||
, "pcsn", param.getPcsn()
|
||||
, "stor_code", param.getStor_code()
|
||||
List<StructattrVechielDto> vechielDtos = iStIvtStructattrService.collectVechicle(MapOf.of("material_id", param.getString("material_id")
|
||||
, "pcsn", param.getString("pcsn")
|
||||
, "stor_code", param.getString("stor_code")
|
||||
, "order_by", "update_time asc")
|
||||
);
|
||||
List<String> need = list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.toList());
|
||||
|
||||
@@ -24,7 +24,7 @@ import java.util.List;
|
||||
* 就近放置策略:根据物料ABC类区分
|
||||
*/
|
||||
@Service("nearby")
|
||||
public class NearbyRuleHandler extends Decisioner<StIvtStructattr, StIvtIostorinvdtl> {
|
||||
public class NearbyRuleHandler extends Decisioner<StIvtStructattr, JSONObject> {
|
||||
//每个策略的配置信息
|
||||
private static StStrategyConfig stStrategyConfig;
|
||||
/**
|
||||
@@ -49,7 +49,7 @@ public class NearbyRuleHandler extends Decisioner<StIvtStructattr, StIvtIostorin
|
||||
* @return List<StIvtStructattr> :仓位集合
|
||||
*/
|
||||
@Override
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtl param) {
|
||||
public List<StIvtStructattr> handler(List<StIvtStructattr> list, JSONObject param) {
|
||||
if (CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前分配策略无可用货位");
|
||||
}
|
||||
|
||||
@@ -39,9 +39,9 @@ public class StackingTaskHandler implements TaskHandler {
|
||||
public JSONObject process(JSONObject from, JSONObject param) {
|
||||
//区分出库还是入库
|
||||
String vehicle_code = from.getString("vehicle_code");
|
||||
String point_code1 = from.getString("struct_code");
|
||||
String point_code2 = param.getString("start_point");
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(point_code1)||StringUtils.isEmpty(point_code2)){
|
||||
String struct_code = from.getString("struct_code");
|
||||
String start_point = param.getString("start_point");
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(struct_code)){
|
||||
throw new BadRequestException("创建任务失败:StackingTaskHandler#process()方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
@@ -59,8 +59,8 @@ public class StackingTaskHandler implements TaskHandler {
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setTask_type(param.getString("task_type"));
|
||||
task.setVehicle_code(vehicle_code);
|
||||
task.setPoint_code1(point_code1);
|
||||
task.setPoint_code2(point_code2);
|
||||
task.setPoint_code1(start_point);
|
||||
task.setPoint_code2(struct_code);
|
||||
taskService.create(task);
|
||||
Boolean isSend = param.getBoolean("is_send");
|
||||
if (isSend){
|
||||
|
||||
@@ -24,6 +24,7 @@ public class FormConverter extends BaseNodeConverter {
|
||||
form.setId(node.getString("id"));
|
||||
form.setType(node.getString("type"));
|
||||
form.setForm_type(properties.getString("form_type"));
|
||||
form.setSource_data(properties.getString("sourceData"));
|
||||
form.setName(properties.getString("name"));
|
||||
form.setCategory(properties.getString("category"));
|
||||
form.setDocumentation(properties.getString("documentation"));
|
||||
|
||||
@@ -4,6 +4,7 @@ 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.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
@@ -16,6 +17,8 @@ import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.Form;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
|
||||
import org.nl.wms.flow_manage.flow.service.history.IActHiExecutionService;
|
||||
import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
|
||||
@@ -45,6 +48,9 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
@Autowired
|
||||
IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Autowired
|
||||
private IActHiExecutionService actHiExecutionService;
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
FlowElement flowElement = entity.getCurrentFlowElement();
|
||||
@@ -60,6 +66,16 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
// }
|
||||
//TEST:这部分数据放在框架中,每个节点都需要
|
||||
entity.setForm_struc(sourceStruc);
|
||||
//怕断是否指定数据源:
|
||||
JSONObject sourceData = entity.getT();
|
||||
|
||||
String dataConfig = currentNode.getSource_data();
|
||||
if (StringUtils.isNotEmpty(dataConfig)){
|
||||
ActHiExecution one = actHiExecutionService.getOne(new QueryWrapper<ActHiExecution>()
|
||||
.eq("activity_id", dataConfig)
|
||||
.eq("proc_inst_id", entity.getProc_inst_id()));
|
||||
sourceData = one.getForm_data();
|
||||
}
|
||||
|
||||
//处理自定义参数:
|
||||
if (currentNode.getSkipExpression()!=null || currentNode.getSkipExpression().size()>0){
|
||||
@@ -67,7 +83,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
if (typeHandler==null){
|
||||
throw new BadRequestException("【flow】当前节点处理类型未定义");
|
||||
}
|
||||
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT() , targetStruc);
|
||||
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), sourceData , targetStruc);
|
||||
|
||||
//该参数里包含三部分:主数据基础字段,组数据自定义及明细,
|
||||
//明细:基础字段,组数据自定义及参数:
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.entity.node.impl.task;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowNode;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/18 11:28
|
||||
*/
|
||||
@Data
|
||||
public class ExecuteTask extends FlowNode {
|
||||
|
||||
|
||||
/**
|
||||
* 指定数据来源:从节点中获取
|
||||
*/
|
||||
private String source_data;
|
||||
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ public class Form extends ExecuteTask {
|
||||
* 表单处理类别
|
||||
*/
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 处理表达式
|
||||
*/
|
||||
|
||||
@@ -18,10 +18,6 @@ public class StrucForm extends ExecuteTask {
|
||||
*/
|
||||
private String form_type;
|
||||
|
||||
/**
|
||||
* 指定数据来源:从节点中获取
|
||||
*/
|
||||
private String source_data;
|
||||
/**
|
||||
* 表单处理类别
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,9 @@ import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.ListOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SpringContextHolder;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.ServerTask;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
|
||||
@@ -41,6 +44,8 @@ public class DecisionHandler extends TypeHandler<JSONObject,ExecutionEntity<JSON
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
@Autowired
|
||||
private IStIvtIostorinvdtlService stIvtIostorinvdtlInService;
|
||||
@Autowired
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Autowired
|
||||
private Map<String, Decisioner> decisionHandlerMap;
|
||||
@@ -57,26 +62,37 @@ public class DecisionHandler extends TypeHandler<JSONObject,ExecutionEntity<JSON
|
||||
//出入库明细
|
||||
JSONObject t = entity.getT();
|
||||
JSONObject item_json = t.getJSONObject("t");
|
||||
StIvtIostorinvdtl iostorinvdtl = item_json.toJavaObject(StIvtIostorinvdtl.class);
|
||||
List<StIvtStructattr> list = SpringContextHolder.getBean(DecisionHandler.class).dispense(params, iostorinvdtl);
|
||||
ServerTask flow = (ServerTask)entity.getCurrentFlowElement();
|
||||
List<StIvtStructattr> list = SpringContextHolder.getBean(DecisionHandler.class).dispense(params, item_json);
|
||||
//更新仓位,更新数据
|
||||
String collect = list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(","));
|
||||
System.out.println("更新明细id"+iostorinvdtl.getId());
|
||||
stIvtIostorinvdtlInService.update(new UpdateWrapper<StIvtIostorinvdtl>()
|
||||
.set("struct_code",collect)
|
||||
.eq("id",iostorinvdtl.getId()));
|
||||
System.out.println("更新明细id"+item_json.getString("id"));
|
||||
StringBuffer sql = new StringBuffer();
|
||||
sql.append("update ")
|
||||
.append(flow.getForm_type())
|
||||
.append(" set struct_code = ")
|
||||
.append("'"+collect+"'")
|
||||
.append(" where id = ")
|
||||
.append("'"+item_json.getString("id")+"'");
|
||||
iPmFormDataService.dynamicSql(sql.toString());
|
||||
item_json.put("struct_code",collect);
|
||||
return t;
|
||||
}
|
||||
@Transactional(propagation= Propagation.REQUIRES_NEW)
|
||||
public List<StIvtStructattr> dispense(List<String> params, StIvtIostorinvdtl iostorinvdtl) {
|
||||
public List<StIvtStructattr> dispense(List<String> params, JSONObject iostorinvdtl) {
|
||||
Decisioner oneDecisioner = decisionHandlerMap.get(params.get(0));
|
||||
//判断是出库还是入库
|
||||
String stor_code = iostorinvdtl.getString("stor_code");
|
||||
|
||||
String strategy_type = oneDecisioner.strategyConfig.getStrategy_type();
|
||||
boolean in_storage = StatusEnum.STRATEGY_TYPE.code("入库").equals(strategy_type);
|
||||
AtomicReference<List<StIvtStructattr>> structCode = new AtomicReference<>();
|
||||
RedissonUtils.lock(()->{
|
||||
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
|
||||
.eq("is_used", true)
|
||||
.eq("lock_type", StatusEnum.LOCK.code("无"))
|
||||
.eq("stor_code", iostorinvdtl.getStor_code());
|
||||
if (iostorinvdtl.getIn_storage()){
|
||||
.eq("stor_code", iostorinvdtl.getString("stor_code"));
|
||||
if (in_storage){
|
||||
query.eq("vehicle_code","");
|
||||
}else {
|
||||
query.ne("vehicle_code","");
|
||||
@@ -97,14 +113,14 @@ public class DecisionHandler extends TypeHandler<JSONObject,ExecutionEntity<JSON
|
||||
throw new BadRequestException("无可分配货位!");
|
||||
}
|
||||
//如果是入库的话只分配一个,出库的话有可能多个货位
|
||||
if (iostorinvdtl.getIn_storage()){
|
||||
if (in_storage){
|
||||
list= ListOf.of(list.get(0));
|
||||
}
|
||||
structCode.set(list);
|
||||
System.out.println("分配的货位"+list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(",")));
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
// .set("vehicle_code", iostorinvdtl.getVehicle_code())
|
||||
.set("lock_type", StatusEnum.LOCK.code(iostorinvdtl.getIn_storage()?"入":"出"))
|
||||
.set("lock_type", StatusEnum.LOCK.code(in_storage?"入":"出"))
|
||||
.in("struct_code", list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.toList())));
|
||||
System.out.println("货位绑定成功");
|
||||
},"入",2);
|
||||
|
||||
@@ -6,8 +6,10 @@ 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.apache.poi.ss.formula.functions.T;
|
||||
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.entity.ExecutionEntity;
|
||||
@@ -33,9 +35,8 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
JSONObject resultT = new JSONObject();
|
||||
|
||||
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
|
||||
|
||||
//数据平铺
|
||||
JSONObject sourceFormData = new JSONObject(data.getJSONObject("t"));
|
||||
//数据平铺
|
||||
String souceFromId = data.getString("form_id");
|
||||
String souceFromType = data.getString("form_type");
|
||||
JSONObject forms = sourceFormData.getJSONObject("form_data");
|
||||
@@ -44,16 +45,7 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
}
|
||||
//数据字段列表+自定义的字段:不从配置表获取
|
||||
Object formDataMapping = mapping.remove("form_data");
|
||||
// List<String> fields = ListOf.of(form_struc.getBiz_code()
|
||||
// , form_struc.getBiz_id()
|
||||
// , form_struc.getBiz_code()
|
||||
// , form_struc.getBiz_status()
|
||||
// , form_struc.getBiz_form_type()
|
||||
// , form_struc.getMaterial_id()
|
||||
// , form_struc.getPcsn()
|
||||
// , form_struc.getVehicle_code()
|
||||
// , form_struc.getUnit_id()
|
||||
// , form_struc.getQty());
|
||||
|
||||
JSONObject t = new JSONObject();
|
||||
//查询目标表字段
|
||||
//基础字段映射:如果只有一个就不迭代
|
||||
@@ -80,11 +72,17 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
}
|
||||
t.put("form_data",form_data);
|
||||
}
|
||||
JSONArray item = data.getJSONArray("item");
|
||||
Object itemSkip = param.remove("skipExpression");
|
||||
JSONArray item = new JSONArray();
|
||||
if (data.getJSONArray("item") == null){
|
||||
item.add(data);
|
||||
}else {
|
||||
item = data.getJSONArray("item");
|
||||
}
|
||||
BmFormStruc item_struc = iBmFormStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("parent_id",form_struc.getId()));
|
||||
if (item!=null){
|
||||
//暂定:强制校验
|
||||
if (item_struc == null){
|
||||
if (item_struc != null){
|
||||
if (item==null){
|
||||
//暂定:强制校验
|
||||
throw new BadRequestException("当前数据存在明细且目标单据:"+form_struc.getForm_type()+" 未配置明细表");
|
||||
}
|
||||
JSONArray itemList = new JSONArray();
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
|
||||
import org.nl.wms.md_manage.group_dick.service.dto.GroupDickQuery;
|
||||
import org.nl.wms.md_manage.group_dick.service.dto.MdGruopDtlDto;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -43,6 +44,8 @@ public class MdGruopDickController {
|
||||
|
||||
@Autowired
|
||||
private IMdGruopDickService iMdGruopDickService;
|
||||
@Autowired
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询组盘表")
|
||||
|
||||
@@ -29,15 +29,20 @@ public class MdGruopDtl implements Serializable {
|
||||
* 主表id
|
||||
*/
|
||||
private String dick_id;
|
||||
/**
|
||||
* 实例id
|
||||
*/
|
||||
private String proc_inst_id;
|
||||
|
||||
/**
|
||||
* 载具
|
||||
*/
|
||||
private String vehicle_code;
|
||||
/**
|
||||
* 仓位
|
||||
*/
|
||||
private String struct_code;
|
||||
/**
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String stor_code;
|
||||
/**
|
||||
* 载具
|
||||
*/
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</select>
|
||||
<select id="getGroupDtl" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
*,
|
||||
md_group_dtl.*,md_pb_vehicleMater.*,
|
||||
md_me_materialbase.material_code,
|
||||
md_me_materialbase.material_name,
|
||||
md_me_materialbase.material_spec
|
||||
|
||||
@@ -28,15 +28,18 @@ public class MdGruopDtlDto extends MdPbVehicleMater {
|
||||
* 主表id
|
||||
*/
|
||||
private String dick_id;
|
||||
/**
|
||||
* 实例id
|
||||
*/
|
||||
private String proc_inst_id;
|
||||
|
||||
/**
|
||||
* 载具
|
||||
*/
|
||||
private String vehicle_code;
|
||||
/**
|
||||
* 仓位
|
||||
*/
|
||||
private String struct_code;
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String stor_code;
|
||||
|
||||
/**
|
||||
* 组盘状态
|
||||
|
||||
@@ -107,7 +107,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
iMdGruopDtlService.saveBatch(items);
|
||||
iMdPbVehicleMaterService.saveBatch(vehicleMaters);
|
||||
|
||||
BussEventMulticaster.Publish(new FlowStartEvent("md_group_dick", (Consumer<String>) proc_inst_id -> {
|
||||
BussEventMulticaster.Publish(new FlowStartEvent("md_group", (Consumer<String>) proc_inst_id -> {
|
||||
self.update(new UpdateWrapper<MdGruopDick>()
|
||||
.set("proc_inst_id",proc_inst_id).eq("id",mdGroupMst.getId())); })
|
||||
.build("md_group_dick",mdGroupMst.getId(),mdGroupMst.getSource_form_type(),mdGroupMst.getSource_form_id(),forms)
|
||||
|
||||
@@ -32,4 +32,6 @@ public interface IPmFormDataService extends IService<PmFormData> {
|
||||
|
||||
|
||||
Object getSonDtlFormData(String id);
|
||||
|
||||
void dynamicSql(String sql);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.pm_manage.form_data.service.dao.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
|
||||
@@ -21,4 +22,6 @@ public interface PmFormDataMapper extends BaseMapper<PmFormData> {
|
||||
List<PmFormData> query(@Param("query") FormDataQuery query);
|
||||
|
||||
List<PmFormDataDto> queryTree(@Param("query")FormDataQuery query);
|
||||
@Update("${sql}")
|
||||
void dynamicSql(@Param("sql")String sql);
|
||||
}
|
||||
|
||||
@@ -216,5 +216,12 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
|
||||
Assert.notNull(from_type,"表单类型参数不能为空");
|
||||
return this.list(new QueryWrapper<PmFormData>().eq("form_type",from_type));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dynamicSql(String sql) {
|
||||
if (StringUtils.isNotEmpty(sql)){
|
||||
this.baseMapper.dynamicSql(sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
throw new BadRequestException("未配置出入库默认规则,请在系统配置中配置");
|
||||
}
|
||||
List<String> decisions = Arrays.asList(byCode.getValue().split(","));
|
||||
List<StIvtStructattr> dispense = decisionHandler.dispense(decisions, form.toJavaObject(StIvtIostorinvdtl.class));
|
||||
List<StIvtStructattr> dispense = decisionHandler.dispense(decisions, form);
|
||||
return dispense;
|
||||
}
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="实例状态">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.FLOW_STATUS[scope.row.status] }}
|
||||
{{ statusEnum.label.FLOW_STATUS[scope.row.status] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" show-overflow-tooltip show-tooltip-when-overflow label="备注"/>
|
||||
@@ -189,7 +189,7 @@ const defaultForm = {
|
||||
form_data: null
|
||||
}
|
||||
export default {
|
||||
dicts: ["FLOW_STATUS"],
|
||||
statusEnums: ["FLOW_STATUS"],
|
||||
name: 'Execution',
|
||||
components: {pagination, crudOperation, rrOperation, udOperation, ViewCurrentFlowDesigner},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
|
||||
@@ -86,6 +86,13 @@
|
||||
border
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column show-overflow-tooltip prop="stor_code" label="仓库" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input v-model="tableData[scope.$index].stor_code" class="input-with-select" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="struct_code" label="仓位" width="160" align="center" />
|
||||
|
||||
<el-table-column type="index" label="序号" width="55" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="vehicle_code" label="载具编号" width="160" align="center">
|
||||
<template scope="scope">
|
||||
@@ -291,6 +298,7 @@ export default {
|
||||
data.material_code = row.material_code
|
||||
data.material_id = row.material_id
|
||||
data.material_spec = row.material_spec
|
||||
data.stor_code = row.stor_code
|
||||
data.source_form_type = row.form_type
|
||||
data.source_form_id = row.id
|
||||
data.unit_id = row.unit_id
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="55" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="stor_code" label="仓库" width="160" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="struct_code" label="仓位" width="160" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="vehicle_code" label="托盘编号" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="parent_vehicle_code" label="父托盘编码" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="material_id" label="物料id" align="center" />
|
||||
|
||||
Reference in New Issue
Block a user