rev:流程节点数据存储

This commit is contained in:
zhangzq
2024-05-11 14:56:01 +08:00
parent ed91c89d4e
commit d31e6c32f2
31 changed files with 174 additions and 54 deletions

View File

@@ -17,10 +17,10 @@ import java.util.Map;
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","完成", "99")),
LOCK(MapOf.of("","00","","10","","20")),
;
private Map<String, String> code;

View File

@@ -136,16 +136,16 @@ public class StIvtStructattr implements Serializable {
*/
private Boolean is_used;
/**
* 锁定类型
*/
private String lock_type;
/**
* 是否判断高度
*/
private String is_zdepth;
/**
* 是否空位
*/
private Boolean is_emp;
/**
* 存储载具号
*/

View File

@@ -1,7 +1,9 @@
package org.nl.wms.dispatch_manage.task.handler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
import java.util.List;
@@ -9,7 +11,6 @@ import java.util.List;
* @author ZZQ
* @Date 2024/5/6 14:35
*/
public interface TaskHandler {
public interface TaskHandler extends ClassProcess {
List<SchBaseTask> createTask(JSONArray forms);
}

View File

@@ -1,6 +1,7 @@
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;
@@ -13,8 +14,9 @@ import java.util.List;
*/
@Service
public class AgvTaskHandler implements TaskHandler {
@Override
public List<SchBaseTask> createTask(JSONArray forms) {
public JSONObject process(JSONObject from, String type) {
return null;
}
}

View File

@@ -1,8 +1,14 @@
package org.nl.wms.dispatch_manage.task.handler.impl;
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.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 java.util.List;
@@ -13,8 +19,23 @@ import java.util.List;
*/
@Service
public class StackingTaskHandler implements TaskHandler {
@Autowired
ISchBaseTaskService taskService;
@Override
public List<SchBaseTask> createTask(JSONArray forms) {
return null;
public JSONObject process(JSONObject from, String type) {
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"));
taskService.createTask(task);
return (JSONObject)JSONObject.toJSON(task);
}
}

View File

@@ -1,6 +1,7 @@
package org.nl.wms.dispatch_manage.task.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -14,5 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISchBaseTaskService extends IService<SchBaseTask> {
void createTask(JSONArray forms);
void createTask(SchBaseTask task);
}

View File

@@ -88,7 +88,7 @@ public class SchBaseTask implements Serializable {
/**
* 优先级
*/
private Integer priority;
private Integer priority = 1;
/**
* 处理类
@@ -98,12 +98,12 @@ public class SchBaseTask implements Serializable {
/**
* 是否立即下发
*/
private Boolean is_send;
private Boolean is_send = Boolean.TRUE;
/**
* 是否删除
*/
private Boolean is_delete;
private Boolean is_delete = Boolean.FALSE;
/**
* 创建时间

View File

@@ -1,11 +1,13 @@
package org.nl.wms.dispatch_manage.task.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.utils.ListOf;
import org.nl.wms.dispatch_manage.task.handler.TaskHandler;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.dispatch_manage.task.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.external_system.acs.service.WmsToAcsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,14 +26,11 @@ import java.util.Map;
public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements ISchBaseTaskService {
@Autowired
Map<String, TaskHandler> taskHandlerMap;
private WmsToAcsService wmsToAcsService;
@Override
public void createTask(JSONArray forms) {
TaskHandler handler = taskHandlerMap.get("sdf");
List<SchBaseTask> task = handler.createTask(forms);
for (SchBaseTask baseTask : task) {
this.save(baseTask);
}
public void createTask(SchBaseTask task) {
this.save(task);
// wmsToAcsService.interationToExt(ListOf.of(task));
}
}

View File

@@ -79,7 +79,7 @@ public class ExecutionController {
@GetMapping(value = "/confirm")
public ResponseEntity<Object> flowConfirm(String inst_id) {
return new ResponseEntity<>(flowOperationService.flowConfirm(inst_id), HttpStatus.OK);
return new ResponseEntity<>(flowOperationService.flowConfirm(inst_id,null), HttpStatus.OK);
}
@GetMapping(value = "/queryByParentId/{id}")

View File

@@ -23,8 +23,7 @@ public class FormConverter extends BaseNodeConverter {
form.setPassNode(pass);
form.setId(node.getString("id"));
form.setType(node.getString("type"));
form.setForm_type(node.getString("form_type"));
form.setForm_type(properties.getString("form_type"));
form.setName(properties.getString("name"));
form.setCategory(properties.getString("category"));
form.setDocumentation(properties.getString("documentation"));

View File

@@ -23,7 +23,9 @@ public class ServerTaskConverter extends BaseNodeConverter {
form.setId(node.getString("id"));
form.setType(node.getString("type"));
form.setCategory(properties.getString("category"));
form.setForm_type(properties.getString("form_type"));
JSONObject auxParam = properties.getJSONObject("auxParam");
form.setAuxParam(auxParam);
form.setName(properties.getString("name"));
form.setDocumentation(properties.getString("documentation"));
//设置触发事件

View File

@@ -52,7 +52,7 @@ public abstract class FlowNodeActivityBehavior<T> {
this.execute(entity);
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()
.eq("proc_inst_id",entity.getProc_inst_id())
.set("status", StatusEnum.FLOW_STATUS.code("执行中"))
.set("status", StatusEnum.FLOW_STATUS.code("节点完成"))
.set("form_data", JSONObject.toJSON(entity.getT()).toString())
.set("update_time", DateUtil.now()));
this.leaveActivity(entity);

View File

@@ -57,7 +57,7 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior {
//判断当前所有子流程是否都完成:全都完成则执行父流程
int count = iActRuExecutionService.count(new QueryWrapper<ActRuExecution>()
.eq("parent_id", execution.getParent_id())
.ne("status", StatusEnum.FLOW_STATUS.code("完成")));
.ne("status", StatusEnum.FLOW_STATUS.code("节点完成")));
if (count == 0){
ActRuExecution parent = iActRuExecutionService.getById(entity.getParent_id());
ActReProcdef deployment = reProcdefService.getOne(new LambdaUpdateWrapper<ActReProcdef>().eq(ActReProcdef::getDeployment_id, entity.getDeploymentId()));

View File

@@ -101,7 +101,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
iostorinvService.save(mst);
entity.setT(handler);
entity.setForm_id(mst.getId());
entity.setForm_type("ST_IVT_IOSTORINV_IN");
entity.setForm_type(currentNode.getForm_type());
}
}
}

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
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;
@@ -24,12 +25,14 @@ public class ServerTaskActivityBehavior extends FlowNodeActivityBehavior<JSONObj
FlowElement element = entity.getCurrentFlowElement();
ServerTask currentNode = (ServerTask) element;
if (!CollectionUtils.isEmpty(currentNode.getSkipExpression())) {
TypeHandler<JSONObject, JSONObject> typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory());
TypeHandler<ExecutionDto<JSONObject>, ExecutionEntity<JSONObject>> typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory());
if (typeHandler == null) {
throw new BadRequestException("【flow】当前节点处理类型未定义");
}
typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), null);
ExecutionDto<JSONObject> result = typeHandler.handler(currentNode.getSkipExpression(), entity, null);
entity.setT(result.getT());
entity.setForm_id(result.getForm_id());
entity.setForm_type(currentNode.getForm_type());
}
}
}

View File

@@ -61,7 +61,7 @@ public class SubProcessActivityBehavior extends FlowNodeActivityBehavior<JSONObj
}
JSONObject form = entity.getT();
JSONArray items = (JSONArray)form.remove("item");
JSONArray items = (JSONArray)form.get("item");
StringBuffer buffer = new StringBuffer();
if (items!=null){
//子流程并行,子流程单一的时候直接串行

View File

@@ -24,7 +24,7 @@ public class ExeInstanceCmd implements Command {
@Override
public Object execute(ExecutionEntity entity) {
//获取当前流程版本信息有可能是流程线需要区分SequenceFlowOperation
if (StatusEnum.FLOW_STATUS.code("执行中").equals(status)){
if (StatusEnum.FLOW_STATUS.code("节点完成").equals(status)){
CommandExecutor.getAgenda().planOperation(new SequenceFlowOperation(entity));
}else {
CommandExecutor.getAgenda().planOperation(new ContinuOperation(entity));

View File

@@ -0,0 +1,24 @@
package org.nl.wms.flow_manage.flow.framework.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement;
/*
* @author ZZQ
* @Date 2024/3/18 13:15
* 流程执行相关参数
*/
@Data
@AllArgsConstructor
@Builder
public class ExecutionDto<T> {
private String form_id;
private T t;
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.flow_manage.flow.framework.entity.node.base.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.Sequence.SequenceFlow;
@@ -22,6 +23,7 @@ public abstract class FlowNode extends FlowElement {
private boolean notExclusive;
protected Boolean passNode = Boolean.FALSE;
private JSONObject auxParam;
private List<SequenceFlow> incomingFlows = new ArrayList<>();
private List<SequenceFlow> outgoingFlows = new ArrayList<>();
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.ExecuteTask;
@@ -13,5 +14,6 @@ import java.util.List;
@Data
public class ServerTask extends ExecuteTask {
protected String category;
protected String form_type;
protected List<String> skipExpression=new ArrayList<>();
}

View File

@@ -2,8 +2,15 @@ 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.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.process.nodeType.TypeHandler;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -13,12 +20,22 @@ import java.util.List;
* @Date 2024/3/21 15:17
*/
@Service("class")
public class ClassHandler extends TypeHandler<JSONObject, JSONArray> {
public class ClassHandler extends TypeHandler<ExecutionDto, ExecutionEntity<JSONObject>> {
@Override
public JSONObject handler(List<String> param, JSONArray entity, BmFormStruc form_struc) {
String className = param.get(0);
return null;
public ExecutionDto handler(List<String> param, ExecutionEntity<JSONObject> entity, BmFormStruc form_struc) {
FlowNode currentFlowElement = (FlowNode)entity.getCurrentFlowElement();
ClassProcess process = SpringContextHolder.getBean(param.get(0));
if (currentFlowElement.getAuxParam()!=null){
entity.getT().putAll(currentFlowElement.getAuxParam());
}
JSONObject result = process.process(entity.getT(), entity.getForm_type());
entity.setT(result);
return ExecutionDto.builder()
.form_id(result.getString("id"))
.t(result)
.build();
}
}

View File

@@ -5,6 +5,7 @@ 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.wms.config_manage.form_struc.service.dao.BmFormStruc;
@@ -12,6 +13,8 @@ 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;
@@ -32,7 +35,7 @@ import java.util.Map;
* @ONLY:该决策引擎只用于出入库规则
*/
@Service("decision")
public class DecisionHandler extends TypeHandler<JSONObject,JSONObject> {
public class DecisionHandler extends TypeHandler<ExecutionDto,ExecutionEntity<JSONObject>> {
@Autowired
@@ -51,13 +54,17 @@ public class DecisionHandler extends TypeHandler<JSONObject,JSONObject> {
*/
@Override
public JSONObject handler(List<String> params, JSONObject item_json, BmFormStruc form_struc) {
public ExecutionDto handler(List<String> params, ExecutionEntity<JSONObject> entity, BmFormStruc form_struc) {
//出入库明细
JSONObject item_json = entity.getT();
StIvtIostorinvdtlIn iostorinvdtlIn = item_json.toJavaObject(StIvtIostorinvdtlIn.class);
List<StIvtStructattr> list = iStIvtStructattrService.list(new QueryWrapper<StIvtStructattr>()
.eq("is_emp", true)
.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);
@@ -71,11 +78,15 @@ public class DecisionHandler extends TypeHandler<JSONObject,JSONObject> {
//更新仓位,更新数据
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("vehicle_code",struct_code)
.set("struct_code",struct_code)
.eq("id",iostorinvdtlIn.getId()));
return null;
item_json.put("struct_code",struct_code);
return ExecutionDto.builder()
.form_id(iostorinvdtlIn.getId())
.t(item_json)
.build();
}
}

View File

@@ -63,8 +63,7 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
JSONArray itemList = new JSONArray();
BmFormStruc item_struc = iBmFormStrucService.getOne(new QueryWrapper<BmFormStruc>().eq("parent_id",form_struc.getForm_type()));
for (int i = 0; i < item.size(); i++) {
JSONObject dtl = item.getJSONObject(i);
itemList.add(this.handler(param, dtl, item_struc));
itemList.add(this.handler(param, item.getJSONObject(i), item_struc));
}
returnObj.put("item",itemList);
}

View File

@@ -0,0 +1,12 @@
package org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess;
import com.alibaba.fastjson.JSONObject;
/*
* @author ZZQ
* @Date 2024/5/11 10:31
*/
public interface ClassProcess {
JSONObject process(JSONObject from,String type);
}

View File

@@ -14,4 +14,5 @@ import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
*/
public interface IActReProcdefService extends IService<ActReProcdef> {
ActReProcdef getCurrentVersion(String model_key);
}

View File

@@ -1,6 +1,7 @@
package org.nl.wms.flow_manage.flow.service.deployment.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
/**
@@ -13,4 +14,5 @@ import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
*/
public interface ActReProcdefMapper extends BaseMapper<ActReProcdef> {
ActReProcdef getCurrentVersion(@Param("modelKey") String modelKey, @Param("version")String version);
}

View File

@@ -2,4 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.flow_manage.flow.service.deployment.dao.mapper.ActReProcdefMapper">
<select id="getCurrentVersion"
resultType="org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef">
SELECT
act_re_procdef.*
FROM
act_re_procdef
LEFT JOIN act_de_model ON act_re_procdef.model_key = act_de_model.model_key
WHERE
act_re_procdef.model_key = #{modelKey}
AND act_re_procdef.version = act_de_model.version
</select>
</mapper>

View File

@@ -18,4 +18,8 @@ import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
@Service
public class ActReProcdefServiceImpl extends ServiceImpl<ActReProcdefMapper, ActReProcdef> implements IActReProcdefService {
@Override
public ActReProcdef getCurrentVersion(String model_key) {
return this.baseMapper.getCurrentVersion(model_key,null);
}
}

View File

@@ -18,5 +18,5 @@ public interface IFlowOperationService {
Boolean startFormFlow(StartProcessInstanceVo params);
Boolean flowConfirm(String proc_inst_id);
Boolean flowConfirm(String proc_inst_id,JSONObject auxParam);
}

View File

@@ -47,7 +47,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
@Override
public Boolean startUp(String form_type, JSONObject mst,List<JSONObject> items) {
ActReProcdef deployment = actReProcdefService.getOne(new LambdaUpdateWrapper<ActReProcdef>().eq(ActReProcdef::getModel_key, form_type));
ActReProcdef deployment = actReProcdefService.getCurrentVersion(form_type);
if (deployment==null){
throw new BadRequestException("当前单据类型未配置业务流程");
}
@@ -83,7 +83,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
}
@Override
public Boolean flowConfirm(String proc_inst_id) {
public Boolean flowConfirm(String proc_inst_id,JSONObject auxParam) {
if (StringUtils.isNotEmpty(proc_inst_id)){
//当前流程
ActRuExecution execution = iActRuExecutionService.getOne(new QueryWrapper<ActRuExecution>()
@@ -102,6 +102,9 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
JSONObject model_json = JSONObject.parseObject(model_json_string);
BpmnModel bpmnModel = bpmnJSONConverter.convertToBpmnModel(deployment.getModel_key(), deployment.getVersion(), model_json);
FlowNode flowNode = bpmnModel.getProcesses().get(execution.getActivity_id());
if (auxParam!=null){
flowNode.setAuxParam(auxParam);
}
ExecutionEntity entity = new ExecutionEntity();
entity.setCurrentFlowElement(flowNode);
entity.setT(execution.getForm_data());

View File

@@ -82,14 +82,18 @@ public class StIvtIostorinvdtlIn implements Serializable {
private String remark;
/**
* 备注
* 货主
*/
private String shipper;
/**
* 备注
* 仓库
*/
private String stor_code;
/**
* 仓位编码
*/
private String struct_code;
/**
* 分配的载具
*/
@@ -102,7 +106,7 @@ public class StIvtIostorinvdtlIn implements Serializable {
private String task_code;
/**
* 备注
* 单重
*/
private BigDecimal single_wt;