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);
}
}

View File

@@ -111,7 +111,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="业务表时间映射" prop="bus_data">
<el-input v-model="form.bus_data" style="width: 150px;"/>
<el-input v-model="form.biz_date" style="width: 150px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -120,6 +120,13 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="业务表单据类型映射" prop="bus_data">
<el-input v-model="form.biz_form_type" style="width: 150px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物料id映射" prop="material_id">
@@ -173,6 +180,7 @@
<!-- <el-table-column prop="parent_id" show-overflow-tooltip width="120" label="父表id"/>-->
<el-table-column prop="biz_id" show-overflow-tooltip width="120" label="业务单据id映射"/>
<el-table-column prop="biz_code" show-overflow-tooltip width="130" label="业务单据code映射"/>
<el-table-column prop="biz_form_type" show-overflow-tooltip width="130" label="业务单据type映射"/>
<el-table-column prop="biz_date" show-overflow-tooltip width="130" label="业务单据时间映射"/>
<el-table-column prop="biz_status" show-overflow-tooltip width="130" label="业务单据状态映射"/>
<el-table-column prop="material_id" show-overflow-tooltip width="120" label="物料id映射"/>
@@ -227,6 +235,7 @@ const defaultForm = {
biz_code: null,
biz_date: null,
biz_status: null,
biz_form_type: null,
material_id: null,
qty: null,
pcsn: null,

View File

@@ -155,6 +155,7 @@
<el-table-column prop="parent_id" label="父表id" min-width="150"/>
<el-table-column prop="biz_id" label="业务单据id映射" min-width="150"/>
<el-table-column prop="biz_code" label="业务单据code映射" min-width="150"/>
<el-table-column prop="biz_form_type" label="业务单据type映射" min-width="150"/>
<el-table-column prop="biz_date" label="业务单据时间映射" min-width="150"/>
<el-table-column prop="status" label="业务单据状态映射" min-width="150"/>
<el-table-column prop="material_id" label="物料id映射" min-width="150"/>

View File

@@ -102,6 +102,11 @@
<el-input v-model="form.biz_code" style="width: 120px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务表单据类型映射" prop="class_desc">
<el-input v-model="form.biz_form_type" style="width: 120px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="业务表时间映射" prop="class_desc">
<el-input v-model="form.bus_data" style="width: 120px;" />
@@ -160,6 +165,7 @@
<el-table-column prop="parent_id" label="父表id" min-width="150"/>
<el-table-column prop="biz_id" label="业务单据id映射" />
<el-table-column prop="biz_code" label="业务单据code映射" />
<el-table-column prop="biz_form_type" label="业务单据type映射" />
<el-table-column prop="biz_date" label="业务单据时间映射" />
<el-table-column prop="status" label="业务单据状态映射" />
<el-table-column prop="material_id" label="物料id映射" min-width="120"/>
@@ -211,6 +217,7 @@ const defaultForm = {
create_id: null,
biz_id: null,
biz_code: null,
biz_form_type: null,
biz_date: null,
biz_status: null,
material_id: null,

View File

@@ -224,6 +224,7 @@ export default {
curdExecution.flowConfirm(proc_inst_id).then(res => {
crud.notify("操作成功", CRUD.NOTIFICATION_TYPE.SUCCESS)
})
this.crud.toQuery()
},
load(tree, treeNode, resolve) {
setTimeout(() => {

View File

@@ -257,6 +257,7 @@ export default {
},
[CRUD.HOOK.beforeSubmit]() {
debugger
// 提交前校验
if (this.tableData.length === 0) {
this.crud.notify('请至少选择一条明细', CRUD.NOTIFICATION_TYPE.INFO)
@@ -280,10 +281,8 @@ export default {
})
this.tableData.splice(-1, 0, data)
})
this.form.child_qty = this.tableData.length
},
tableDtlMaterial2(data) {
debugger
let mst = data['t'];
let rows = data['item'];
this.form.source_form_type = mst.form_type
@@ -295,14 +294,6 @@ export default {
if (a.value in mst_form_data) {
item = mst_form_data[a.value];
}
// let keys = Object.keys(mst_form_data);
// for (let i = 0; i < keys.length; i++) {
// let key = keys[i];
// if (a.value == key) {
// item = mst_form_data[a.value];
// break
// }
// }
this.$set(this.form.form_data,a.value,item)
})
rows.forEach((row) => {
@@ -325,7 +316,6 @@ export default {
})
this.tableData.splice(-1, 0, data)
})
this.form.child_qty = this.tableData.length
},
insertEvent(row) {
this.materShow = true

View File

@@ -76,7 +76,7 @@
<el-table-column prop="unit_id" label="单位" align="center" />
<el-table-column show-overflow-tooltip prop="source_form_type" label="源单类型" align="center" />
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单号" align="center" />
<el-table-column v-for="(item, index) in dtlCols" :key="item.value" :label="item.lable" >
<el-table-column show-overflow-tooltip width="150" v-for="(item, index) in dtlCols" :key="item.value" :label="item.lable" >
<template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="has_child" label="含子托盘" align="center" />

View File

@@ -27,6 +27,7 @@
<el-table-column prop="parent_id" label="父表id" />
<el-table-column prop="biz_id" label="业务单据id映射" />
<el-table-column prop="biz_code" label="业务单据code映射" />
<el-table-column prop="biz_form_type" label="业务单据类型映射" />
<el-table-column prop="biz_date" label="业务单据时间映射" />
<el-table-column prop="status" label="业务单据状态映射" />
<el-table-column prop="material_id" label="物料id映射" />

View File

@@ -11,7 +11,7 @@
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="85px" label-suffix=":">
<el-form-item label="单据号" prop="bill_code">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px" />
<el-input v-model="form.code" disabled clearable style="width: 210px" />
</el-form-item>
<el-form-item label="仓 库">
<el-select
@@ -42,57 +42,52 @@
:disabled="true"
placeholder="业务类型"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.ST_INV_CP_IN_TYPE"
v-for="item in dict.IOBILL_TYPE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="单据状态" prop="bill_status">
<el-form-item label="单据状态" prop="status">
<el-select
v-model="form.bill_status"
v-model="form.status"
clearable
style="width: 210px"
placeholder="单据状态"
class="filter-item"
disabled
>
<el-option
v-for="item in dict.IO_BILL_STATUS"
v-for="item in dict.FORM_STATUS"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="总数量" prop="total_qty">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input-number
v-model="form.total_qty"
:controls="false"
:precision="3"
:min="0"
disabled
style="width: 210px"
/>
<el-form-item label="源单类型" prop="source_form_type">
<el-input v-model="form.source_form_type" disabled clearable style="width: 210px" />
</el-form-item>
<el-form-item label="业务日期" prop="biz_date">
<el-date-picker v-model="form.biz_date" type="date" placeholder="选择日期" style="width: 210px" value-format="yyyy-MM-dd" :disabled="true" />
<el-form-item label="源单编号" prop="source_form_id">
<el-input v-model="form.source_form_id" disabled clearable style="width: 210px" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" :disabled="true" />
<el-form-item label="源单日期" prop="source_form_date">
<el-input v-model="form.source_form_date" disabled clearable style="width: 210px" />
</el-form-item>
<el-form-item label="单据日期" prop="bill_code">
<el-input v-model="form.create_time" disabled style="width: 210px" />
</el-form-item>
<template v-for="(col,index) in cols">
<el-form-item label="col.lable" prop="bill_code">
<label slot="label">{{col.lable}}:</label>
<el-input v-model="form.form_data[col.value]" :value="col.value" clearable style="width: 210px" />
<el-input v-model="form.form_data[col.value]" :value="col.value" disabled style="width: 210px" />
</el-form-item>
</template>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" :disabled="true" />
</el-form-item>
</el-form>
<div class="crud-opts2">
<span class="role-span2">入库明细</span>
@@ -115,12 +110,17 @@
<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="批次" width="150" align="center" />
<el-table-column prop="qty" :formatter="crud.formatNum3" label="数量" align="center" />
<el-table-column prop="qty_unit_name" label="单位" align="center" />
<el-table-column prop="plan_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 show-overflow-tooltip prop="base_bill_type" label="源单类型" :formatter="formatBaseType" align="center" />
<el-table-column show-overflow-tooltip prop="base_bill_code" label="源单号" align="center" />
<el-table-column show-overflow-tooltip prop="base_bill_table" label="源单行号" align="center" />
<el-table-column prop="stor_code" label="仓库编号" align="center" />
<el-table-column prop="struct_code" label="分配仓位" align="center" />
<el-table-column show-overflow-tooltip prop="source_form_type" label="源单类型" align="center" />
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单号" align="center" />
<el-table-column show-overflow-tooltip width="150" v-for="(item, index) in dtlCols" :key="item.value" :label="item.lable" >
<template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="remark" label="明细备注" align="center" />
</el-table>
</el-card>
@@ -166,7 +166,7 @@ export default {
name: 'ViewDialog',
components: { formstruc },
mixins: [crud()],
dicts: ['ST_INV_CP_IN_TYPE', 'product_area', 'IO_BILL_STATUS', 'task_status', 'SCH_TASK_TYPE_DTL', 'PCS_SAL_TYPE'],
dicts: [ 'FORM_STATUS','IOBILL_TYPE' ],
props: {
dialogShow: {
type: Boolean,
@@ -179,6 +179,7 @@ export default {
data() {
return {
cols:[],
dtlCols:[],
dialogVisible: false,
tableDtl: [],
tabledis: [],
@@ -203,9 +204,12 @@ export default {
},
methods: {
open() {
formstruc.getHeader('STOR_IN').then(res => {
formstruc.getHeader('st_ivt_iostorinv_in').then(res => {
this.cols = res
})
formstruc.getHeader('st_ivt_iostorinvdtl_in').then(res => {
this.dtlCols = res
})
},
setForm(row) {
this.dialogVisible = true
@@ -216,7 +220,7 @@ export default {
this.dialogVisible = false
},
stateFormat(row, column) {
return this.dict.label.IO_BILL_STATUS[row.bill_status]
return this.dict.label.FORM_STATUS[row.bill_status]
},
taskdtl_typeFormat(row) {
return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type]

View File

@@ -11,6 +11,15 @@
label-width="80px"
label-suffix=":"
>
<el-form-item label="单号">
<el-input
v-model="query.code"
size="mini"
clearable
placeholder="单据号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="单据类型">
<el-select
v-model="query.bill_type"
@@ -22,7 +31,7 @@
@change="crud.toQuery"
>
<el-option
v-for="item in dict.ST_INV_CP_IN_TYPE"
v-for="item in dict.IOBILL_TYPE"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -63,7 +72,7 @@
<el-form-item label="单据状态">
<el-select
v-model="query.bill_status"
v-model="query.status"
clearable
size="mini"
placeholder="单据状态"
@@ -71,7 +80,7 @@
@change="crud.toQuery"
>
<el-option
v-for="item in dict.IO_BILL_STATUS"
v-for="item in dict.FORM_STATUS"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -79,33 +88,23 @@
</el-select>
</el-form-item>
<el-form-item label="入库单号">
<el-input
v-model="query.bill_code"
size="mini"
clearable
placeholder="单据号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="生产车间">
<el-select
v-model="query.product_area"
clearable
size="mini"
placeholder="全部"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.product_area"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="生产车间">-->
<!-- <el-select-->
<!-- v-model="query.product_area"-->
<!-- clearable-->
<!-- size="mini"-->
<!-- placeholder="全部"-->
<!-- class="filter-item"-->
<!-- @change="crud.toQuery"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in dict.product_area"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<rrOperation />
</el-form>
@@ -143,18 +142,26 @@
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.code }}</el-link>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="status" label="单据状态" />
<el-table-column prop="product_area" label="生产车间" width="130" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="form_type" min-width="120" label="单据类型" />
<el-table-column show-overflow-tooltip prop="biz_code" label="仓库" min-width="120" />
<el-table-column show-overflow-tooltip min-width="120" prop="biz_date" label="业务日期" />
<el-table-column v-for="(item, index) in cols" :key="item.value" :label="item.lable" >
<el-table-column prop="bill_type" label="业务类型">
<template slot-scope="scope">
{{ dict.label.IOBILL_TYPE[scope.row.bill_type] }}
</template>
</el-table-column>
<el-table-column prop="status" label="状态">
<template slot-scope="scope">
{{ dict.label.FORM_STATUS[scope.row.status] }}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="source_form_type" min-width="120" label="源单类型" />
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单编码" min-width="120" />
<el-table-column show-overflow-tooltip prop="source_form_date" label="源单时间" min-width="120" />
<el-table-column show-overflow-tooltip width="150" v-for="(item, index) in cols" :key="item.value" :label="item.lable" >
<template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="创建人" align="center" prop="create_id" />
<el-table-column label="创建人" align="center" prop="create_name" />
<el-table-column label="创建时间" align="center" prop="create_time" width="150" />
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column v-permission="[]" label="操作" width="380px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
@@ -162,10 +169,10 @@
:disabled-edit="canUd(scope.row)"
:disabled-dle="canUd(scope.row)"
/>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">组盘</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">分配</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">任务</el-button>
</template>
<!-- <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">组盘</el-button>-->
<!-- <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">分配</el-button>-->
<!-- <el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="groupOpen(scope.row)">任务</el-button>-->
</template>-->
</el-table-column>
</el-table>
<!--分页组件-->
@@ -208,7 +215,7 @@ export default {
},
mixins: [presenter(), header(), crud()],
// 数据字典
dicts: ['IO_BILL_STATUS', 'ST_INV_CP_IN_TYPE', 'product_area'],
dicts: [ 'FORM_STATUS','IOBILL_TYPE' ],
data() {
return {
cols:[],
@@ -247,7 +254,7 @@ export default {
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
formstruc.getHeader('STOR_IN').then(res => {
formstruc.getHeader('st_ivt_iostorinv_in').then(res => {
this.cols = res
})
},