rev:流程任务生成

This commit is contained in:
zhangzq
2024-05-23 16:06:25 +08:00
parent b3fee56bb9
commit 8f56f4e988
87 changed files with 1018 additions and 540 deletions

View File

@@ -9,7 +9,6 @@ import lombok.Data;
import org.nl.common.enums.QueryTEnum;
import org.nl.common.utils.MapOf;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

View File

@@ -16,10 +16,29 @@ import java.util.Map;
@AllArgsConstructor
public enum StatusEnum {
//单据状态库类型
/**
* 流程相关
*/
MODEL_STATUS(MapOf.of("发布", "10", "未发布", "30")),
FORM_STATUS(MapOf.of("生成", "10", "执行中", "20","完成", "99")),
FLOW_STATUS(MapOf.of("启动", "10", "节点完成", "20","暂停", "30","完成", "99")),
FLOW_STATUS(MapOf.of("启动", "10", "节点完成", "20","暂停", "30","完成", "90")),
/**
* 单据状态
*/
FORM_STATUS(MapOf.of("生成", "10", "执行中", "20","完成", "90","取消", "100")),
/**
* 出入库单据类型
*/
IOBILL_TYPE(MapOf.of("生产入库", "10", "生产出库", "20")),
/**
* 任务类型
*/
TASK_TYPE_IN(MapOf.of("组盘入库","10")),
TASK_TYPE_OUT(MapOf.of("销售出","20")),
/**
* 点位锁类型
*/
LOCK(MapOf.of("","00","","10","","20")),
;
private Map<String, String> code;
@@ -32,12 +51,12 @@ public enum StatusEnum {
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
}
public String check(String code) {
public Boolean check(String code) {
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
if (entry.getValue().equals("code")) {
return entry.getValue();
if (entry.getValue().equals(code)) {
return true;
}
}
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
return false;
}
}

View File

@@ -1,29 +0,0 @@
package org.nl.wms.base_manage.struct.service.impl;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.base_manage.struct.service.dao.mapper.StIvtStructattrMapper;
import org.nl.wms.base_manage.struct.service.IStIvtStructattrService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.base_manage.struct.service.dto.StructattrQuery;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* <p>
* 仓位属性表 服务实现类
* </p>
*
* @author generator
* @since 2024-04-08
*/
@Service
public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMapper, StIvtStructattr> implements IStIvtStructattrService {
@Override
public List<Map<String, Object>> getByQuery(StructattrQuery query) {
List<Map<String, Object>> maps = this.listMaps(query.build());
return maps;
}
}

View File

@@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.base_manage.vehicle.vehicleInfo.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.vehicleInfo.service.dto.VehicleQuery;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dto.VehicleMaterQuery;

View File

@@ -71,6 +71,14 @@ public class MdPbVehicleMater implements Serializable {
* 是否含子容器
*/
private Boolean has_child;
/**
* 源单类型
*/
private String source_form_type;
/**
* 源单id
*/
private String source_form_id;
/**
* 扩展信息

View File

@@ -42,6 +42,7 @@ public class BmFormStrucController {
,"biz_code","业务单据编号"
,"biz_date","业务单据日期"
,"biz_status","业务单据状态"
,"biz_form_type","业务单据类型"
,"material_id","物料id"
,"qty","数量"
,"unit_id","单位"

View File

@@ -82,6 +82,10 @@ public class BmFormStruc implements Serializable {
* 业务单据状态
*/
private String biz_status;
/**
* 业务单据类型
*/
private String biz_form_type;
/**
* 物料id

View File

@@ -78,6 +78,10 @@ public class BmFormStrucDto implements Serializable {
* 业务单据状态
*/
private String biz_status;
/**
* 业务单据状态
*/
private String biz_form_type;
/**
* 物料id

View File

@@ -1,21 +1,16 @@
package org.nl.wms.decision_manage.handler.impl.base;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.base_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.base_manage.struct.service.dto.StructattrQuery;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -33,7 +28,7 @@ public class AlleyAveRuleHandler extends Decisioner<StIvtStructattr, PmFormData>
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;

View File

@@ -4,14 +4,13 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.ListOf;
import org.nl.wms.base_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -34,7 +33,7 @@ public class ClusterRuleHandler extends Decisioner<StIvtStructattr,String> {
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**

View File

@@ -1,21 +1,16 @@
package org.nl.wms.decision_manage.handler.impl.base;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/*
* @author ZZQ
@@ -29,7 +24,7 @@ public class FIFORuleHandler extends Decisioner<StIvtStructattr,String> {
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**
* 载具扩展属性服务服务

View File

@@ -2,12 +2,12 @@ package org.nl.wms.decision_manage.handler.impl.base;
import com.alibaba.fastjson.JSONArray;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.base_manage.vehicle.vehicleInfo.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.vehicleInfo.service.dao.BmVehicleInfo;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,13 +21,13 @@ import java.util.stream.Collectors;
* 货位限位策略:限高,限宽,限长,限重
*/
@Service("limitStorage")
public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,StIvtIostorinvdtlIn> {
public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr, StIvtIostorinvdtl> {
/**
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**
* 载具扩展属性服务服务
@@ -46,7 +46,7 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr,StIvtIos
* @return List<StIvtStructattr> :仓位集合
*/
@Override
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtlIn param) {
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtl param) {
// 判断仓位是否为空
// 判断策略类型
String vehicleCode = param.getVehicle_code();

View File

@@ -1,26 +1,18 @@
package org.nl.wms.decision_manage.handler.impl.base;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.decision_manage.service.IStStrategyConfigService;
import org.nl.wms.decision_manage.service.dao.StStrategyConfig;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
/*
* @author ZZQ
@@ -28,14 +20,14 @@ import java.util.stream.Collectors;
* 就近放置策略根据物料ABC类区分
*/
@Service("nearby")
public class NearbyRuleHandler extends Decisioner<StIvtStructattr,StIvtIostorinvdtlIn> {
public class NearbyRuleHandler extends Decisioner<StIvtStructattr, StIvtIostorinvdtl> {
//每个策略的配置信息
private static StStrategyConfig stStrategyConfig;
/**
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**
* 载具扩展属性服务服务
@@ -53,7 +45,7 @@ public class NearbyRuleHandler extends Decisioner<StIvtStructattr,StIvtIostorinv
* @return List<StIvtStructattr> :仓位集合
*/
@Override
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtlIn param) {
public List<StIvtStructattr> handler(List<StIvtStructattr> list, StIvtIostorinvdtl param) {
// 判断仓位是否为空
if (ObjectUtil.isEmpty(list)) {
throw new BadRequestException("仓位集合为空!");

View File

@@ -3,14 +3,12 @@ package org.nl.wms.decision_manage.handler.impl.base;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.decision_manage.service.dao.StStrategyConfig;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -27,7 +25,7 @@ public class WeightRuleHandler extends Decisioner<StIvtStructattr,String> {
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**

View File

@@ -0,0 +1,31 @@
package org.nl.wms.dispatch_manage.task.handler;
import lombok.Builder;
import lombok.Data;
import org.nl.common.publish.event.PublishEvent;
/*
* @author ZZQ
* @Date 2024/5/23 13:15
*/
@Data
@Builder
public class StructEvent extends PublishEvent {
/**
* @see org.nl.common.enums.StatusEnum.TASK_TYPE_IN
*/
private String task_type;
private String vehicle_code;
private String task_status;
private String struct_code;
private String source_form_id;
private String source_form_type;
}

View File

@@ -1,13 +1,9 @@
package org.nl.wms.dispatch_manage.task.handler.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.dispatch_manage.task.handler.TaskHandler;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.springframework.stereotype.Service;
import java.util.List;
/*
* @author ZZQ
* @Date 2024/5/6 14:34
@@ -16,7 +12,7 @@ import java.util.List;
public class AgvTaskHandler implements TaskHandler {
@Override
public JSONObject process(JSONObject from, String type) {
public JSONObject process(JSONObject from, JSONObject param) {
return null;
}
}

View File

@@ -1,21 +1,30 @@
package org.nl.wms.dispatch_manage.task.handler.impl;
import com.alibaba.fastjson.JSONArray;
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 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.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.dispatch_manage.task.handler.TaskHandler;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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 StackingTaskHandler implements TaskHandler {
@@ -23,20 +32,41 @@ public class StackingTaskHandler implements TaskHandler {
@Autowired
ISchBaseTaskService taskService;
@Autowired
IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Override
public JSONObject process(JSONObject from, String type) {
public JSONObject process(JSONObject from, JSONObject param) {
String vehicle_code = from.getString("vehicle_code");
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)
.ne("task_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.setTask_status(StatusEnum.FORM_STATUS.code("生成"));
task.setHandle_class(this.getClass().getName());
task.setAcs_type("");
task.setTask_type(type);
task.setVehicle_code(from.getString("vehicle_code"));
task.setPoint_code1(from.getString("start_point"));
task.setPoint_code2(from.getString("struct_code"));
task.setCreate_time(DateUtil.now());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setTask_type(param.getString("task_type"));
task.setVehicle_code(vehicle_code);
task.setPoint_code1(start_point);
task.setPoint_code2(struct_code);
taskService.createTask(task);
from.put("task_code",task.getTask_code());
return from;
Boolean isSend = param.getBoolean("is_send");
if (isSend){
//参数封装调acs接口
}
return (JSONObject)JSON.toJSON(task);
}
}

View File

@@ -0,0 +1,62 @@
package org.nl.wms.dispatch_manage.task.handler.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.handler.TaskHandler;
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.event.FlowStartEvent;
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.function.Consumer;
/*
* @author ZZQ
* @Date 2024/5/6 14:34
*/
@Service
public class TaskStatusHandler implements TaskHandler {
@Autowired
private ISchBaseTaskService schBaseTaskService;
@Autowired
private IMdPbVehicleMaterService vehicleMaterService;
@Override
public JSONObject process(JSONObject from, JSONObject param) {
//暂时出入入库的问题
from.put("task_status",param.getString("task_status"));
from.put("update_time","DateUtil.now()");
from.put("update_name",SecurityUtils.getCurrentNickName());
SchBaseTask schBaseTask = from.toJavaObject(SchBaseTask.class);
schBaseTaskService.updateById(schBaseTask);
StatusEnum.FORM_STATUS.code("生成");
StatusEnum.FORM_STATUS.code("执行中");
StatusEnum.FORM_STATUS.code("完成");
StatusEnum.FORM_STATUS.code("取消");
//TODO:后续在流程节点中配置监听时间触发
List<MdPbVehicleMater> vehicleMaters = vehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", schBaseTask.getVehicle_code()));
MdPbVehicleMater vehicleMater = vehicleMaters.get(0);
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.task_status(schBaseTask.getTask_status())
.source_form_id(vehicleMater.getSource_form_id())
.source_form_type(vehicleMater.getSource_form_type())
.vehicle_code(schBaseTask.getVehicle_code()).struct_code(schBaseTask.getPoint_code2())
.build());
return from;
}
}

View File

@@ -109,6 +109,10 @@ public class SchBaseTask implements Serializable {
* 创建时间
*/
private String create_time;
/**
* 创建人
*/
private String create_name;
/**
* 修改人

View File

@@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
import org.nl.wms.flow_manage.flow.framework.engine.operation.impl.SequenceFlowOperation;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity;
@@ -18,8 +19,11 @@ import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
import org.nl.wms.flow_manage.flow.service.history.IActHiExecutionService;
import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.lang.annotation.Inherited;
/*
* @author ZZQ
* @Date 2024/3/18 11:08
@@ -36,6 +40,8 @@ public abstract class FlowNodeActivityBehavior<T> {
public IActHiExecutionService history;
public final void activity(ExecutionEntity<T> entity) {
IActRuExecutionService iActRuExecutionService = SpringContextHolder.getBean(IActRuExecutionService.class);
try {
//当前节点
log.info("流程:{},开始流程数据:{}", entity.getActivityName(),JSONObject.toJSONString(entity.getT()));
@@ -71,8 +77,10 @@ public abstract class FlowNodeActivityBehavior<T> {
.set("remark","节点:"+entity.getActivityName()+":异常:"+ex.getMessage()));
}
}
private final void leaveActivity(ExecutionEntity<T> entity) {
//TODO:存储流程处理历史数据;判断是否自动执行下一个流程
IActHiExecutionService history = SpringContextHolder.getBean(IActHiExecutionService.class);
ActHiExecution historyEntity = new ActHiExecution();
historyEntity.setProc_inst_id(entity.getProc_inst_id());
historyEntity.setParent_id(entity.getParent_id());

View File

@@ -1,7 +1,6 @@
package org.nl.wms.flow_manage.flow.framework.engine.behavior.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -9,7 +8,6 @@ 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.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
@@ -19,20 +17,13 @@ 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.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
import org.nl.wms.stor_manage.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.service.iostor_dis.IStIvtIostorinvdisService;
import org.nl.wms.stor_manage.service.iostor_dis.dao.StIvtIostorinvdis;
import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/*
* @author ZZQ
* @Date 2024/3/18 13:17
@@ -47,7 +38,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
@Autowired
IBmFormStrucService iBmFormStrucService;
@Autowired
IStIvtIostorinvdtlInService iostorinvdtlService;
IStIvtIostorinvdtlService iostorinvdtlService;
@Autowired
IStIvtIostorinvInService iostorinvService;
//分配明细用公用表
@@ -84,22 +75,25 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
JSONObject mst_json = handler.getJSONObject("t");
mst_json.put("id",IdUtil.getStringId());
mst_json.put("create_time",DateUtil.now());
mst_json.put("create_id",SecurityUtils.getCurrentUserId());
mst_json.put("create_name",SecurityUtils.getCurrentNickName());
mst_json.put("status",StatusEnum.FORM_STATUS.code("生成"));
mst_json.put("bill_type",StatusEnum.IOBILL_TYPE.code("生产入库"));
mst_json.put("code",CodeUtil.getNewCode("IO_CODE"));
mst_json.put("source_form_type",handler.getString("source_form_type"));
StIvtIostorinvIn mst = mst_json.toJavaObject(StIvtIostorinvIn.class);
handler.put("form_id",mst.getId());
Object item = mst_json.remove("item");
if(item !=null){
JSONArray itemArr = (JSONArray) item;
JSONArray itemArr = handler.getJSONArray("item");
if(itemArr !=null){
for (int i = 0; i < itemArr.size(); i++) {
JSONObject dtl = itemArr.getJSONObject(i);
JSONObject dtl_json = dtl.getJSONObject("t");
dtl_json.put("inv_id",mst.getId());
mst_json.put("update_time",DateUtil.now());
dtl_json.put("status",StatusEnum.FORM_STATUS.code("生成"));
dtl_json.put("id",IdUtil.getStringId());
StIvtIostorinvdtlIn iostorinvdtl= dtl_json.toJavaObject(StIvtIostorinvdtlIn.class);
dtl_json.put("source_form_type",dtl.getString("source_form_type"));//不是通用表单
StIvtIostorinvdtl iostorinvdtl= dtl_json.toJavaObject(StIvtIostorinvdtl.class);
iostorinvdtlService.save(iostorinvdtl);
dtl.put("form_id",iostorinvdtl.getId());
}

View File

@@ -4,13 +4,17 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBehavior;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
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.ServerTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
/*
@@ -19,18 +23,21 @@ import org.springframework.util.CollectionUtils;
*/
@Service("serverTask")
public class ServerTaskActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
@Override
@Transactional
public void execute(ExecutionEntity<JSONObject> entity) {
String form_id = entity.getForm_id();
String form_type = entity.getForm_type();
FlowElement element = entity.getCurrentFlowElement();
ServerTask currentNode = (ServerTask) element;
if (!CollectionUtils.isEmpty(currentNode.getSkipExpression())) {
TypeHandler<JSONObject,JSONObject> typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory());
TypeHandler<JSONObject,ExecutionEntity> typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory());
if (typeHandler == null) {
throw new BadRequestException("【flow】当前节点处理类型未定义");
}
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), null);
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity, null);
entity.setT(handler);
entity.setForm_id(form_id);
entity.setForm_type(form_type);

View File

@@ -14,15 +14,10 @@ import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
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.task.impl.Form;
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.StrucForm;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@@ -29,12 +29,13 @@ public class ExecutionDto {
*/
private String form_type;
/**
* 源单id
* 原始源单id a-b-c-d =>a.id
*/
private String source_form_id;
/**
* 源单类型
* 原始源单类型: a-b-c-d =>a.form_type
*/
private String source_form_type;
/**
* 主数据

View File

@@ -1,14 +1,13 @@
package org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
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.base.impl.FlowNode;
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.ServerTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
import org.springframework.stereotype.Service;
@@ -20,22 +19,27 @@ import java.util.List;
* @Date 2024/3/21 15:17
*/
@Service("class")
public class ClassHandler extends TypeHandler<ExecutionDto, ExecutionEntity<JSONObject>> {
public class ClassHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONObject>> {
//{"t","souce",form}
@Override
public ExecutionDto handler(List<String> param, ExecutionEntity<JSONObject> entity, BmFormStruc form_struc) {
public JSONObject handler(List<String> params, ExecutionEntity<JSONObject> entity, BmFormStruc isnull) {
JSONObject result = new JSONObject();
FlowNode currentFlowElement = (FlowNode)entity.getCurrentFlowElement();
ClassProcess process = SpringContextHolder.getBean(param.get(0));
if (currentFlowElement.getAuxParam()!=null){
entity.getT().putAll(currentFlowElement.getAuxParam());
ExecutionDto dto = entity.getT().toJavaObject(ExecutionDto.class);
ServerTask flowNode = (ServerTask) entity.getCurrentFlowElement();
ClassProcess process = SpringContextHolder.getBean(params.get(0));
if (process==null){
throw new BadRequestException("当前serverTask配置的类信息不存在");
}
JSONObject result = process.process(entity.getT(), entity.getForm_type());
entity.setT(result);
return ExecutionDto.builder()
.form_id(result.getString("id"))
.t(result)
.build();
JSONObject form = process.process(dto.getT(), flowNode.getAuxParam());
result.put("t",form);
//后续:涉及框架的参数提到框架中处理
result.put("source_form_id",dto.getForm_id());
result.put("source_form_type",dto.getForm_type());
result.put("form_id",form.getString("id"));
result.put("form_type",flowNode.getForm_type());
return result;
}
}

View File

@@ -1,33 +1,26 @@
package org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.wms.base_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.common.utils.RedissonUtils;
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;
import org.nl.wms.decision_manage.handler.Decisioner;
import org.nl.wms.decision_manage.handler.impl.base.FIFORuleHandler;
import org.nl.wms.decision_manage.handler.impl.diy.ClassRuleHandler;
import org.nl.wms.decision_manage.service.IStStrategyConfigService;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/*
* @author ZZQ
@@ -35,13 +28,13 @@ import java.util.Map;
* @ONLY:该决策引擎只用于出入库规则
*/
@Service("decision")
public class DecisionHandler extends TypeHandler<ExecutionDto,ExecutionEntity<JSONObject>> {
public class DecisionHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONObject>> {
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Autowired
private IStIvtIostorinvdtlInService stIvtIostorinvdtlInService;
private IStIvtIostorinvdtlService stIvtIostorinvdtlInService;
@Autowired
private Map<String, Decisioner> decisionHandlerMap;
@@ -54,39 +47,44 @@ public class DecisionHandler extends TypeHandler<ExecutionDto,ExecutionEntity<JS
*/
@Override
public ExecutionDto handler(List<String> params, ExecutionEntity<JSONObject> entity, BmFormStruc form_struc) {
public JSONObject handler(List<String> params, ExecutionEntity<JSONObject> entity, BmFormStruc isnull) {
//出入库明细
JSONObject item_json = entity.getT();
StIvtIostorinvdtlIn iostorinvdtlIn = item_json.toJavaObject(StIvtIostorinvdtlIn.class);
List<StIvtStructattr> list = iStIvtStructattrService.list(new QueryWrapper<StIvtStructattr>()
.eq("vehicle_code", "")
.eq("is_used", true)
.eq("stor_code",iostorinvdtlIn.getStor_code()));
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前分配策略无可用货位");
}
for (String param : params) {
Decisioner decisioner = decisionHandlerMap.get(param);
list = decisioner.handler(list, iostorinvdtlIn);
JSONObject t = entity.getT();
JSONObject item_json = t.getJSONObject("t");
StIvtIostorinvdtl iostorinvdtlIn = item_json.toJavaObject(StIvtIostorinvdtl.class);
AtomicReference<String> atomicStruct= new AtomicReference<>();
RedissonUtils.lock(()->{
List<StIvtStructattr> list = iStIvtStructattrService.list(new QueryWrapper<StIvtStructattr>()
.eq("vehicle_code", "")
.eq("is_used", true)
.eq("stor_code",iostorinvdtlIn.getStor_code()));
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前分配策略无可用货位");
}
}
//跟新货位载具
System.out.println(list);
String struct_code = list.get(0).getStruct_code();
for (String param : params) {
Decisioner decisioner = decisionHandlerMap.get(param);
list = decisioner.handler(list, iostorinvdtlIn);
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前分配策略无可用货位");
}
}
System.out.println(list);
if (CollectionUtils.isEmpty(list)){
throw new BadRequestException("无可分配货位!");
}
String structCode = list.get(0).getStruct_code();
atomicStruct.set(structCode);
//更新仓位,更新数据
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code",iostorinvdtlIn.getVehicle_code())
.set("lock_type", StatusEnum.LOCK.code(""))
.eq("struct_code",struct_code));
stIvtIostorinvdtlInService.update(new UpdateWrapper<StIvtIostorinvdtlIn>()
.set("struct_code",struct_code)
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code",iostorinvdtlIn.getVehicle_code())
.set("lock_type", StatusEnum.LOCK.code(""))
.eq("struct_code",structCode));
},"",2);
stIvtIostorinvdtlInService.update(new UpdateWrapper<StIvtIostorinvdtl>()
.set("struct_code",atomicStruct.get())
.eq("id",iostorinvdtlIn.getId()));
item_json.put("struct_code",struct_code);
return ExecutionDto.builder()
.form_id(iostorinvdtlIn.getId())
.t(item_json)
.build();
item_json.put("struct_code",atomicStruct.get());
return t;
}
}

View File

@@ -30,6 +30,10 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
IBmFormStrucService iBmFormStrucService;
@Override
public JSONObject handler(List<String> param, JSONObject data, BmFormStruc form_struc) {
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");
@@ -38,35 +42,41 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
if (forms!=null){
sourceFormData.putAll(forms);
}
//数据字段列表
List<String> fields = ListOf.of(form_struc.getBiz_code()
, form_struc.getBiz_id()
, form_struc.getBiz_code()
, form_struc.getBiz_status()
, form_struc.getMaterial_id()
, form_struc.getPcsn()
, form_struc.getVehicle_code()
, form_struc.getQty());
//查询目标表字段
//数据字段列表+自定义的字段:不从配置表获取
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();
//查询目标表字段
//基础字段映射:如果只有一个就不迭代
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
for (String field : fields) {
if (field!=null){
String value = sourceFormData.getString(mapping.getString(field));
t.put(field,value);
}
for (String field : mapping.keySet()) {
String value = sourceFormData.getString(mapping.getString(field));
t.put(field,value);
}
//查询表单配置表获取自定义json:自定义字段参数获取
JSONObject form_param = form_struc.getForm_param();
if (form_param!=null){
JSONObject form_data = new JSONObject();
for (String item : form_param.keySet()) {
String mappingConfig = mapping.getString(item);
if (StringUtils.isNotEmpty(mappingConfig)){
String value = sourceFormData.getString(mappingConfig);
form_data.put(item,value);
String value = "";
if (formDataMapping!=null){
JSONObject formDataMappingJson = (JSONObject) formDataMapping;
String mappingConfig = formDataMappingJson.getString(item);
if (StringUtils.isNotEmpty(mappingConfig)){
value = sourceFormData.getString(mappingConfig);
}
}
form_data.put(item,value);
}
t.put("form_data",form_data);
}
@@ -81,9 +91,8 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
for (int i = 0; i < item.size(); i++) {
itemList.add(this.handler(param, item.getJSONObject(i), item_struc));
}
t.put("item",itemList);
resultT.put("item",itemList);
}
JSONObject resultT = new JSONObject();
resultT.put("form_type",form_struc.getForm_type());
resultT.put("form_id","");
resultT.put("source_form_type",souceFromType);

View File

@@ -7,6 +7,11 @@ import com.alibaba.fastjson.JSONObject;
* @Date 2024/5/11 10:31
*/
public interface ClassProcess {
JSONObject process(JSONObject from,String type);
/**
* 表单数据+扩展数据(节点配置信息)
* @param from
* @param param
* @return
*/
JSONObject process(JSONObject from,JSONObject param);
}

View File

@@ -6,6 +6,7 @@ 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.wms.flow_manage.flow.framework.BpmnModel;
import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter;
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
@@ -23,7 +24,10 @@ import org.nl.wms.flow_manage.flow.service.execution.dto.StartProcessInstanceVo;
import org.nl.wms.flow_manage.flow.service.model.IActDeModelService;
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.function.Consumer;
/*
@@ -90,6 +94,13 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
if (execution==null){
throw new BadRequestException("当前流程实例不存在或已经完结");
}
//判断子流程
List<ActRuExecution> childList = iActRuExecutionService.list(new QueryWrapper<ActRuExecution>()
.eq("parent_id", proc_inst_id)
.ne("status", StatusEnum.FLOW_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(childList)){
throw new BadRequestException("当前流程存在未完成的子流程");
}
ActReProcdef deployment = actReProcdefService.getOne(new LambdaUpdateWrapper<ActReProcdef>()
.eq(ActReProcdef::getDeployment_id, execution.getDeployment_id()));
if (deployment==null){

View File

@@ -70,9 +70,13 @@ public class MdGruopDick implements Serializable {
*/
private String update_time;
/**
* 修改时间
* 创建时间
*/
private String create_time;
/**
* 创建人
*/
private String create_name;
/**
* 自定义字段

View File

@@ -61,5 +61,9 @@ public class MdGruopDtl implements Serializable {
* 修改时间
*/
private String update_time;
/**
* 修改人
*/
private String update_name;
}

View File

@@ -76,8 +76,8 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
public void groupDick(JSONObject forms) {
List<JSONObject> tableData = (ArrayList)forms.remove("item");
String now = DateUtil.now();
forms.put("update_name",SecurityUtils.getCurrentNickName());
forms.put("update_time", now);
forms.put("create_name",SecurityUtils.getCurrentNickName());
forms.put("create_time", now);
forms.put("id",IdUtil.getStringId());
forms.put("id",IdUtil.getStringId());
forms.put("code", CodeUtil.getNewCode("md_group_dick"));

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.controller;
package org.nl.wms.stor_manage.io.controller;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@@ -1,22 +1,19 @@
package org.nl.wms.stor_manage.controller.in;
package org.nl.wms.stor_manage.io.controller.in;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.stor_manage.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
@@ -35,7 +32,7 @@ public class StIvtIostorinvInController {
@Autowired
IStIvtIostorinvInService iStIvtIostorinvInService;
@Autowired
IStIvtIostorinvdtlInService iStIvtIostorinvDtlInService;
IStIvtIostorinvdtlService iStIvtIostorinvDtlInService;
@GetMapping
@@ -52,13 +49,6 @@ public class StIvtIostorinvInController {
@PostMapping("getIosInvDtl")
public ResponseEntity<Object> getDtl(@RequestBody String inv_id) {
List<Map> mapList = iStIvtIostorinvDtlInService.getByInv(inv_id);
//行转列
mapList.forEach(a->{
Object form_data = a.get("form_data");
if (form_data!=null || form_data instanceof Map){
a.putAll((Map) form_data);
}
});
return new ResponseEntity<>(mapList,HttpStatus.OK);
}

View File

@@ -1,11 +1,8 @@
package org.nl.wms.stor_manage.service.dto;
package org.nl.wms.stor_manage.io.service.dto;
import lombok.Data;
import org.nl.common.domain.entity.BaseQuery;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
/*
* @author ZZQ
@@ -16,6 +13,7 @@ public class StorInvQuery extends BaseQuery<StIvtIostorinvIn>{
private String form_type;
private String code;
private String status;
private String bill_type;
private String product_code;
}

View File

@@ -1,7 +1,7 @@
package org.nl.wms.stor_manage.service.in.iostor;
package org.nl.wms.stor_manage.io.service.in.iostor;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import com.baomidou.mybatisplus.extension.service.IService;
/**

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.service.in.iostor.dao;
package org.nl.wms.stor_manage.io.service.in.iostor.dao;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
@@ -33,6 +33,10 @@ public class StIvtIostorinvIn implements Serializable {
* 单据编号
*/
private String code;
/**
* 业务类型
*/
private String bill_type;
/**
* 生产区域编码
@@ -46,16 +50,16 @@ public class StIvtIostorinvIn implements Serializable {
/**
* 源单业务日期
*/
private String biz_date;
private String source_form_date;
/**
* 源单号
*/
private String biz_code;
private String source_form_id;
/**
* 源单单据类型
*/
private String form_type;
private String source_form_type;
/**
@@ -66,7 +70,7 @@ public class StIvtIostorinvIn implements Serializable {
/**
* 制单人
*/
private String create_id;
private String create_name;
/**
* 制单时间
@@ -76,7 +80,7 @@ public class StIvtIostorinvIn implements Serializable {
/**
* 修改人
*/
private String update_id;
private String update_name;
/**
* 修改时间

View File

@@ -1,6 +1,6 @@
package org.nl.wms.stor_manage.service.in.iostor.dao.mapper;
package org.nl.wms.stor_manage.io.service.in.iostor.dao.mapper;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.service.in.iostor.dao.mapper.StIvtIostorinvMapper">
<mapper namespace="org.nl.wms.stor_manage.io.service.in.iostor.dao.mapper.StIvtIostorinvMapper">
</mapper>

View File

@@ -1,18 +1,17 @@
package org.nl.wms.stor_manage.service.in.iostor.impl;
package org.nl.wms.stor_manage.io.service.in.iostor.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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.stor_manage.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.service.in.iostor.dao.mapper.StIvtIostorinvMapper;
import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.mapper.StIvtIostorinvMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -32,7 +31,7 @@ import java.util.Map;
public class StIvtIostorinvInServiceImpl extends ServiceImpl<StIvtIostorinvMapper, StIvtIostorinvIn> implements IStIvtIostorinvInService {
@Autowired
private IStIvtIostorinvdtlInService iStIvtIostorinvdtlInService;
private IStIvtIostorinvdtlService iStIvtIostorinvdtlInService;
@Override
@Transactional
@@ -43,13 +42,13 @@ public class StIvtIostorinvInServiceImpl extends ServiceImpl<StIvtIostorinvMappe
List<Map> dtls = (List<Map>) form.remove("tableData");
StIvtIostorinvIn mst = form.toJavaObject(StIvtIostorinvIn.class);
mst.setId(IdUtil.getStringId());
mst.setCreate_id(SecurityUtils.getCurrentUserId());
mst.setCreate_name(SecurityUtils.getCurrentNickName());
mst.setCreate_time(DateUtil.now());
mst.setCode(CodeUtil.getNewCode("IO_CODE"));
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
if (dtls!=null && dtls.size()>0){
for (int i = 0; i < dtls.size(); i++) {
StIvtIostorinvdtlIn dtl = new JSONObject(dtls.get(i)).toJavaObject(StIvtIostorinvdtlIn.class);
StIvtIostorinvdtl dtl = new JSONObject(dtls.get(i)).toJavaObject(StIvtIostorinvdtl.class);
dtl.setId(IdUtil.getStringId());
dtl.setInv_id(mst.getId());
dtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
@@ -58,4 +57,5 @@ public class StIvtIostorinvInServiceImpl extends ServiceImpl<StIvtIostorinvMappe
}
this.save(mst);
}
}

View File

@@ -0,0 +1,22 @@
package org.nl.wms.stor_manage.io.service.in.iostor_dtl;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 服务类
* </p>
*
* @author generator
* @since 2024-03-29
*/
public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
void batchInsert(List<StIvtIostorinvdtl> dtls);
List<Map> getByInv(String inv_id);
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.service.in.iostor_dtl.dao;
package org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao;
import java.math.BigDecimal;
@@ -22,7 +22,7 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "st_ivt_iostorinvdtl_in",autoResultMap = true)
public class StIvtIostorinvdtlIn implements Serializable {
public class StIvtIostorinvdtl implements Serializable {
private static final long serialVersionUID = 1L;
@@ -36,6 +36,20 @@ public class StIvtIostorinvdtlIn implements Serializable {
*/
private String inv_id;
/**
* 源单号
*/
private String source_form_id;
/**
* 源单单据类型
*/
private String source_form_type;
/**
* 单据明细状态
*/
private String status;
/**
* 物料标识
*/
@@ -46,45 +60,31 @@ public class StIvtIostorinvdtlIn implements Serializable {
*/
private String pcsn;
/**
* 品质类型
*/
private String quality_scode;
/**
* 单据明细状态
*/
private String status;
/**
* 数量计量单位标识
*/
private String qty_unit_id;
private String unit_id;
/**
* 数量
* 计划数量
*/
private BigDecimal qty;
private BigDecimal plan_qty;
/**
* 分配数量
*/
private BigDecimal assign_qty;
/**
* 未分配数量
* 分配数量(计划数量-载具物料数量)
*/
private BigDecimal unassign_qty;
/**
* 备注
* 分配数量
*/
private String remark;
private BigDecimal assign_qty;
/**
* 货主
* 分配的载具
*/
private String shipper;
private String vehicle_code;
/**
* 仓库
@@ -94,21 +94,16 @@ public class StIvtIostorinvdtlIn implements Serializable {
* 仓位编码
*/
private String struct_code;
/**
* 分配的载具
*/
private String vehicle_code;
/**
* 载具任务
* 备注
*/
private String task_code;
private String remark;
/**
* 单重
* 操作时间
*/
private BigDecimal single_wt;
private String update_time;
@TableField(typeHandler = FastjsonTypeHandler.class)
private JSONObject form_data;

View File

@@ -0,0 +1,41 @@
package org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.mapper;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-03-29
*/
public interface StIvtIostorinvdtlMapper extends BaseMapper<StIvtIostorinvdtl> {
Integer batchInsert(List<StIvtIostorinvdtl> dtls);
@Select("SELECT\n" +
" sum(md_pb_vehicleMater.qty) as qty,\n" +
" st_ivt_iostorinvdtl_in.*,\n" +
" md_me_materialbase.material_code,\n" +
" md_me_materialbase.material_name,\n" +
" md_me_materialbase.material_spec\n" +
" FROM\n" +
" st_ivt_iostorinvdtl_in\n" +
" LEFT JOIN md_me_materialbase ON st_ivt_iostorinvdtl_in.material_id = md_me_materialbase.material_id\n" +
" LEFT JOIN md_pb_vehicleMater ON (st_ivt_iostorinvdtl_in.vehicle_code = md_pb_vehicleMater.vehicle_code\n" +
" and st_ivt_iostorinvdtl_in.material_id = md_pb_vehicleMater.material_id)\n" +
" where inv_id = #{inv_id} GROUP BY st_ivt_iostorinvdtl_in.id")
@Results({@Result(property = "form_data",column = "form_data",typeHandler = FastjsonTypeHandler.class)})
List<Map> findByInv(String inv_id);
List<Map> findByInv2(String inv_id);
}

View File

@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlInMapper">
<mapper namespace="org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlMapper">
<insert id="batchInsert">
insert into st_ivt_iostorinvdtl() values <foreach collection="dtls" open="(" close=")" item="item">
</foreach>
</insert>
<select id="findByInv" resultType="java.util.Map">
<select id="findByInv2" resultType="java.util.Map">
SELECT
sum(md_pb_vehicleMater.qty) as qty,
st_ivt_iostorinvdtl_in.*,
md_me_materialbase.material_code,
md_me_materialbase.material_name,
@@ -15,6 +16,8 @@
FROM
st_ivt_iostorinvdtl_in
LEFT JOIN md_me_materialbase ON st_ivt_iostorinvdtl_in.material_id = md_me_materialbase.material_id
where inv_id = #{inv_id}
LEFT JOIN md_pb_vehicleMater ON (st_ivt_iostorinvdtl_in.vehicle_code = md_pb_vehicleMater.vehicle_code
and st_ivt_iostorinvdtl_in.material_id = md_pb_vehicleMater.material_id)
where inv_id = #{inv_id} GROUP BY st_ivt_iostorinvdtl_in.id
</select>
</mapper>

View File

@@ -0,0 +1,39 @@
package org.nl.wms.stor_manage.io.service.in.iostor_dtl.impl;
import org.apache.commons.lang3.StringUtils;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 服务实现类
* </p>
*
* @author generator
* @since 2024-03-29
*/
@Service
public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlMapper, StIvtIostorinvdtl> implements IStIvtIostorinvdtlService {
@Override
public void batchInsert(List<StIvtIostorinvdtl> dtls) {
this.baseMapper.batchInsert(dtls);
}
@Override
public List<Map> getByInv(String inv_id) {
if (StringUtils.isEmpty(inv_id)){
return new ArrayList<>();
}
return this.baseMapper.findByInv(inv_id);
}
}

View File

@@ -1,7 +1,7 @@
package org.nl.wms.stor_manage.service.iostor_dis;
package org.nl.wms.stor_manage.io.service.iostor_dis;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.stor_manage.service.iostor_dis.dao.StIvtIostorinvdis;
import org.nl.wms.stor_manage.io.service.iostor_dis.dao.StIvtIostorinvdis;
/**
* <p>

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.service.iostor_dis.dao;
package org.nl.wms.stor_manage.io.service.iostor_dis.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;

View File

@@ -1,7 +1,7 @@
package org.nl.wms.stor_manage.service.iostor_dis.dao.mapper;
package org.nl.wms.stor_manage.io.service.iostor_dis.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.stor_manage.service.iostor_dis.dao.StIvtIostorinvdis;
import org.nl.wms.stor_manage.io.service.iostor_dis.dao.StIvtIostorinvdis;
/**
* <p>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.io.service.iostor_dis.dao.mapper.StIvtIostorinvdisMapper">
</mapper>

View File

@@ -1,9 +1,9 @@
package org.nl.wms.stor_manage.service.iostor_dis.impl;
package org.nl.wms.stor_manage.io.service.iostor_dis.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.service.iostor_dis.IStIvtIostorinvdisService;
import org.nl.wms.stor_manage.service.iostor_dis.dao.StIvtIostorinvdis;
import org.nl.wms.stor_manage.service.iostor_dis.dao.mapper.StIvtIostorinvdisMapper;
import org.nl.wms.stor_manage.io.service.iostor_dis.IStIvtIostorinvdisService;
import org.nl.wms.stor_manage.io.service.iostor_dis.dao.StIvtIostorinvdis;
import org.nl.wms.stor_manage.io.service.iostor_dis.dao.mapper.StIvtIostorinvdisMapper;
import org.springframework.stereotype.Service;
/**

View File

@@ -1,6 +1,6 @@
package org.nl.wms.stor_manage.service.out.iostor;
package org.nl.wms.stor_manage.io.service.out.iostor;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import com.baomidou.mybatisplus.extension.service.IService;
/**

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.service.out.iostor.dao;
package org.nl.wms.stor_manage.io.service.out.iostor.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;

View File

@@ -1,6 +1,6 @@
package org.nl.wms.stor_manage.service.out.iostor.dao.mapper;
package org.nl.wms.stor_manage.io.service.out.iostor.dao.mapper;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.service.iostor_dis.dao.mapper.StIvtIostorinvdisMapper">
<mapper namespace="org.nl.wms.stor_manage.io.service.in.iostor.dao.mapper.StIvtIostorinvMapper">
</mapper>

View File

@@ -1,9 +1,9 @@
package org.nl.wms.stor_manage.service.out.iostor.impl;
package org.nl.wms.stor_manage.io.service.out.iostor.impl;
import org.nl.wms.stor_manage.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.service.in.iostor.dao.mapper.StIvtIostorinvMapper;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
import org.nl.wms.stor_manage.io.service.in.iostor.dao.mapper.StIvtIostorinvMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.service.out.iostor.IStIvtIostorinvoutService;
import org.nl.wms.stor_manage.io.service.out.iostor.IStIvtIostorinvoutService;
import org.springframework.stereotype.Service;
/**

View File

@@ -1,6 +1,6 @@
package org.nl.wms.stor_manage.service.out.iostor_dtl;
package org.nl.wms.stor_manage.io.service.out.iostor_dtl;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -13,7 +13,7 @@ import java.util.List;
* @author generator
* @since 2024-03-29
*/
public interface IStIvtIostorinvdtlOutService extends IService<StIvtIostorinvdtlIn> {
public interface IStIvtIostorinvdtlOutService extends IService<StIvtIostorinvdtl> {
void batchInsert(List<StIvtIostorinvdtlIn> dtls);
void batchInsert(List<StIvtIostorinvdtl> dtls);
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.stor_manage.service.out.iostor_dtl.dao;
package org.nl.wms.stor_manage.io.service.out.iostor_dtl.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;

View File

@@ -1,6 +1,6 @@
package org.nl.wms.stor_manage.service.out.iostor_dtl.dao.mapper;
package org.nl.wms.stor_manage.io.service.out.iostor_dtl.dao.mapper;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
@@ -13,8 +13,8 @@ import java.util.List;
* @author generator
* @since 2024-03-29
*/
public interface StIvtIostorinvdtlOutMapper extends BaseMapper<StIvtIostorinvdtlIn> {
public interface StIvtIostorinvdtlOutMapper extends BaseMapper<StIvtIostorinvdtl> {
Integer batchInsert(List<StIvtIostorinvdtlIn> dtls);
Integer batchInsert(List<StIvtIostorinvdtl> dtls);
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlOutMapper">
<mapper namespace="org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlOutMapper">
</mapper>

View File

@@ -0,0 +1,28 @@
package org.nl.wms.stor_manage.io.service.out.iostor_dtl.impl;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.io.service.out.iostor_dtl.IStIvtIostorinvdtlOutService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 出入库单明细表 服务实现类
* </p>
*
* @author generator
* @since 2024-03-29
*/
@Service
public class StIvtIostorinvdtlOutServiceImpl extends ServiceImpl<StIvtIostorinvdtlMapper, StIvtIostorinvdtl> implements IStIvtIostorinvdtlOutService {
@Override
public void batchInsert(List<StIvtIostorinvdtl> dtls) {
this.baseMapper.batchInsert(dtls);
}
}

View File

@@ -0,0 +1,51 @@
package org.nl.wms.stor_manage.monitor.listener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.AbstraceListener;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/*
* @author ZZQ
* @Date 2024/5/17 15:27
*/
@Component
@Slf4j
public class StructEventListener extends AbstraceListener<StructEvent> {
@Autowired
private IStIvtStructattrService structattrService;
@Autowired
private IStIvtIostorinvdtlService iostorinvdtlService;
@Override
protected String doEvent(StructEvent event) {
//根据不同的task_type获取对应出入库类型
String task_status = event.getTask_status();
String task_type = event.getTask_type();
if (task_status.equals(StatusEnum.FORM_STATUS.code("生成"))){
}
if (task_status.equals(StatusEnum.FORM_STATUS.code("执行中"))){
}
if (task_status.equals(StatusEnum.FORM_STATUS.code("完成"))){
//更新出入库单明细状态如果单据类型是其他的则从from-data表中更新
structattrService.changeStruct(event.getStruct_code(),event.getVehicle_code(),task_type);
}
if (task_status.equals(StatusEnum.FORM_STATUS.code("取消"))){
}
iostorinvdtlService.update(new UpdateWrapper<StIvtIostorinvdtl>()
.set("status",task_status).eq("id",event.getSource_form_id()));
return null;
}
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.stor_manage.record.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 仓位库存变动记录表 前端控制器
* </p>
*
* @author generator
* @since 2024-05-23
*/
@RestController
@RequestMapping("/stIvtStructivtflow")
public class StIvtStructivtflowController {
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.stor_manage.record.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
/**
* <p>
* 仓位库存变动记录表 服务类
* </p>
*
* @author generator
* @since 2024-05-23
*/
public interface IStIvtStructivtflowService extends IService<StIvtStructivtflow> {
}

View File

@@ -0,0 +1,97 @@
package org.nl.wms.stor_manage.record.service.dao;
import java.math.BigDecimal;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 仓位库存变动记录表
* </p>
*
* @author generator
* @since 2024-05-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "st_ivt_structivtflow", autoResultMap = true)
public class StIvtStructivtflow implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 记录标识
*/
@TableId
private String id;
/**
* 仓位编码
*/
private String struct_code;
/**
* 物料标识
*/
private String material_id;
/**
* 批次
*/
private String pcsn;
/**
* 总库存
*/
private BigDecimal qty;
/**
* 冻结库存
*/
private BigDecimal frozen_qty;
/**
* 载具物料参数
*/
@TableField(typeHandler = FastjsonTypeHandler.class)
private JSONObject vehicle_form_data;
/**
* 单据编号
*/
private String source_form_type;
/**
* 单据表名
*/
private String source_form_id;
/**
* 变动类型
*/
private String task_type;
/**
* 数量计量单位标识
*/
private String unit_id;
/**
* 变动时间
*/
private String update_time;
/**
* 库存增加
*/
private Boolean growth;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.stor_manage.record.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
/**
* <p>
* 仓位库存变动记录表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-05-23
*/
public interface StIvtStructivtflowMapper extends BaseMapper<StIvtStructivtflow> {
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.service.in.iostor.dao.mapper.StIvtIostorinvMapper">
<mapper namespace="org.nl.stor_manage.record.service.dao.mapper.StIvtStructivtflowMapper">
</mapper>

View File

@@ -0,0 +1,21 @@
package org.nl.wms.stor_manage.record.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.record.service.IStIvtStructivtflowService;
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
import org.nl.wms.stor_manage.record.service.dao.mapper.StIvtStructivtflowMapper;
import org.springframework.stereotype.Service;
/**
* <p>
* 仓位库存变动记录表 服务实现类
* </p>
*
* @author generator
* @since 2024-05-23
*/
@Service
public class StIvtStructivtflowServiceImpl extends ServiceImpl<StIvtStructivtflowMapper, StIvtStructivtflow> implements IStIvtStructivtflowService {
}

View File

@@ -1,22 +0,0 @@
package org.nl.wms.stor_manage.service.in.iostor_dtl;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 服务类
* </p>
*
* @author generator
* @since 2024-03-29
*/
public interface IStIvtIostorinvdtlInService extends IService<StIvtIostorinvdtlIn> {
void batchInsert(List<StIvtIostorinvdtlIn> dtls);
List<Map> getByInv(String inv_id);
}

View File

@@ -1,23 +0,0 @@
package org.nl.wms.stor_manage.service.in.iostor_dtl.dao.mapper;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-03-29
*/
public interface StIvtIostorinvdtlInMapper extends BaseMapper<StIvtIostorinvdtlIn> {
Integer batchInsert(List<StIvtIostorinvdtlIn> dtls);
List<Map> findByInv(String inv_id);
}

View File

@@ -1,41 +0,0 @@
package org.nl.wms.stor_manage.service.in.iostor_dtl.impl;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.utils.ListOf;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlInMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.service.out.iostor_dtl.IStIvtIostorinvdtlOutService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 服务实现类
* </p>
*
* @author generator
* @since 2024-03-29
*/
@Service
public class StIvtIostorinvdtlInServiceImpl extends ServiceImpl<StIvtIostorinvdtlInMapper, StIvtIostorinvdtlIn> implements IStIvtIostorinvdtlInService {
@Override
public void batchInsert(List<StIvtIostorinvdtlIn> dtls) {
this.baseMapper.batchInsert(dtls);
}
@Override
public List<Map> getByInv(String inv_id) {
if (StringUtils.isEmpty(inv_id)){
return new ArrayList<>();
}
return this.baseMapper.findByInv(inv_id);
}
}

View File

@@ -1,30 +0,0 @@
package org.nl.wms.stor_manage.service.out.iostor_dtl.impl;
import org.nl.wms.stor_manage.service.in.iostor_dtl.IStIvtIostorinvdtlInService;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.StIvtIostorinvdtlIn;
import org.nl.wms.stor_manage.service.in.iostor_dtl.dao.mapper.StIvtIostorinvdtlInMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.service.out.iostor_dtl.IStIvtIostorinvdtlOutService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单明细表 服务实现类
* </p>
*
* @author generator
* @since 2024-03-29
*/
@Service
public class StIvtIostorinvdtlOutServiceImpl extends ServiceImpl<StIvtIostorinvdtlInMapper, StIvtIostorinvdtlIn> implements IStIvtIostorinvdtlOutService {
@Override
public void batchInsert(List<StIvtIostorinvdtlIn> dtls) {
this.baseMapper.batchInsert(dtls);
}
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.base_manage.struct.controller;
package org.nl.wms.stor_manage.struct.controller;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@@ -1,8 +1,8 @@
package org.nl.wms.base_manage.struct.service;
package org.nl.wms.stor_manage.struct.service;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.base_manage.struct.service.dto.StructattrQuery;
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
import java.util.List;
import java.util.Map;
@@ -24,4 +24,5 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
*/
List<Map<String, Object>> getByQuery(StructattrQuery query);
void changeStruct(String struct_code,String vehicle_code,String task_type);
}

View File

@@ -1,4 +1,4 @@
package org.nl.wms.base_manage.struct.service.dao;
package org.nl.wms.stor_manage.struct.service.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;

View File

@@ -1,6 +1,6 @@
package org.nl.wms.base_manage.struct.service.dao.mapper;
package org.nl.wms.stor_manage.struct.service.dao.mapper;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.base_manage.struct.service.dao.mapper.StIvtStructattrMapper">
<mapper namespace="org.nl.wms.stor_manage.struct.service.dao.mapper.StIvtStructattrMapper">
</mapper>

View File

@@ -1,11 +1,10 @@
package org.nl.wms.base_manage.struct.service.dto;
package org.nl.wms.stor_manage.struct.service.dto;
import lombok.Data;
import org.nl.common.domain.entity.BaseQuery;
import org.nl.common.domain.entity.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.base_manage.measure.service.dao.BmMeasureUnit;
import org.nl.wms.base_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
/*
* @author ZZQ

View File

@@ -0,0 +1,81 @@
package org.nl.wms.stor_manage.struct.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.IdUtil;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.stor_manage.record.service.IStIvtStructivtflowService;
import org.nl.wms.stor_manage.record.service.dao.StIvtStructivtflow;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.stor_manage.struct.service.dao.mapper.StIvtStructattrMapper;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 仓位属性表 服务实现类
* </p>
*
* @author generator
* @since 2024-04-08
*/
@Service
public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMapper, StIvtStructattr> implements IStIvtStructattrService {
@Autowired
private IMdPbVehicleMaterService vehicleMaterService;
@Autowired
private IStIvtStructivtflowService structivtflowService;
@Override
public List<Map<String, Object>> getByQuery(StructattrQuery query) {
List<Map<String, Object>> maps = this.listMaps(query.build());
return maps;
}
public static void main(String[] args) {
Boolean in = StatusEnum.TASK_TYPE_IN.check("10");
System.out.println(in);
}
@Override
public void changeStruct(String struct_code, String vehicle_code, String task_type) {
List<MdPbVehicleMater> vehicleMaters = vehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", vehicle_code));
this.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code",vehicle_code)
.set("lock_type", StatusEnum.LOCK.code(""))
.eq("struct_code",struct_code));
Boolean in = StatusEnum.TASK_TYPE_IN.check(task_type);
String now = DateUtil.now();
List<StIvtStructivtflow> records = new ArrayList<>();
for (MdPbVehicleMater vehicleMater : vehicleMaters) {
StIvtStructivtflow record = new StIvtStructivtflow();
record.setId(IdUtil.getStringId());
record.setUpdate_time(now);
record.setMaterial_id(vehicleMater.getMaterial_id());
record.setPcsn(vehicleMater.getPcsn());
record.setQty(vehicleMater.getQty());
record.setTask_type(task_type);
record.setFrozen_qty(vehicleMater.getFrozen_qty());
record.setSource_form_type(vehicleMater.getSource_form_type());
record.setSource_form_id(vehicleMater.getSource_form_id());
record.setUnit_id(vehicleMater.getUnit_id());
record.setStruct_code(struct_code);
record.setVehicle_form_data(vehicleMater.getForm_data());
record.setGrowth(in);
records.add(record);
}
structivtflowService.saveBatch(records);
}
}