add:拣选出库流程配置
This commit is contained in:
@@ -32,7 +32,7 @@ public enum StatusEnum {
|
||||
* 出入库单据类型
|
||||
*/
|
||||
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask")),
|
||||
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask")),
|
||||
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask", "拣选出库", "23","outStorageTask")),
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
@@ -59,20 +59,12 @@ public enum StatusEnum {
|
||||
private ForkMap<String, String,String> code;
|
||||
|
||||
public String code(String desc) {
|
||||
String code = this.getCode().getM(desc);
|
||||
String code = this.getCode().getNode(desc);
|
||||
if (StringUtils.isNotEmpty(code)) {
|
||||
return code;
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||
}
|
||||
public String desc(String code) {
|
||||
for (String key : this.getCode().getKeySet()) {
|
||||
if (key.equals(code)){
|
||||
return this.getCode().getM(key);
|
||||
}
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应编码" + code + "未定义");
|
||||
}
|
||||
|
||||
public String getR(String code) {
|
||||
for (String key : this.getCode().getKeySet()) {
|
||||
@@ -84,7 +76,7 @@ public enum StatusEnum {
|
||||
return r;
|
||||
}
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应编码" + code + "未定义x");
|
||||
throw new BadRequestException(this.name() + "对应编码" + code + "未定义x的数据");
|
||||
}
|
||||
|
||||
public Boolean check(String code) {
|
||||
|
||||
@@ -25,6 +25,15 @@ public class ForkMap<L,M,R> implements Serializable {
|
||||
return node.middle;
|
||||
}
|
||||
|
||||
public <L> L getNode(M desc){
|
||||
for (Node<L,M,R> value : items.values()) {
|
||||
if (value.middle.equals(desc)){
|
||||
return value.left;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public <R> R getR(L key){
|
||||
Node<L,M,R> node = items.get(hash(key));
|
||||
if (node==null){
|
||||
@@ -52,7 +61,7 @@ public class ForkMap<L,M,R> implements Serializable {
|
||||
public static <V> ForkMap of(V...keys){
|
||||
ForkMap<V,V,V> map = new ForkMap<V,V,V>();
|
||||
for (int i = 0; i < keys.length/3; i++) {
|
||||
map.put(keys[i*3],keys[i*3+1],keys[i*3+2]);
|
||||
map.put(keys[i*3+1],keys[i*3],keys[i*3+2]);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -93,11 +93,13 @@ public class SpelUtil {
|
||||
}
|
||||
public static <Z> Z parse(JSONObject sourceData, String skip, Class<Z> target){
|
||||
StandardEvaluationContext context = new StandardEvaluationContext();
|
||||
context.setVariable("M",sourceData);
|
||||
Map<String, Object> innerMap = sourceData.getInnerMap();
|
||||
context.setVariable("M",innerMap);
|
||||
Expression expression = SpelUtil.SPEL_PARSER.parseExpression(skip);
|
||||
try {
|
||||
return expression.getValue(context, target);
|
||||
}catch (SpelEvaluationException ex){
|
||||
ex.printStackTrace();
|
||||
throw new BadRequestException("当前业务数据没有映射 对应的数据"+skip);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
package org.nl.wms.dispatch_manage.task.handler.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:34
|
||||
* 出库任务入库任务
|
||||
*/
|
||||
@Service
|
||||
public class OutStorageTask extends AbstractTask {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject createTask(JSONObject from) {
|
||||
String vehicle_code = from.getString("vehicle_code");
|
||||
String target_point = from.getString("target_point");
|
||||
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.ne("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
|
||||
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
|
||||
task.setCreate_time(DateUtil.now());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setTask_type(from.getString("task_type"));
|
||||
task.setVehicle_code(vehicle_code);
|
||||
task.setPoint_code1(struct.getStruct_code());
|
||||
task.setPoint_code2(target_point);
|
||||
taskService.save(task);
|
||||
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
|
||||
.set(MdPbVehicleMater::getTask_code,task.getTask_code())
|
||||
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()));
|
||||
//TODO:是否下发
|
||||
Boolean isSend = from.getBoolean("is_send");
|
||||
if (isSend){
|
||||
//参数封装,调acs接口
|
||||
}
|
||||
return (JSONObject)JSON.toJSON(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatus(JSONObject data) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(JSONObject data) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package org.nl.wms.dispatch_manage.task.handler.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:34
|
||||
* 拣选出库任务:
|
||||
* 判断拣选台是否开启:任务平均分配
|
||||
*/
|
||||
@Service
|
||||
public class PickStorageTask extends AbstractTask {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public JSONObject createTask(JSONObject from) {
|
||||
String vehicle_code = from.getString("vehicle_code");
|
||||
String struct_code = from.getString("struct_code");
|
||||
String target_point = from.getString("target_point");
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(struct_code)){
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
}
|
||||
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", from.getString("task_type"))
|
||||
.ne("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
|
||||
task.setCreate_time(DateUtil.now());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setTask_type(from.getString("task_type"));
|
||||
task.setVehicle_code(vehicle_code);
|
||||
task.setPoint_code1(struct_code);
|
||||
task.setPoint_code2(target_point);
|
||||
taskService.save(task);
|
||||
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
|
||||
.set(MdPbVehicleMater::getTask_code,task.getTask_code())
|
||||
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()));
|
||||
//TODO:是否下发
|
||||
Boolean isSend = from.getBoolean("is_send");
|
||||
if (isSend){
|
||||
//参数封装,调acs接口
|
||||
}
|
||||
return (JSONObject)JSON.toJSON(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatus(JSONObject data) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(JSONObject data) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -55,7 +55,7 @@
|
||||
md_pb_vehicleMater
|
||||
LEFT JOIN st_ivt_structattr ON md_pb_vehicleMater.vehicle_code = st_ivt_structattr.vehicle_code
|
||||
LEFT JOIN md_me_materialbase ON md_pb_vehicleMater.material_id = md_me_materialbase.material_id
|
||||
LEFT JOIN sch_base_task ON (md_pb_vehicleMater.vehicle_code = sch_base_task.vehicle_code and md_pb_vehicleMater.task_code = sch_base_task.task_code )
|
||||
LEFT JOIN sch_base_task ON md_pb_vehicleMater.task_code = sch_base_task.task_code
|
||||
where md_pb_vehicleMater.vehicle_code in
|
||||
<foreach collection="vehicles" item="vehicle_code" open="(" close=")" separator=",">
|
||||
#{vehicle_code}
|
||||
|
||||
@@ -27,7 +27,7 @@ public class BpmnJSONConverter {
|
||||
Node_Converter.put("strucForm",new StrucFormConverter());
|
||||
Node_Converter.put("startEvent",new StartEventConverter());
|
||||
Node_Converter.put("endEvent",new EndEventConverter());
|
||||
Node_Converter.put("gateWay",new GatewayConverter());
|
||||
Node_Converter.put("gateWay",new GateWayConverter());
|
||||
Node_Converter.put("serverTask",new ServerTaskConverter());
|
||||
Node_Converter.put("sequenceFlow",new SequenceFlowConverter());
|
||||
Node_Converter.put("sendMsg",new SendMsgConverter());
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.Iterator;
|
||||
* @author ZZQ
|
||||
* @Date 2024/4/26 11:08
|
||||
*/
|
||||
public class GatewayConverter extends BaseNodeConverter {
|
||||
public class GateWayConverter extends BaseNodeConverter {
|
||||
@Override
|
||||
public FlowNode convertToBpmnModel(Iterator<JSONObject> iterator, JSONObject node, BpmnModel model) {
|
||||
JSONObject properties = node.getJSONObject("properties");
|
||||
@@ -1,19 +1,61 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.engine.behavior.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
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.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBehavior;
|
||||
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.Sequence.SequenceFlow;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.gateway.GateWay;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/18 13:17
|
||||
* 互斥网关:循环target:只有一个满足
|
||||
* 逻辑判断表达式如下:"#M['plan_qty']>#M['qty']"
|
||||
*/
|
||||
@Service("gateWay")
|
||||
public class GateWayActivityBehavior extends FlowNodeActivityBehavior {
|
||||
public class GateWayActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity execution) {
|
||||
System.out.println(execution.getCurrentFlowElement().getType());
|
||||
super.execute(execution);
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
System.out.println("流经网关参数:"+entity.getT().toString());
|
||||
|
||||
FlowElement element = entity.getCurrentFlowElement();
|
||||
GateWay gateWay = (GateWay) element;
|
||||
List<SequenceFlow> targetSequence = new ArrayList<>();
|
||||
for (SequenceFlow sequenceFlow : gateWay.getOutgoingFlows()) {
|
||||
String skipExpression = sequenceFlow.getSkipExpression();
|
||||
Boolean parse = SpelUtil.parse(entity.getT().getJSONObject("t"),skipExpression, Boolean.class);
|
||||
if (parse){
|
||||
targetSequence.add(sequenceFlow);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(targetSequence)){
|
||||
throw new BadRequestException("当前网关没有满足的流程线");
|
||||
}
|
||||
gateWay.setOutgoingFlows(targetSequence);
|
||||
//处理流程线:将结果值封装
|
||||
super.execute(entity);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String data = "{\"stor_code\":\"FStockId\",\"vehicleMaterMap\":{\"D00001\":{\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-11 15:39:47\",\"task_code\":\"28457\",\"form_data\":{\"FMoBillNo\":\"\",\"single_weight\":\"\"},\"group_id\":\"1800432729389666304\",\"qty\":333,\"proc_inst_id\":\"1800433990847565824\",\"is_lock\":true,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800432729389666305\",\"has_child\":false,\"frozen_qty\":333,\"vehicle_code\":\"D00001\",\"source_form_id\":\"1798554623695523840\",\"source_form_type\":\"PRD_FeedMtrl\",\"create_name\":\"管理员\"},\"D00002\":{\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-11 15:41:39\",\"task_code\":\"28458\",\"form_data\":{\"FMoBillNo\":\"\",\"single_weight\":\"\"},\"group_id\":\"1800433197683707904\",\"qty\":222,\"proc_inst_id\":\"1800435270215143424\",\"is_lock\":true,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800433197683707905\",\"has_child\":false,\"frozen_qty\":67,\"vehicle_code\":\"D00002\",\"source_form_id\":\"1798554665118470144\",\"source_form_type\":\"PRD_FeedMtrl\",\"create_name\":\"管理员\"}},\"form_data\":{\"order\":\"\"},\"qty\":400,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1800435564550426624\",\"inv_id\":\"1800435564521066496\",\"vehicle_code\":\"D00002\",\"source_form_id\":\"1798554623695523840\",\"unit_id\":\"16\",\"source_form_type\":\"PRD_FeedMtrl\",\"status\":\"10\"}";
|
||||
JSONObject jsonObject = JSONObject.parseObject(data);
|
||||
System.out.println(jsonObject.toJSONString());
|
||||
// "#M['vehicleMaterMap'][M['vehicle_code']]['qty']"
|
||||
Boolean parse = SpelUtil.parse(jsonObject, "#M['vehicleMaterMap'][#M['vehicle_code']]['frozen_qty'] < #M['vehicleMaterMap'][#M['vehicle_code']]['qty']", Boolean.class);
|
||||
System.out.println(parse);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,6 +86,7 @@ public class StrucFormActivityBehavior extends FlowNodeActivityBehavior<JSONObje
|
||||
mst_json.put("create_name",SecurityUtils.getCurrentNickName());
|
||||
mst_json.put("status",StatusEnum.FORM_STATUS.code("生成"));
|
||||
mst_json.put("code",CodeUtil.getNewCode(currentNode.getForm_type()));
|
||||
mst_json.put("proc_inst_id",entity.getProc_inst_id());
|
||||
PmFormData mst = mst_json.toJavaObject(PmFormData.class);
|
||||
handler.put("form_id",mst.getId());
|
||||
JSONArray itemArr = handler.getJSONArray("item");
|
||||
|
||||
@@ -31,7 +31,7 @@ public class SequenceFlowOperation extends AbstractOperation {
|
||||
if (!CollectionUtils.isEmpty(outgoingFlows)){
|
||||
for (SequenceFlow sequenceFlow : outgoingFlows) {
|
||||
String skipExpression = sequenceFlow.getSkipExpression();
|
||||
//TODO:流程线的脚本判断获取当下一个节点:当前节点或者下个节点
|
||||
//TODO:流程线的脚本判断获取当下一个节点:当前节点或者下个节点:这一步统一在网关中处理!!!
|
||||
execution.setCurrentFlowElement(sequenceFlow.getTargetFlowElement());
|
||||
}
|
||||
CommandExecutor.getAgenda().planOperation(new ContinuOperation(execution));
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
|
||||
import org.nl.wms.stor_manage.io.service.iostor.dao.mapper.StIvtIostorinvOutMapper;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -227,12 +228,12 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
||||
public void taskOpen(JSONObject form) {
|
||||
|
||||
StIvtIostorinv iostorinv = form.toJavaObject(StIvtIostorinv.class);
|
||||
//查询明细
|
||||
List<StIvtIostorinvdtl> dtls = iStIvtIostorinvDtlService.list(new QueryWrapper<StIvtIostorinvdtl>().eq("inv_id", iostorinv.getId()));
|
||||
|
||||
//查询明细/api/bmFormStruc/getTypes
|
||||
List<StIvtIostorinvdtlVo> dtlVo = iStIvtIostorinvDtlService.getDtlVo(iostorinv.getId());
|
||||
//扔一个物料信息进去
|
||||
BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_"+(iostorinv.getIn_storage()?"in":"out"), null,null)
|
||||
.build("st_ivt_iostorinv",iostorinv.getId(),iostorinv.getSource_form_type(),iostorinv.getSource_form_id(),form)
|
||||
.build("st_ivt_iostorinvdtl",dtls)
|
||||
.build("st_ivt_iostorinvdtl",dtlVo)
|
||||
);
|
||||
|
||||
this.update(new UpdateWrapper<StIvtIostorinv>()
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.stor_manage.io.service.iostor_dtl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -18,7 +19,8 @@ public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
|
||||
|
||||
void batchInsert(List<StIvtIostorinvdtl> dtls);
|
||||
|
||||
|
||||
List<Map> getByInv(String inv_id);
|
||||
|
||||
List<StIvtIostorinvdtlVo> getDtlVo(String inv_id);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
package org.nl.wms.stor_manage.io.service.iostor_dtl.dto;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库单明拆分
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2024-03-29
|
||||
*/
|
||||
@Data
|
||||
public class StIvtIostorinvdtlVo {
|
||||
|
||||
/**
|
||||
* 出入单明细标识
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 出入单标识
|
||||
*/
|
||||
private String inv_id;
|
||||
|
||||
/**
|
||||
* 源单号
|
||||
*/
|
||||
private String source_form_id;
|
||||
|
||||
/**
|
||||
* 源单单据类型
|
||||
*/
|
||||
private String source_form_type;
|
||||
/**
|
||||
* 单据明细状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 批次
|
||||
*/
|
||||
private String pcsn;
|
||||
|
||||
|
||||
/**
|
||||
* 数量计量单位标识
|
||||
*/
|
||||
private String unit_id;
|
||||
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private BigDecimal qty;
|
||||
|
||||
/**
|
||||
* 分配的载具
|
||||
*/
|
||||
private String vehicle_code;
|
||||
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String stor_code;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
private String update_time;
|
||||
|
||||
/**
|
||||
* 表单数据
|
||||
*/
|
||||
private JSONObject form_data = new JSONObject();
|
||||
|
||||
/**
|
||||
* 载具物料信息
|
||||
*/
|
||||
private MdPbVehicleMater vehicleMater;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,20 +1,23 @@
|
||||
package org.nl.wms.stor_manage.io.service.iostor_dtl.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.mapper.StIvtIostorinvdtlMapper;
|
||||
import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -31,6 +34,10 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
|
||||
@Autowired
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
|
||||
@Override
|
||||
public void batchInsert(List<StIvtIostorinvdtl> dtls) {
|
||||
this.baseMapper.batchInsert(dtls);
|
||||
@@ -58,4 +65,25 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
|
||||
return byInv;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StIvtIostorinvdtlVo> getDtlVo(String inv_id) {
|
||||
List<StIvtIostorinvdtlVo> list = new ArrayList<>();
|
||||
if (StringUtils.isEmpty(inv_id)){
|
||||
return list;
|
||||
}
|
||||
List<StIvtIostorinvdtl> dtl = this.list(new QueryWrapper<StIvtIostorinvdtl>().eq("inv_id", inv_id));
|
||||
for (StIvtIostorinvdtl iostorinvdtl : dtl) {
|
||||
for (String vehicle_code : iostorinvdtl.getVehicle_code().split(",")) {
|
||||
StIvtIostorinvdtlVo vo = new StIvtIostorinvdtlVo();
|
||||
BeanUtils.copyProperties(iostorinvdtl,vo);
|
||||
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("vehicle_code", vehicle_code)
|
||||
.eq("material_id", iostorinvdtl.getMaterial_id()));
|
||||
vo.setVehicleMater(one);
|
||||
vo.setVehicle_code(vehicle_code);
|
||||
list.add(vo);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,8 +130,8 @@ public class SysDictController {
|
||||
for (StatusEnum value : StatusEnum.values()) {
|
||||
if (value.name().equals(type)){
|
||||
ForkMap<String, String, String> forkMap = value.getCode();
|
||||
for (String label : forkMap.getKeySet()) {
|
||||
items.add(MapOf.of("label",label,"value",forkMap.getM(label)));
|
||||
for (String code : forkMap.getKeySet()) {
|
||||
items.add(MapOf.of("label",forkMap.getM(code),"value",code));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
<el-table-column prop="pcsn" label="批次" align="center" width="150" />
|
||||
<el-table-column show-overflow-tooltip prop="vehicle_code" label="载具编码" align="center" />
|
||||
<el-table-column prop="qty" :formatter="crud.formatNum3" label="数量" align="center" />
|
||||
<el-table-column prop="frozen_qty" :formatter="crud.formatNum3" label="分配数量" align="center" />
|
||||
<el-table-column prop="point_code1" label="起始位置" align="center" width="120"/>
|
||||
<el-table-column prop="point_code2" label="目的位置" align="center" width="120"/>
|
||||
<el-table-column prop="task_code" label="任务号" align="center" />
|
||||
|
||||
@@ -92,7 +92,6 @@
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
|
||||
<el-table-column prop="pcsn" label="批次" width="150" align="center" />
|
||||
<el-table-column prop="qty" :formatter="crud.formatNum3" label="计划数量" align="center" />
|
||||
<el-table-column prop="qty" :formatter="crud.formatNum3" width="150" label="载具物料数量" align="center" />
|
||||
<el-table-column prop="unit_id" label="单位" align="center" />
|
||||
<el-table-column prop="vehicle_code" label="载具" align="center" />
|
||||
<el-table-column prop="stor_code" label="仓库编号" align="center" />
|
||||
@@ -125,7 +124,8 @@
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
|
||||
<el-table-column prop="pcsn" label="批次" align="center" width="150" />
|
||||
<el-table-column prop="qty" :formatter="crud.formatNum3" label="数量" align="center" />
|
||||
<el-table-column prop="qty" :formatter="crud.formatNum3" label="总数量" align="center" />
|
||||
<el-table-column prop="frozen_qty" :formatter="crud.formatNum3" label="分配数量" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="stor_code" label="仓库" align="center" />
|
||||
<el-table-column min-width="120" show-overflow-tooltip prop="struct_code" label="载具所在仓位" align="center" />
|
||||
<el-table-column prop="point_code1" label="任务起始位置" align="center" width="120"/>
|
||||
|
||||
Reference in New Issue
Block a user