rev:出入库流程兼容
This commit is contained in:
@@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -54,8 +55,10 @@ public class StIvtBsrealstorattrController {
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
||||
iStIvtBsrealstorattrService.deleteAll(ids);
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
if (ids.length>0){
|
||||
iStIvtBsrealstorattrService.removeByIds(Arrays.asList(ids));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public class StIvtBsrealstorattr implements Serializable {
|
||||
* 仓库标识
|
||||
*/
|
||||
@TableId
|
||||
private String stor_id;
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<select id="getStor" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
CONVERT(stor_id , CHAR ) AS stor_id,
|
||||
CONVERT(id , CHAR ) AS stor_id,
|
||||
stor_code,
|
||||
stor_name
|
||||
FROM
|
||||
|
||||
@@ -71,7 +71,7 @@ public class StIvtBsrealstorattrServiceImpl extends ServiceImpl<StIvtBsrealstora
|
||||
throw new BadRequestException("已存在相同编码的仓库【" + dao.getStor_code() + "】");
|
||||
}
|
||||
|
||||
dao.setStor_id(IdUtil.getStringId());
|
||||
dao.setId(IdUtil.getStringId());
|
||||
dao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
dao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dao.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
@@ -89,7 +89,7 @@ public class StIvtBsrealstorattrServiceImpl extends ServiceImpl<StIvtBsrealstora
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(StIvtBsrealstorattr dao) {
|
||||
StIvtBsrealstorattr isDao = this.getById(dao.getStor_id());
|
||||
StIvtBsrealstorattr isDao = this.getById(dao.getId());
|
||||
|
||||
if (isDao == null) {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
attr.stor_name
|
||||
FROM
|
||||
st_ivt_sectattr sect
|
||||
LEFT JOIN st_ivt_bsrealstorattr attr ON sect.stor_id = attr.stor_id
|
||||
LEFT JOIN st_ivt_bsrealstorattr attr ON sect.stor_id = attr.id
|
||||
<where>
|
||||
sect.is_delete = '0'
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
sect.sect_id,
|
||||
sect.sect_code,
|
||||
stor.stor_name,
|
||||
stor.stor_id,
|
||||
stor.id,
|
||||
stor.stor_code
|
||||
FROM
|
||||
st_ivt_sectattr sect
|
||||
LEFT JOIN st_ivt_bsrealstorattr stor ON sect.stor_id = stor.stor_id
|
||||
LEFT JOIN st_ivt_bsrealstorattr stor ON sect.stor_id = stor.id
|
||||
WHERE
|
||||
stor.is_used = '1'
|
||||
<if test="is_virtualstore != null and is_virtualstore != ''">
|
||||
@@ -54,13 +54,13 @@
|
||||
and stor.is_reversed = #{is_reversed}
|
||||
</if>
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and stor.stor_id = #{stor_id}
|
||||
and stor.id = #{stor_id}
|
||||
</if>
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and stor.stor_id = #{stor_id}
|
||||
and stor.id = #{stor_id}
|
||||
</if>
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and stor.stor_id = #{stor_id}
|
||||
and stor.id = #{stor_id}
|
||||
</if>
|
||||
<if test="sect_type_attr != null and stor_id != ''">
|
||||
and st_ivt_sectattr.sect_type_attr = #{sect_type_attr}
|
||||
|
||||
@@ -86,15 +86,17 @@ public class BmFormStrucController {
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids){
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids){
|
||||
//参数判读,参数解析,调用参数入库
|
||||
if (ids.length>0){
|
||||
List<PmFormData> pmFormData = iPmFormDataService.listByIds(Arrays.asList(ids));
|
||||
Set<String> collect = pmFormData.stream().map(PmFormData::getForm_type).collect(Collectors.toSet());
|
||||
if (!CollectionUtils.isEmpty(collect)){
|
||||
int dataCount = iPmFormDataService.count(new QueryWrapper<PmFormData>().in("form_type", collect));
|
||||
if (dataCount>0){
|
||||
throw new BadRequestException("当前表单存在业务数据,不允许删除");
|
||||
}
|
||||
}
|
||||
iBmFormStrucService.removeByIds(Arrays.asList(ids));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -55,8 +56,11 @@ public class BmFormStrucServiceImpl extends ServiceImpl<BmFormStrucMapper, BmFor
|
||||
List<BmFormStrucDto> list = new ArrayList<>();
|
||||
if (!CollectionUtils.isEmpty(records)){
|
||||
List<String> ids = records.stream().filter(BmFormStruc::getHas_child).map(BmFormStruc::getId).collect(Collectors.toList());
|
||||
Map<String, List<BmFormStruc>> childMap = new HashMap<>();
|
||||
if (!CollectionUtils.isEmpty(ids)){
|
||||
List<BmFormStruc> childs = this.list(new QueryWrapper<BmFormStruc>().in("parent_id", ids));
|
||||
Map<String, List<BmFormStruc>> childMap = childs.stream().collect(Collectors.groupingBy(BmFormStruc::getParent_id));
|
||||
childMap = childs.stream().collect(Collectors.groupingBy(BmFormStruc::getParent_id));
|
||||
}
|
||||
for (BmFormStruc record : records) {
|
||||
BmFormStrucDto strucDto = new BmFormStrucDto();
|
||||
BeanUtils.copyProperties(record, strucDto);
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.nl.wms.decision_manage.applyTask;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
|
||||
|
||||
/**
|
||||
* Title: AbstractAcsTask.java Description:任务抽象类
|
||||
* <p>
|
||||
* Task状态:01生成 ,02:确定起点,03、确定终点,04、起点和终点都确认,05:下发,可以下发, 06、执行中 07、完成
|
||||
* 完成方式:01自动,02:wcs删除,03、wms删除,04、发给wcs失败自动删除
|
||||
*
|
||||
* @author ldjun
|
||||
* @created 2020年6月12日 下午5:53:28
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractApplyTask {
|
||||
|
||||
|
||||
public abstract String createTask(JSONObject data);
|
||||
|
||||
|
||||
public abstract void updateStatus(JSONObject data);
|
||||
|
||||
|
||||
public abstract void cancel(JSONObject data);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package org.nl.wms.decision_manage.applyTask.impl;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.decision_manage.applyTask.AbstractApplyTask;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dto.MdPbVehicleMaterVo;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dto.MdVehicleGruopDtlVo;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dto.VehicleMaterQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* Title: AbstractAcsTask.java Description:任务抽象类
|
||||
* <p>
|
||||
* Task状态:01生成 ,02:确定起点,03、确定终点,04、起点和终点都确认,05:下发,可以下发, 06、执行中 07、完成
|
||||
* 完成方式:01自动,02:wcs删除,03、wms删除,04、发给wcs失败自动删除
|
||||
*
|
||||
* @author ldjun
|
||||
* @created 2020年6月12日 下午5:53:28
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ApplyFlowTask extends AbstractApplyTask {
|
||||
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject data) {
|
||||
for (String vehicle_code : data.keySet()) {
|
||||
String point_code1 = data.getString(vehicle_code);
|
||||
if (StringUtils.isEmpty(point_code1)){
|
||||
throw new BadRequestException("申请任务失败:请求参数数据异常");
|
||||
}
|
||||
MdPbVehicleMater mst = iMdPbVehicleMaterService.getGroupMst(vehicle_code);
|
||||
if (mst == null){
|
||||
throw new BadRequestException("申请任务失败:载具"+vehicle_code+"组盘信息不存在");
|
||||
}
|
||||
List<MdPbVehicleMaterVo> item = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code);
|
||||
if (CollectionUtils.isEmpty(item)){
|
||||
throw new BadRequestException("申请任务失败:载具"+vehicle_code+"组盘信息不存在");
|
||||
}
|
||||
|
||||
JSONObject groupJson = (JSONObject)JSONObject.toJSON(mst);
|
||||
BussEventMulticaster.Publish(
|
||||
new FlowStartEvent("md_group",null,new JSONObject(MapOf.of("point_code1",point_code1)))
|
||||
.build("md_pb_vehicleMater",mst.getId(),mst.getMst_form_type(),mst.getMst_form_id(),(JSONObject) groupJson)
|
||||
.build("md_pb_vehicleMater",item)
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatus(JSONObject data) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(JSONObject data) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,20 @@
|
||||
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.MapOf;
|
||||
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;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor_dtl.dao.StIvtIostorinvdtlOut;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.IMdPbVehicleMaterService;
|
||||
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.io.service.in.iostor_dtl.IStIvtIostorinvdtlService;
|
||||
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
@@ -63,7 +51,7 @@ public class FIFORuleHandler extends Decisioner<StIvtStructattr, JSONObject> {
|
||||
throw new BadRequestException("仓位集合为空!");
|
||||
}
|
||||
//分配数量
|
||||
int plan_qty = param.getInteger("plan_qty");
|
||||
int plan_qty = param.getInteger("qty");
|
||||
//当前条件只有id,批次
|
||||
List<StructattrVechielDto> vechielDtos = iStIvtStructattrService.collectVechicle(MapOf.of("material_id", param.getString("material_id")
|
||||
, "pcsn", param.getString("pcsn")
|
||||
|
||||
@@ -23,7 +23,7 @@ public class TaskDispatchService {
|
||||
List<SchBaseTask> tasks = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("is_send", true)
|
||||
.eq("is_delete",false)
|
||||
.lt("task_status", StatusEnum.FORM_STATUS.code("生成")));
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("生成")));
|
||||
//...调度逻辑
|
||||
//下发
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ public class StructEvent extends PublishEvent {
|
||||
|
||||
private String vehicle_code;
|
||||
|
||||
private String task_status;
|
||||
private String status;
|
||||
|
||||
private String point_code1;
|
||||
private String point_code2;
|
||||
|
||||
@@ -10,7 +10,6 @@ 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;
|
||||
@@ -59,14 +58,14 @@ public class OutStorageTaskHandler implements TaskHandler {
|
||||
throw new BadRequestException("创建任务失败:OutStorageTaskHandler#process()方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.ne("task_status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
.ne("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type("");
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -10,7 +10,7 @@ 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.md_manage.vehicleGroup.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;
|
||||
@@ -45,14 +45,14 @@ public class StackingTaskHandler implements TaskHandler {
|
||||
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("完成")));
|
||||
.ne("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setId(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
|
||||
task.setHandle_class(this.getClass().getName());
|
||||
task.setAcs_type("");
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
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.md_manage.vehicleGroup.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleGroup.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;
|
||||
@@ -33,7 +33,7 @@ public class TaskStatusHandler implements TaskHandler {
|
||||
@Override
|
||||
public JSONObject process(JSONObject from, JSONObject param) {
|
||||
//暂时出入入库的问题
|
||||
from.put("task_status",param.getString("task_status"));
|
||||
from.put("status",param.getString("status"));
|
||||
from.put("update_time",DateUtil.now());
|
||||
from.put("update_name",SecurityUtils.getCurrentNickName());
|
||||
SchBaseTask schBaseTask = from.toJavaObject(SchBaseTask.class);
|
||||
@@ -48,7 +48,7 @@ public class TaskStatusHandler implements TaskHandler {
|
||||
MdPbVehicleMater vehicleMater = vehicleMaters.get(0);
|
||||
BussEventMulticaster.Publish(StructEvent.builder()
|
||||
.task_type(schBaseTask.getTask_type())
|
||||
.task_status(schBaseTask.getTask_status())
|
||||
.status(schBaseTask.getStatus())
|
||||
.source_form_id(vehicleMater.getSource_form_id())
|
||||
.source_form_type(vehicleMater.getSource_form_type())
|
||||
.vehicle_code(schBaseTask.getVehicle_code())
|
||||
|
||||
@@ -48,7 +48,7 @@ public class SchBaseTask implements Serializable {
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private String task_status;
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 任务执行步骤
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
OR t.point_code2 LIKE '%${whereJson.point_code}%')
|
||||
</if>
|
||||
<if test="whereJson.unFinished != null">
|
||||
AND t.task_status <![CDATA[<=]]> #{whereJson.unFinished}
|
||||
AND t.status <![CDATA[<=]]> #{whereJson.unFinished}
|
||||
</if>
|
||||
<if test="whereJson.vehicle_code != null">
|
||||
AND t.vehicle_code = #{whereJson.vehicle_code}
|
||||
@@ -30,7 +30,7 @@
|
||||
AND t.create_time <![CDATA[>=]]> #{whereJson.begin_time}
|
||||
</if>
|
||||
<if test="collect != null and collect != ''">
|
||||
AND t.task_status IN
|
||||
AND t.status IN
|
||||
<foreach collection="collect" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
@@ -49,7 +49,7 @@
|
||||
sch_base_task.point_code1,
|
||||
sch_base_task.point_code2,
|
||||
sch_base_task.task_type,
|
||||
sch_base_task.task_status,
|
||||
sch_base_task.status,
|
||||
sch_base_task.task_code
|
||||
FROM
|
||||
md_pb_vehicleMater
|
||||
|
||||
@@ -15,7 +15,7 @@ public class SchBaseTaskQuery implements Serializable {
|
||||
private String point_code;
|
||||
private String begin_time;
|
||||
private String end_time;
|
||||
private String more_task_status;
|
||||
private String more_status;
|
||||
private String unFinished;
|
||||
|
||||
private String config_code;
|
||||
|
||||
@@ -27,7 +27,7 @@ public class TaskQuery extends BaseQuery<SchBaseTask> {
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private String task_status;
|
||||
private String status;
|
||||
/**
|
||||
* 点位
|
||||
*/
|
||||
|
||||
@@ -41,8 +41,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
|
||||
List<String> collect = ObjectUtil.isNotEmpty(whereJson.getMore_task_status())
|
||||
? Arrays.stream(whereJson.getMore_task_status().split(",")).collect(Collectors.toList()) : null;
|
||||
List<String> collect = ObjectUtil.isNotEmpty(whereJson.getMore_status())
|
||||
? Arrays.stream(whereJson.getMore_status().split(",")).collect(Collectors.toList()) : null;
|
||||
if (collect != null) {
|
||||
if (collect.contains("")) {
|
||||
collect = null;
|
||||
@@ -87,7 +87,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
public void create(SchBaseTask entity) {
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
Assert.notNull(entity.getTask_status(), "任务状态不能为空!");
|
||||
Assert.notNull(entity.getStatus(), "任务状态不能为空!");
|
||||
|
||||
entity.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.publish.AbstraceListener;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.early_manage.service.early_dtl.IAlmEarlyDtlService;
|
||||
import org.nl.wms.early_manage.service.early_dtl.dao.AlmEarlyDtl;
|
||||
import org.nl.wms.early_manage.service.early_inv.IAlmEarlyInvService;
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.nl.wms.external_system;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.utils.InterationUtil;
|
||||
import org.nl.common.utils.SpringContextHolder;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.external_system.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.external_system.acs.service.dto.TransferDto;
|
||||
import org.nl.wms.external_system.dto.InteracteDto;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl.MappingSourceDataTypeHandler;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:53
|
||||
*/
|
||||
@Service
|
||||
public class GateWayService {
|
||||
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
|
||||
|
||||
public void apply(InteracteDto param){
|
||||
//处理日志相关
|
||||
String service = param.getService();
|
||||
//根据服务拆分不同的业务
|
||||
acsToWmsService.applyTask(param.getService(),param.getData());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.nl.wms.external_system.acs.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.external_system.GateWayService;
|
||||
import org.nl.wms.external_system.dto.InteracteDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:53
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/acsToWms")
|
||||
public class AcsToWmsController {
|
||||
|
||||
@Autowired
|
||||
private GateWayService gateWayService;
|
||||
|
||||
@PostMapping("/apply")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> apply(@RequestBody InteracteDto form) {
|
||||
gateWayService.apply(form);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,15 @@
|
||||
package org.nl.wms.external_system.acs.controller;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:53
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("api/wmsService")
|
||||
public class WmsToAcsController {
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package org.nl.wms.external_system.acs.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.utils.InterationUtil;
|
||||
import org.nl.common.utils.SpringContextHolder;
|
||||
import org.nl.wms.decision_manage.applyTask.impl.ApplyFlowTask;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.external_system.acs.service.dto.TransferDto;
|
||||
import org.nl.wms.external_system.dto.InteracteDto;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl.MappingSourceDataTypeHandler;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/6 14:53
|
||||
*/
|
||||
@Service
|
||||
public class AcsToWmsService implements InitializingBean {
|
||||
|
||||
@Autowired
|
||||
private ApplyFlowTask applyFlowTask;
|
||||
private SyncFormMapping mapping;
|
||||
|
||||
public void applyTask(String taskType,JSONObject data){
|
||||
applyFlowTask.createTask(data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet(){
|
||||
this.mapping = SpringContextHolder.getBean(ISyncFormMappingService.class).getOne(new QueryWrapper<SyncFormMapping>()
|
||||
.eq("form_type","sch_base_task"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统交互
|
||||
*/
|
||||
public JSONObject interationToExt(List<SchBaseTask> arr) {
|
||||
//封装数据:
|
||||
TransferDto dto = new TransferDto();
|
||||
MappingSourceDataTypeHandler<JSONObject> typeHandler = new MappingSourceDataTypeHandler<>();
|
||||
List<JSONObject> items = typeHandler.sourceHandler((JSONArray)JSONArray.toJSON(arr), mapping);
|
||||
dto.setModel(items);
|
||||
|
||||
JSONObject result = InterationUtil.notifyExt(mapping.getSync_url(), (JSONObject) JSON.toJSON(dto));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.nl.wms.external_system.dto;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/29 16:26
|
||||
*/
|
||||
@Data
|
||||
public class InteracteDto {
|
||||
|
||||
String service;
|
||||
String ip;
|
||||
String request_time;
|
||||
String trace_id;
|
||||
JSONObject data;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.nl.wms.external_system.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.utils.MapOf;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/4/23 10:49
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum ServiceEnum {
|
||||
/**
|
||||
* 外部系统对接服务类型
|
||||
*/
|
||||
IN_STORAGE(MapOf.of("IN_STORAGE_10", "10", "海柔入库", "IN_STORAGE_11")),
|
||||
OUT_STORAGE(MapOf.of("OUT_STORAGE_20", "20", "海柔出库", "OUT_STORAGE_21")),
|
||||
;
|
||||
private Map<String, String> code;
|
||||
|
||||
public String code(String desc) {
|
||||
String code = this.getCode().get(desc);
|
||||
if (StringUtils.isNotEmpty(code)) {
|
||||
return code;
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||
}
|
||||
|
||||
public Boolean check(String code) {
|
||||
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
|
||||
if (entry.getValue().equals(code)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
||||
@@ -63,7 +64,7 @@ public class ExecutionController {
|
||||
|
||||
@PutMapping
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody ActRuExecution dto) {
|
||||
dto.setStatus("30");
|
||||
dto.setStatus(StatusEnum.MODEL_STATUS.code("未发布"));
|
||||
dto.setUpdate_time(DateUtil.now());
|
||||
executionService.updateById(dto);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
@@ -76,7 +77,7 @@ public class ExecutionController {
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@GetMapping("/dtl/{id}")
|
||||
@GetMapping("/dtl/{proc_inst_id}")
|
||||
public ResponseEntity<Object> getDtl(@PathVariable String proc_inst_id) {
|
||||
List<ActHiExecution> list = iActHiExecutionService.list(new LambdaQueryWrapper<ActHiExecution>().eq(ActHiExecution::getProc_inst_id, proc_inst_id));
|
||||
JSONArray array = new JSONArray();
|
||||
@@ -93,13 +94,6 @@ public class ExecutionController {
|
||||
return new ResponseEntity<>(array, HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "/open")
|
||||
public ResponseEntity<Object> getBpmnByModelId(JSONObject form) {
|
||||
StartProcessInstanceVo startProcessInstanceVo = form.toJavaObject(StartProcessInstanceVo.class);
|
||||
return new ResponseEntity<>(flowOperationService.startFormFlow(startProcessInstanceVo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/confirm/{proc_inst_id}")
|
||||
public ResponseEntity<Object> flowConfirm(@PathVariable String proc_inst_id) {
|
||||
return new ResponseEntity<>(flowOperationService.flowConfirm(proc_inst_id,null), HttpStatus.OK);
|
||||
|
||||
@@ -41,5 +41,14 @@ public class BpmnModel {
|
||||
* 节点配置集合
|
||||
*/
|
||||
protected Map<String, JSONObject> nodeProperties = new HashMap<>();
|
||||
/**
|
||||
* 携带的扩展信息
|
||||
*/
|
||||
protected JSONObject auxParam;
|
||||
|
||||
public BpmnModel(JSONObject auxParam) {
|
||||
this.auxParam = auxParam;
|
||||
}
|
||||
|
||||
public BpmnModel() { }
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.*;
|
||||
|
||||
/*
|
||||
@@ -28,7 +27,7 @@ public class InitFlowConfig {
|
||||
public void initConfig(CommandExecutor commandExecutor){
|
||||
CommandInterceptor first = initCommandInterceptor();
|
||||
commandExecutor.setInterceptor(first);
|
||||
CommandExecutor.activityBehaviorMap=activityBehaviorMap;
|
||||
CommandExecutor.Activity_BehaviorMap =activityBehaviorMap;
|
||||
TypeHandler.HANDLER_MAP=handlerMap;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,14 +33,16 @@ public class BpmnJSONConverter {
|
||||
Node_Converter.put("sendMsg",new SendMsgConverter());
|
||||
Node_Converter.put("subProcess",new SubProcessConverter());
|
||||
}
|
||||
|
||||
public BpmnModel convertToBpmnModel(String model,String version,JSONObject model_json) {
|
||||
return this.convertToBpmnModel(model,version,model_json,null);
|
||||
}
|
||||
public BpmnModel convertToBpmnModel(String model,String version,JSONObject model_json,JSONObject auxParam) {
|
||||
//内存中获取
|
||||
BpmnModel bpmnModel = BpmnModel_Cache.get(model + "_" + version);
|
||||
if (bpmnModel!=null){
|
||||
return bpmnModel;
|
||||
}
|
||||
bpmnModel = new BpmnModel();
|
||||
bpmnModel = new BpmnModel(auxParam);
|
||||
//节点解析:
|
||||
JSONArray nodes = model_json.getJSONArray("nodes");
|
||||
List<JSONObject> list = nodes.toJavaList(JSONObject.class);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.converter.node.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.flow_manage.flow.framework.BpmnModel;
|
||||
import org.nl.wms.flow_manage.flow.framework.converter.node.BaseNodeConverter;
|
||||
@@ -7,6 +8,7 @@ import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowNode;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.node.impl.EventNode.EndEvent;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
@@ -22,6 +24,10 @@ public class EndEventConverter extends BaseNodeConverter {
|
||||
end.setId(node.getString("id"));
|
||||
end.setType(node.getString("type"));
|
||||
end.setName(properties.getString("name"));
|
||||
JSONArray finish = properties.getJSONArray("finish");
|
||||
if (finish!=null){
|
||||
end.setFinish(finish.toJavaList(String.class));
|
||||
}
|
||||
end.setDocumentation(properties.getString("documentation"));
|
||||
//设置触发事件
|
||||
end.setExecutionListeners(null);
|
||||
|
||||
@@ -25,6 +25,8 @@ public class FormConverter extends BaseNodeConverter {
|
||||
form.setType(node.getString("type"));
|
||||
form.setForm_type(properties.getString("form_type"));
|
||||
form.setSource_data(properties.getString("sourceData"));
|
||||
form.setBill_type(properties.getString("bill_type"));
|
||||
form.setSource_data(properties.getString("sourceData"));
|
||||
form.setName(properties.getString("name"));
|
||||
form.setCategory(properties.getString("category"));
|
||||
form.setDocumentation(properties.getString("documentation"));
|
||||
|
||||
@@ -24,8 +24,12 @@ public class ServerTaskConverter extends BaseNodeConverter {
|
||||
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);
|
||||
JSONObject carry = model.getAuxParam();
|
||||
if (carry!=null){
|
||||
form.setAuxParam(carry);
|
||||
}else {
|
||||
form.setAuxParam(properties.getJSONObject("auxParam"));
|
||||
}
|
||||
form.setName(properties.getString("name"));
|
||||
form.setDocumentation(properties.getString("documentation"));
|
||||
//设置触发事件
|
||||
|
||||
@@ -64,6 +64,7 @@ public abstract class FlowNodeActivityBehavior<T> {
|
||||
.set("status", StatusEnum.FLOW_STATUS.code("节点完成"))
|
||||
.set("form_data", entity.getT().toString())
|
||||
.set("form_type",entity.getForm_type())
|
||||
.set("form_id",entity.getForm_id())
|
||||
.set("update_time", DateUtil.now()));
|
||||
this.leaveActivity(entity);
|
||||
//
|
||||
|
||||
@@ -17,7 +17,9 @@ import org.nl.wms.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBeh
|
||||
import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor;
|
||||
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.EventNode.EndEvent;
|
||||
import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService;
|
||||
import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
|
||||
@@ -25,6 +27,7 @@ import org.nl.wms.flow_manage.monitor.event.FlowEndEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
/*
|
||||
@@ -47,11 +50,12 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior<JSONObjec
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
//流程结束:判断是否是子流程,是的话调用父流程
|
||||
JSONObject data = entity.getT();
|
||||
ExecutionDto executionDto = data.toJavaObject(ExecutionDto.class);
|
||||
|
||||
EndEvent endFlow = (EndEvent)entity.getCurrentFlowElement();
|
||||
//后续监听器通过流程中监听事件配置
|
||||
BussEventMulticaster.Publish(FlowEndEvent.builder().dto(executionDto)
|
||||
BussEventMulticaster.Publish(FlowEndEvent.builder().dto(data.toJavaObject(ExecutionDto.class))
|
||||
.form_type(entity.getForm_type())
|
||||
.proc_inst_id(entity.getProc_inst_id())
|
||||
.finish(endFlow.getFinish())
|
||||
.form_id(entity.getForm_id()).build());
|
||||
}
|
||||
|
||||
@@ -82,7 +86,10 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior<JSONObjec
|
||||
//通过该标识触发
|
||||
flowNode.setPassNode(Boolean.TRUE);
|
||||
entity.setT(parent.getForm_data());
|
||||
entity.setForm_type(parent.getForm_type());
|
||||
entity.setForm_id(parent.getForm_id());
|
||||
entity.setCurrentFlowElement(flowNode);
|
||||
entity.setDeploymentId(parent.getDeployment_id());
|
||||
entity.setProc_inst_id(parent.getProc_inst_id());
|
||||
entity.setParent_id(parent.getParent_id());
|
||||
}
|
||||
|
||||
@@ -61,10 +61,6 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
.eq("form_type", entity.getForm_type()));
|
||||
BmFormStruc targetStruc = iBmFormStrucService.getOne(new QueryWrapper<BmFormStruc>()
|
||||
.eq("form_type", currentNode.getForm_type()));
|
||||
// if (sourceStruc==null || targetStruc==null){
|
||||
// throw new BadRequestException("【flow】当前节点表单类型未定义");
|
||||
// }
|
||||
//TEST:这部分数据放在框架中,每个节点都需要
|
||||
entity.setForm_struc(sourceStruc);
|
||||
//怕断是否指定数据源:
|
||||
JSONObject sourceData = entity.getT();
|
||||
@@ -93,7 +89,7 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
mst_json.put("create_time",DateUtil.now());
|
||||
mst_json.put("create_name",SecurityUtils.getCurrentNickName());
|
||||
mst_json.put("status",StatusEnum.FORM_STATUS.code("生成"));
|
||||
mst_json.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("生产入库"));
|
||||
mst_json.put("bill_type",currentNode.getBill_type());
|
||||
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);
|
||||
@@ -116,8 +112,8 @@ public class FormActivityBehavior extends FlowNodeActivityBehavior<JSONObject> {
|
||||
}
|
||||
iostorinvService.save(mst);
|
||||
entity.setT(handler);
|
||||
entity.setForm_id(entity.getForm_id());
|
||||
entity.setForm_type(entity.getForm_type());
|
||||
entity.setForm_id(handler.getString("form_type"));
|
||||
entity.setForm_type(handler.getString("form_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ public class ServerTaskActivityBehavior extends FlowNodeActivityBehavior<JSONObj
|
||||
}
|
||||
JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity, null);
|
||||
entity.setT(handler);
|
||||
entity.setForm_id(entity.getForm_id());
|
||||
entity.setForm_type(entity.getForm_type());
|
||||
entity.setForm_id(handler.getString("form_type"));
|
||||
entity.setForm_type(handler.getString("form_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService;
|
||||
import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -29,6 +30,8 @@ public class StartEventActivityBehavior extends FlowNodeActivityBehavior {
|
||||
|
||||
@Autowired
|
||||
IActReProcdefService deploymentService;
|
||||
@Autowired
|
||||
IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity entity) {
|
||||
@@ -54,6 +57,14 @@ public class StartEventActivityBehavior extends FlowNodeActivityBehavior {
|
||||
execution.setCreate_time(DateUtil.now());
|
||||
execution.setStatus(StatusEnum.FLOW_STATUS.code("启动"));
|
||||
iActRuExecutionService.save(execution);
|
||||
StringBuffer sql = new StringBuffer();
|
||||
sql.append("update ")
|
||||
.append(entity.getForm_type())
|
||||
.append(" set status = ")
|
||||
.append("'"+StatusEnum.FORM_STATUS.code("执行中")+"'")
|
||||
.append(" where id = ")
|
||||
.append("'"+entity.getForm_id()+"'");
|
||||
iPmFormDataService.dynamicSql(sql.toString());
|
||||
Consumer callback = entity.getCallback();
|
||||
if (callback!=null){
|
||||
callback.accept(execution.getProc_inst_id());
|
||||
|
||||
@@ -101,8 +101,8 @@ public class StrucFormActivityBehavior extends FlowNodeActivityBehavior<JSONObje
|
||||
}
|
||||
iPmFormDataService.save(mst);
|
||||
entity.setT(handler);
|
||||
entity.setForm_id(entity.getForm_id());
|
||||
entity.setForm_type(entity.getForm_type());
|
||||
entity.setForm_id(handler.getString("form_type"));
|
||||
entity.setForm_type(handler.getString("form_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ public class CommandExecutor {
|
||||
//线程变量
|
||||
public static ThreadLocal<FlowableEngineAgenda> agenda = new ThreadLocal();
|
||||
//不同类型处理器
|
||||
public static Map<String, FlowNodeActivityBehavior> activityBehaviorMap = new HashMap<>();
|
||||
public static Map<String, FlowNodeActivityBehavior> Activity_BehaviorMap = new HashMap<>();
|
||||
//指令拦截器链
|
||||
private CommandInterceptor first;
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ContinuOperation extends AbstractOperation {
|
||||
//TODO:执行监听器
|
||||
//处理当前节点业务,更新当前流程执行id:获取当前流程节点对应的处理器
|
||||
try {
|
||||
CommandExecutor.activityBehaviorMap.get(currentFlowElement.getType()).activity(execution);
|
||||
CommandExecutor.Activity_BehaviorMap.get(currentFlowElement.getType()).activity(execution);
|
||||
}catch (Exception ex){
|
||||
//如果节点处理错误需要更新当前流程实例信息
|
||||
System.out.println(ex.getMessage());
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.nl.wms.flow_manage.flow.framework.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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;
|
||||
@@ -13,7 +15,7 @@ import java.util.function.Consumer;
|
||||
* @Date 2024/3/18 13:15
|
||||
* 流程执行相关参数
|
||||
*/
|
||||
@Getter
|
||||
@Data
|
||||
public class ExecutionEntity<T> implements Cloneable{
|
||||
|
||||
/**
|
||||
@@ -52,6 +54,8 @@ public class ExecutionEntity<T> implements Cloneable{
|
||||
* 源单id
|
||||
*/
|
||||
protected String form_id;
|
||||
|
||||
//没有用到?
|
||||
protected BmFormStruc form_struc;
|
||||
|
||||
//回调执行
|
||||
@@ -65,42 +69,13 @@ public class ExecutionEntity<T> implements Cloneable{
|
||||
this.activityName = currentFlowElement.getName();
|
||||
}
|
||||
|
||||
public void setProc_inst_id(String proc_inst_id) {
|
||||
this.proc_inst_id = proc_inst_id;
|
||||
}
|
||||
|
||||
public void setStartActivityId(String startActivityId) {
|
||||
this.startActivityId = startActivityId;
|
||||
}
|
||||
|
||||
public void setDeploymentId(String deploymentId) {
|
||||
this.deploymentId = deploymentId;
|
||||
}
|
||||
|
||||
public void setForm_type(String form_type) {
|
||||
if (StringUtils.isEmpty(form_type)){
|
||||
throw new BadRequestException("流程执行异常:没有设置form_type");
|
||||
}
|
||||
this.form_type = form_type;
|
||||
}
|
||||
|
||||
public void setForm_struc(BmFormStruc form_struc) {
|
||||
this.form_struc = form_struc;
|
||||
}
|
||||
|
||||
public void setForm_id(String form_id) {
|
||||
this.form_id = form_id;
|
||||
}
|
||||
|
||||
public void setT(T t) {
|
||||
this.t = t;
|
||||
}
|
||||
|
||||
public void setParent_id(String parent_id) {
|
||||
this.parent_id = parent_id;
|
||||
}
|
||||
|
||||
public void setCallback(Consumer callback) {
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object clone() {
|
||||
try {
|
||||
|
||||
@@ -24,6 +24,7 @@ public class EndEvent extends FlowNode {
|
||||
|
||||
protected String conditionExpression;
|
||||
protected String skipExpression;
|
||||
protected List<String> finish;
|
||||
|
||||
protected FlowElement sourceFlowElement;
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@ public class Form extends ExecuteTask {
|
||||
* 表单类型
|
||||
*/
|
||||
private String form_type;
|
||||
/**
|
||||
* 业务类型
|
||||
*/
|
||||
private String bill_type;
|
||||
/**
|
||||
* 表单处理类别
|
||||
*/
|
||||
|
||||
@@ -66,15 +66,15 @@ public class DecisionHandler extends TypeHandler<JSONObject,ExecutionEntity<JSON
|
||||
List<StIvtStructattr> list = SpringContextHolder.getBean(DecisionHandler.class).dispense(params, item_json);
|
||||
//更新仓位,更新数据
|
||||
String collect = list.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(","));
|
||||
System.out.println("更新明细id"+item_json.getString("id"));
|
||||
StringBuffer sql = new StringBuffer();
|
||||
sql.append("update ")
|
||||
.append(flow.getForm_type())
|
||||
.append(" set struct_code = ")
|
||||
.append("'"+collect+"'")
|
||||
.append(" where id = ")
|
||||
.append("'"+item_json.getString("id")+"'");
|
||||
iPmFormDataService.dynamicSql(sql.toString());
|
||||
System.out.println(flow.getForm_type()+"更新明细id"+item_json.getString("id"));
|
||||
// StringBuffer sql = new StringBuffer();
|
||||
// sql.append("update ")
|
||||
// .append(flow.getForm_type())
|
||||
// .append(" set struct_code = ")
|
||||
// .append("'"+collect+"'")
|
||||
// .append(" where id = ")
|
||||
// .append("'"+item_json.getString("id")+"'");
|
||||
// iPmFormDataService.dynamicSql(sql.toString());
|
||||
item_json.put("struct_code",collect);
|
||||
return t;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
@@ -18,20 +19,20 @@ import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/3/21 15:16
|
||||
*/
|
||||
@Service("mapping")
|
||||
@Slf4j
|
||||
public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
@Autowired
|
||||
IBmFormStrucService iBmFormStrucService;
|
||||
@Override
|
||||
public JSONObject handler(List<String> param, JSONObject data, BmFormStruc form_struc) {
|
||||
log.info("映射信息:数据:{},映射关系:{},目标表结构:{}",data.toJSONString(),param.toString(),form_struc.getForm_type()+"_"+form_struc.getForm_param().toJSONString());
|
||||
JSONObject resultT = new JSONObject();
|
||||
|
||||
JSONObject mapping = JSONObject.parseObject(param.size()==1?param.get(0):param.remove(0));
|
||||
@@ -49,30 +50,41 @@ public class MappingHandler extends TypeHandler<JSONObject, JSONObject> {
|
||||
JSONObject t = new JSONObject();
|
||||
//查询目标表字段
|
||||
//基础字段映射:如果只有一个就不迭代
|
||||
Map<String, String> spelMap = new HashMap<>();
|
||||
for (String field : mapping.keySet()) {
|
||||
String value = sourceFormData.getString(mapping.getString(field));
|
||||
t.put(field,value);
|
||||
String skip = mapping.getString(field);
|
||||
//判断是否走表达式映射:表达式映射都是按#M开头
|
||||
if (skip.contains("#M")){
|
||||
spelMap.put(field,skip);
|
||||
}else {
|
||||
t.put(field,sourceFormData.getString(skip));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
t.putAll(SpelUtil.parse(sourceFormData, spelMap));
|
||||
//查询表单配置表,获取自定义json:自定义字段参数获取
|
||||
JSONObject form_param = form_struc.getForm_param();
|
||||
if (form_param!=null){
|
||||
Map<String, String> formDataSpelMap = new HashMap<>();
|
||||
JSONObject form_data = new JSONObject();
|
||||
for (String item : form_param.keySet()) {
|
||||
String value = "";
|
||||
if (formDataMapping!=null){
|
||||
JSONObject formDataMappingJson = (JSONObject) formDataMapping;
|
||||
String mappingConfig = formDataMappingJson.getString(item);
|
||||
if (StringUtils.isNotEmpty(mappingConfig)){
|
||||
value = sourceFormData.getString(mappingConfig);
|
||||
String skip = formDataMappingJson.getString(item);
|
||||
if (StringUtils.isNotEmpty(skip)){
|
||||
if (skip.contains("#M")){
|
||||
formDataSpelMap.put(item,skip);
|
||||
continue;
|
||||
}else {
|
||||
value = sourceFormData.getString(skip);
|
||||
}
|
||||
}
|
||||
}
|
||||
form_data.put(item,value);
|
||||
}
|
||||
form_data.putAll(SpelUtil.parse(sourceFormData, formDataSpelMap));
|
||||
t.put("form_data",form_data);
|
||||
}
|
||||
Object itemSkip = param.remove("skipExpression");
|
||||
JSONArray item = new JSONArray();
|
||||
if (data.getJSONArray("item") == null){
|
||||
item.add(data);
|
||||
|
||||
@@ -15,9 +15,8 @@ import java.util.function.Consumer;
|
||||
**/
|
||||
public interface IFlowOperationService {
|
||||
|
||||
String startUp(String model_key, Consumer callback,ExecutionDto dto);
|
||||
String startUp(String model_key, Consumer callback,ExecutionDto dto,JSONObject auxParam);
|
||||
|
||||
Boolean startFormFlow(StartProcessInstanceVo params);
|
||||
|
||||
Boolean flowConfirm(String proc_inst_id,JSONObject auxParam);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ 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;
|
||||
@@ -24,7 +23,6 @@ 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;
|
||||
@@ -49,9 +47,11 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
||||
private CommandExecutor commandExecutor;
|
||||
|
||||
@Override
|
||||
public String startUp(String model_key, Consumer callback, ExecutionDto dto) {
|
||||
public String startUp(String model_key, Consumer callback, ExecutionDto dto, JSONObject auxParam) {
|
||||
ActRuExecution one = iActRuExecutionService.getOne(new QueryWrapper<ActRuExecution>()
|
||||
.eq("form_type", dto.getForm_type()).eq("form_id", dto.getForm_id()));
|
||||
.eq("form_type", dto.getForm_type())
|
||||
.eq("form_id", dto.getForm_id())
|
||||
.lt("status",StatusEnum.FLOW_STATUS.code("完成")));
|
||||
if (one!=null){
|
||||
throw new BadRequestException("当前单据流程已存在:"+dto.getForm_type()+"_"+dto.getForm_id());
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
||||
String model_json_string = deployment.getModel_editor_json();
|
||||
//转流程实例:
|
||||
JSONObject model_json = JSONObject.parseObject(model_json_string);
|
||||
BpmnModel bpmnModel = bpmnJSONConverter.convertToBpmnModel(deployment.getModel_key(), deployment.getVersion(), model_json);
|
||||
BpmnModel bpmnModel = bpmnJSONConverter.convertToBpmnModel(deployment.getModel_key(), deployment.getVersion(), model_json,auxParam);
|
||||
System.out.println(bpmnModel.getNodeFlow().size());
|
||||
//创建流程参数ExecutionEntity:执行流程
|
||||
ExecutionEntity entity = new ExecutionEntity();
|
||||
@@ -77,17 +77,6 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean startFormFlow(StartProcessInstanceVo params) {
|
||||
JSONObject formData = params.getFormData();
|
||||
//查询当前部署的流程:ACT_RE_PROCDEF
|
||||
ActReProcdef deployment = actReProcdefService.getOne(new LambdaUpdateWrapper<ActReProcdef>().eq(ActReProcdef::getModel_key, params.getForm_type()));
|
||||
if (deployment==null){
|
||||
throw new BadRequestException("当前单据类型未配置业务流程");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean flowConfirm(String proc_inst_id,JSONObject auxParam) {
|
||||
|
||||
@@ -23,6 +23,6 @@ public class FlowEventListener extends AbstraceListener<FlowStartEvent> {
|
||||
protected String doEvent(FlowStartEvent event) {
|
||||
String s = JSON.toJSONString(event.getDto());
|
||||
log.info("触发流程"+ s);
|
||||
return flowOperationService.startUp(event.getModel_key(), event.getCallback(), event.getDto());
|
||||
return flowOperationService.startUp(event.getModel_key(), event.getCallback(), event.getDto(), event.getAuxParam());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,9 +21,13 @@ import java.util.function.Consumer;
|
||||
public class FlowEndEvent extends PublishEvent {
|
||||
//数据传输
|
||||
private ExecutionDto dto;
|
||||
|
||||
//当前表单
|
||||
private String form_type;
|
||||
|
||||
//当前表单id
|
||||
private String form_id;
|
||||
//流程实例
|
||||
private String proc_inst_id;
|
||||
//流程实例
|
||||
private List<String> finish;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.flow_manage.monitor.event;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.publish.event.PublishEvent;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
|
||||
@@ -21,8 +22,14 @@ public class FlowStartEvent extends PublishEvent {
|
||||
|
||||
private String model_key;
|
||||
|
||||
public FlowStartEvent(String model_key, Consumer callback) {
|
||||
/**
|
||||
* 流程实例全局数据
|
||||
*/
|
||||
private JSONObject auxParam;
|
||||
|
||||
public FlowStartEvent(String model_key, Consumer callback,JSONObject auxParam) {
|
||||
this.model_key = model_key;
|
||||
this.auxParam = auxParam;
|
||||
this.setCallback(callback);
|
||||
}
|
||||
|
||||
@@ -30,7 +37,11 @@ public class FlowStartEvent extends PublishEvent {
|
||||
return model_key;
|
||||
}
|
||||
|
||||
public FlowStartEvent build(String form_type, String form_id,String source_form_type,String source_form_id, JSONObject data){
|
||||
public JSONObject getAuxParam() {
|
||||
return auxParam;
|
||||
}
|
||||
|
||||
public FlowStartEvent build(String form_type, String form_id, String source_form_type, String source_form_id, JSONObject data){
|
||||
if (dto == null){
|
||||
dto = ExecutionDto.builder()
|
||||
.form_id(form_id)
|
||||
@@ -41,19 +52,19 @@ public class FlowStartEvent extends PublishEvent {
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public FlowStartEvent build(String form_type, List<Map> datas){
|
||||
public <Z> FlowStartEvent build(String form_type, List<Z> datas){
|
||||
if (dto == null){
|
||||
throw new BadRequestException("主数据参数未构建");
|
||||
}
|
||||
List<ExecutionDto> item =new ArrayList();
|
||||
for (Map data : datas) {
|
||||
String form_id = (String)data.get("form_id");
|
||||
String source_form_id = (String)data.get("source_form_id");
|
||||
String source_form_type = (String)data.get("source_form_type");
|
||||
JSONObject data_json = (JSONObject)data.get("t");
|
||||
for (Z z : datas) {
|
||||
JSONObject data = (JSONObject)JSONObject.toJSON(z);
|
||||
String form_id = (String)data.getString("form_id");
|
||||
String source_form_id = (String)data.getString("source_form_id");
|
||||
String source_form_type = (String)data.getString("source_form_type");
|
||||
ExecutionDto build = ExecutionDto.builder()
|
||||
.form_id(form_id)
|
||||
.form_type(form_type).source_form_id(source_form_id).source_form_type(source_form_type).t(data_json).build();
|
||||
.form_type(form_type).source_form_id(source_form_id).source_form_type(source_form_type).t(data).build();
|
||||
item.add(build);
|
||||
}
|
||||
dto.setItem(item);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class StIvtIostorinvdtl implements Serializable {
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private BigDecimal plan_qty;
|
||||
private BigDecimal qty;
|
||||
|
||||
|
||||
/**
|
||||
@@ -95,10 +95,6 @@ public class StIvtIostorinvdtl implements Serializable {
|
||||
* 仓库
|
||||
*/
|
||||
private String stor_code;
|
||||
/**
|
||||
* 仓位编码
|
||||
*/
|
||||
private String struct_code;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -13,10 +13,7 @@ import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDtl;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor.IStIvtIostorinvOutService;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor.dao.StIvtIostorinvOut;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor.dao.mapper.StIvtIostorinvOutMapper;
|
||||
@@ -135,7 +132,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
,"source_form_id",dtl.getSource_form_id()));
|
||||
}
|
||||
}
|
||||
BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_out", null)
|
||||
BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_out", null,null)
|
||||
.build("st_ivt_iostorinv_out",iostorinv.getId(),iostorinv.getSource_form_type(),iostorinv.getSource_form_id(),form)
|
||||
.build("st_ivt_iostorinvdtl_out",dtlJson)
|
||||
,true);
|
||||
|
||||
@@ -1,26 +1,15 @@
|
||||
package org.nl.wms.stor_manage.io.service.out.iostor_dtl.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
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.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
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.nl.wms.stor_manage.io.service.out.iostor_dtl.dao.StIvtIostorinvdtlOut;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor_dtl.dao.mapper.StIvtIostorinvdtlOutMapper;
|
||||
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.StructattrVechielDto;
|
||||
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.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.stor_manage.monitor.listener;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -10,14 +11,20 @@ import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.publish.AbstraceListener;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.IFlowOperationService;
|
||||
import org.nl.wms.flow_manage.flow.service.history.IActHiExecutionService;
|
||||
import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowEndEvent;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
|
||||
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor.IStIvtIostorinvOutService;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor.dao.StIvtIostorinvOut;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
@@ -28,28 +35,39 @@ import org.springframework.stereotype.Component;
|
||||
public class FlowEndEventListener extends AbstraceListener<FlowEndEvent> {
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvInService iStIvtIostorinvInService;
|
||||
private IActHiExecutionService iActHiExecutionService;
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvOutService iStIvtIostorinvOutService;
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
|
||||
@Override
|
||||
protected String doEvent(FlowEndEvent event) {
|
||||
ExecutionDto dto = event.getDto();
|
||||
String form_type = dto.getForm_type();
|
||||
String form_id = dto.getForm_id();
|
||||
if (StringUtils.isEmpty(form_type)){
|
||||
//更新所有流程过程中的单据为完成
|
||||
String proc_inst_id = event.getProc_inst_id();
|
||||
List<String> finish = event.getFinish();
|
||||
if (StringUtils.isEmpty(proc_inst_id)){
|
||||
throw new BadRequestException("当前结束流程数据异常");
|
||||
}
|
||||
if (form_type.equals("st_ivt_iostorinv_in")){
|
||||
iStIvtIostorinvInService.update(new UpdateWrapper<StIvtIostorinvIn>()
|
||||
.set("status", StatusEnum.FORM_STATUS.code("完成"))
|
||||
.set("update_time", DateUtil.now()).eq("id",form_id));
|
||||
if (!CollectionUtils.isEmpty(finish)){
|
||||
//更新所有单据状态
|
||||
List<ActHiExecution> historys = iActHiExecutionService.list(new QueryWrapper<ActHiExecution>()
|
||||
.eq("proc_inst_id", proc_inst_id)
|
||||
.in("form_type",finish)
|
||||
.select("activity_id","update_time","form_type","form_id"));
|
||||
for (ActHiExecution history : historys) {
|
||||
StringBuffer sql = new StringBuffer();
|
||||
sql.append("update ")
|
||||
.append(history.getForm_type())
|
||||
.append(" set status = ")
|
||||
.append("'"+StatusEnum.FORM_STATUS.code("完成")+"'")
|
||||
.append(" where id = ")
|
||||
.append("'"+history.getForm_id()+"'");
|
||||
iPmFormDataService.dynamicSql(sql.toString());
|
||||
}
|
||||
if (form_type.equals("st_ivt_iostorinv_out")){
|
||||
iStIvtIostorinvOutService.update(new UpdateWrapper<StIvtIostorinvOut>()
|
||||
.set("status", StatusEnum.FORM_STATUS.code("完成"))
|
||||
.set("update_time", DateUtil.now()).eq("id",form_id));
|
||||
|
||||
}
|
||||
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,25 +28,25 @@ public class StructEventListener extends AbstraceListener<StructEvent> {
|
||||
@Override
|
||||
protected String doEvent(StructEvent event) {
|
||||
//根据不同的task_type获取对应出入库类型
|
||||
String task_status = event.getTask_status();
|
||||
String status = event.getStatus();
|
||||
String task_type = event.getTask_type();
|
||||
|
||||
if (task_status.equals(StatusEnum.FORM_STATUS.code("生成"))){
|
||||
if (status.equals(StatusEnum.FORM_STATUS.code("生成"))){
|
||||
|
||||
}
|
||||
if (task_status.equals(StatusEnum.FORM_STATUS.code("执行中"))){
|
||||
if (status.equals(StatusEnum.FORM_STATUS.code("执行中"))){
|
||||
|
||||
}
|
||||
if (task_status.equals(StatusEnum.FORM_STATUS.code("完成"))){
|
||||
if (status.equals(StatusEnum.FORM_STATUS.code("完成"))){
|
||||
//更新出入库单明细状态;如果单据类型是其他的则从from-data表中更新
|
||||
Boolean in = StatusEnum.IOBILL_TYPE_IN.check(task_type);
|
||||
structattrService.changeStruct(in?event.getPoint_code2():event.getPoint_code1(),in?event.getVehicle_code():null,task_type);
|
||||
}
|
||||
if (task_status.equals(StatusEnum.FORM_STATUS.code("取消"))){
|
||||
if (status.equals(StatusEnum.FORM_STATUS.code("取消"))){
|
||||
|
||||
}
|
||||
iostorinvdtlService.update(new UpdateWrapper<StIvtIostorinvdtl>()
|
||||
.set("status",task_status).eq("id",event.getSource_form_id()));
|
||||
.set("status",status).eq("id",event.getSource_form_id()));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
FROM
|
||||
st_ivt_structattr struct
|
||||
left join st_ivt_sectattr sect on sect.sect_id = struct.sect_code
|
||||
left join st_ivt_bsrealstorattr stor on sect.stor_id = stor.stor_id
|
||||
left join st_ivt_bsrealstorattr stor on sect.stor_id = stor.id
|
||||
<where>
|
||||
<if test="query.is_used == true">
|
||||
and struct.is_used = '0'
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
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.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dao.MdPbVehicleMater;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
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.md_manage.vehicleGroup.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleGroup.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
|
||||
import org.nl.wms.stor_manage.io.service.in.iostor_dtl.dao.StIvtIostorinvdtl;
|
||||
import org.nl.wms.stor_manage.io.service.out.iostor_dtl.dao.StIvtIostorinvdtlOut;
|
||||
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;
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.nl.common.anno.Log;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.system_manage.service.dict.ISysDictService;
|
||||
@@ -136,5 +137,18 @@ public class SysDictController {
|
||||
}
|
||||
return new ResponseEntity<>(items, HttpStatus.OK);
|
||||
}
|
||||
@GetMapping("/getTableEnum")
|
||||
@Log("获取acs任务类型列表")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getTableEnum(@RequestParam Map criteria) {
|
||||
Object type = criteria.get("code");
|
||||
Object label = criteria.get("label");
|
||||
Object value = criteria.get("value");
|
||||
if (type == null||label == null||value == null){
|
||||
throw new BadRequestException("参数不能为空");
|
||||
}
|
||||
List<Map> maps = dictService.dynamicTableEnum((String) type, (String) label, (String) value);
|
||||
return new ResponseEntity<>(maps, HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,4 +78,8 @@ public interface ISysDictService extends IService<Dict> {
|
||||
* @param id
|
||||
*/
|
||||
void deleteDetail(String id);
|
||||
/**
|
||||
* 动态枚举信息
|
||||
*/
|
||||
List<Map> dynamicTableEnum(String table,String label,String value);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package org.nl.wms.system_manage.service.dict.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.nl.wms.system_manage.service.dict.dao.Dict;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 字典表 Mapper 接口
|
||||
@@ -13,4 +18,7 @@ import org.nl.wms.system_manage.service.dict.dao.Dict;
|
||||
*/
|
||||
public interface SysDictMapper extends BaseMapper<Dict> {
|
||||
|
||||
@Select( "select ${label} as label,${value} as value from ${table}")
|
||||
List<Map> dynamicTableEnum(@Param("table") String table, @Param("label")String label, @Param("value")String value);
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -183,4 +184,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
|
||||
sysDictMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> dynamicTableEnum(String table, String label, String value) {
|
||||
if (StringUtils.isEmpty(table)||StringUtils.isEmpty(label)||StringUtils.isEmpty(value)){
|
||||
throw new BadRequestException("参数不能为空");
|
||||
}
|
||||
return this.sysDictMapper.dynamicTableEnum(table,label,value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3307}/${DB_NAME:zjhs_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
|
||||
|
||||
33
wms_pro/qd/src/components/TableEnum/TableEnum.js
Normal file
33
wms_pro/qd/src/components/TableEnum/TableEnum.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import Vue from 'vue'
|
||||
import { tableEnum as getEnumDetail } from '@/views/system/dict/enumDetail'
|
||||
|
||||
export default class TableEnum {
|
||||
constructor(tableEnum) {
|
||||
this.tableEnum = tableEnum
|
||||
}
|
||||
|
||||
async init(names, completeCallback) {
|
||||
if (names === undefined || name === null) {
|
||||
throw new Error('need TableEnum names')
|
||||
}
|
||||
const ps = []
|
||||
names.forEach(n => {
|
||||
let split = n.split('#');
|
||||
let code = split[0];
|
||||
let label = split[1];
|
||||
let value = split[2];
|
||||
Vue.set(this.tableEnum.tableEnum, code, {})
|
||||
Vue.set(this.tableEnum.label, code, {})
|
||||
Vue.set(this.tableEnum, code, [])
|
||||
ps.push(getEnumDetail({'code':code,'label':label,'value':value}).then(data => {
|
||||
this.tableEnum[code].splice(0, 0, ...data)
|
||||
data.forEach(d => {
|
||||
Vue.set(this.tableEnum.tableEnum[code], d.value, d)
|
||||
Vue.set(this.tableEnum.label[code], d.value, d.label)
|
||||
})
|
||||
}))
|
||||
})
|
||||
await Promise.all(ps)
|
||||
completeCallback()
|
||||
}
|
||||
}
|
||||
29
wms_pro/qd/src/components/TableEnum/index.js
Normal file
29
wms_pro/qd/src/components/TableEnum/index.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import TableEnum from './TableEnum'
|
||||
|
||||
const install = function(Vue) {
|
||||
Vue.mixin({
|
||||
data() {
|
||||
if (this.$options.tableEnums instanceof Array) {
|
||||
const tableEnum = {
|
||||
tableEnum: {},
|
||||
label: {}
|
||||
}
|
||||
return {
|
||||
tableEnum
|
||||
}
|
||||
}
|
||||
return {}
|
||||
},
|
||||
created() {
|
||||
if (this.$options.tableEnums instanceof Array) {
|
||||
new TableEnum(this.tableEnum).init(this.$options.tableEnums, () => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('dictReady')
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default { install }
|
||||
@@ -16,6 +16,7 @@ import 'mavon-editor/dist/css/index.css'
|
||||
import dict from './components/Dict'
|
||||
// 数据字典
|
||||
import statusEnum from './components/StatusEnum'
|
||||
import tableEnum from './components/TableEnum'
|
||||
|
||||
import scroll from 'vue-seamless-scroll'
|
||||
// 权限指令
|
||||
@@ -57,6 +58,7 @@ Vue.use(mavonEditor)
|
||||
Vue.use(permission)
|
||||
Vue.use(dict)
|
||||
Vue.use(statusEnum)
|
||||
Vue.use(tableEnum)
|
||||
Vue.use(VueBus)
|
||||
|
||||
// 全局设置控件样式https://codeantenna.com/a/0IN5FMJk5h
|
||||
|
||||
@@ -11,4 +11,12 @@ export function get(code) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { get }
|
||||
export function tableEnum(params) {
|
||||
return request({
|
||||
url: 'api/dict/getTableEnum',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
export default { get,tableEnum }
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in stors"
|
||||
:key="item.stor_id"
|
||||
:label="item.stor_name"
|
||||
:value="item.stor_id"
|
||||
v-for="item in tableEnum.st_ivt_bsrealstorattr"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -71,17 +71,17 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="归属仓库" prop="stor_id">
|
||||
<el-form-item label="归属仓库" prop="id">
|
||||
<el-select
|
||||
v-model="form.stor_id"
|
||||
v-model="form.id"
|
||||
placeholder=""
|
||||
style="width: 200px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in stors"
|
||||
:key="item.stor_id"
|
||||
v-for="item in tableEnum.st_ivt_bsrealstorattr"
|
||||
:key="item.id"
|
||||
:label="item.stor_name"
|
||||
:value="item.stor_id"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -201,7 +201,7 @@ const defaultForm = {
|
||||
sect_name: null,
|
||||
simple_name: null,
|
||||
sect_type_attr: null,
|
||||
stor_id: null,
|
||||
id: null,
|
||||
stor_type: null,
|
||||
capacity: null,
|
||||
width: null,
|
||||
@@ -231,6 +231,7 @@ const defaultForm = {
|
||||
export default {
|
||||
name: 'Sectattr',
|
||||
dicts: ['st_sect_type', 'is_used'],
|
||||
tableEnums: [ 'st_ivt_bsrealstorattr#stor_name#id' ],
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
@@ -265,7 +266,6 @@ export default {
|
||||
}
|
||||
}
|
||||
return {
|
||||
stors: [],
|
||||
permission: {
|
||||
add: ['admin', 'user:add'],
|
||||
edit: ['admin', 'user:edit'],
|
||||
@@ -281,7 +281,7 @@ export default {
|
||||
sect_type_attr: [
|
||||
{ required: true, message: '库区类型不能为空', trigger: 'blur' }
|
||||
],
|
||||
stor_id: [
|
||||
id: [
|
||||
{ required: true, message: '仓库标识不能为空', trigger: 'blur' }
|
||||
],
|
||||
capacity: [
|
||||
@@ -294,11 +294,6 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
crudStorattr.getStor({}).then(res => {
|
||||
this.stors = res
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
|
||||
@@ -186,7 +186,7 @@ import { getDepts, getDeptSuperior } from '@/views/system/dept/dept'
|
||||
import { isvalidPhone } from '@/utils/validate'
|
||||
|
||||
const defaultForm = {
|
||||
stor_id: null,
|
||||
id: null,
|
||||
stor_code: null,
|
||||
stor_name: null,
|
||||
simple_name: null,
|
||||
@@ -231,8 +231,8 @@ export default {
|
||||
title: '仓库',
|
||||
optShow: { add: true, reset: true },
|
||||
url: 'api/stIvtBsrealstorattr',
|
||||
idField: 'stor_id',
|
||||
sort: 'stor_id,desc',
|
||||
idField: 'id',
|
||||
sort: 'id,desc',
|
||||
crudMethod: { ...crudStorattr }
|
||||
})
|
||||
},
|
||||
|
||||
@@ -9,15 +9,21 @@
|
||||
label-width="80px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="所属库区">
|
||||
<el-cascader
|
||||
placeholder="所属库区"
|
||||
:options="sects"
|
||||
:props="{ checkStrictly: true }"
|
||||
<el-form-item label="所属仓库">
|
||||
<el-select
|
||||
v-model="query.stor_id"
|
||||
clearable
|
||||
class="filter-item"
|
||||
@change="sectQueryChange"
|
||||
placeholder="所属仓库"
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in tableEnum.st_ivt_bsrealstorattr"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="锁定类型">
|
||||
<el-select
|
||||
@@ -106,7 +112,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="载具号">
|
||||
<label slot="label">载 具 号:</label>
|
||||
<el-input v-model="form.storagevehicle_code" style="width: 200px;" />
|
||||
<el-input v-model="form.vehicle_code" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -201,7 +207,7 @@
|
||||
<el-table-column prop="struct_name" label="仓位名称" :min-width="flexWidth('struct_name',crud.data,'仓位名称')" />
|
||||
<el-table-column prop="sect_name" label="所属库区" width="150" />
|
||||
<el-table-column prop="stor_name" label="所属仓库" width="150" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
|
||||
<el-table-column prop="vehicle_code" label="载具号" :min-width="flexWidth('vehicle_code',crud.data,'载具号')" />
|
||||
<el-table-column prop="is_temp" label="是否临时" width="150" >
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_temp ? '是' : '否' }}
|
||||
@@ -272,7 +278,7 @@ const defaultForm = {
|
||||
sect_id: null,
|
||||
sect_code: null,
|
||||
sect_name: null,
|
||||
stor_id: null,
|
||||
id: null,
|
||||
stor_code: null,
|
||||
stor_name: null,
|
||||
stor_type: null,
|
||||
@@ -311,6 +317,7 @@ const defaultForm = {
|
||||
export default {
|
||||
name: 'Structattr',
|
||||
dicts: ['ST_HEIGHT_TYPE', 'is_used', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'placement_type'],
|
||||
tableEnums: [ 'st_ivt_bsrealstorattr#stor_name#id' ],
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
@@ -363,7 +370,7 @@ export default {
|
||||
sect_id: [
|
||||
{ required: true, message: '库区标识不能为空', trigger: 'blur' }
|
||||
],
|
||||
stor_id: [
|
||||
id: [
|
||||
{ required: true, message: '仓库标识不能为空', trigger: 'blur' }
|
||||
],
|
||||
capacity: [
|
||||
@@ -392,11 +399,6 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
crudSectattr.getSect().then(res => {
|
||||
this.sects = res.content
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="任务状态">
|
||||
<el-select
|
||||
v-model="query.task_status"
|
||||
v-model="query.status"
|
||||
multiple
|
||||
style="width: 360px"
|
||||
placeholder="任务状态"
|
||||
@@ -84,7 +84,7 @@
|
||||
<el-input v-model="form.task_code" style="width: 240px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务状态">
|
||||
<el-input v-model="form.task_status" style="width: 240px;"/>
|
||||
<el-input v-model="form.status" style="width: 240px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="点位1">
|
||||
<el-input v-model="form.point_code1" style="width: 240px;"/>
|
||||
@@ -127,9 +127,9 @@
|
||||
<el-table-column prop="task_code" show-overflow-tooltip show-tooltip-when-overflow label="任务编码"/>
|
||||
<el-table-column prop="task_type" show-overflow-tooltip show-tooltip-when-overflow label="任务类型"/>
|
||||
<el-table-column prop="acs_type" show-overflow-tooltip show-tooltip-when-overflow width="130" label="ACS任务类型"/>
|
||||
<el-table-column prop="task_status" show-overflow-tooltip show-tooltip-when-overflow label="任务状态">
|
||||
<el-table-column prop="status" show-overflow-tooltip show-tooltip-when-overflow label="任务状态">
|
||||
<template slot-scope="scope">
|
||||
{{ getStatusName(scope.row.task_status) }}
|
||||
{{ getStatusName(scope.row.status) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="task_step" show-overflow-tooltip show-tooltip-when-overflow width="130" label="任务执行步骤"/>
|
||||
@@ -157,14 +157,14 @@
|
||||
type="text"
|
||||
icon="el-icon-success"
|
||||
@click="doOperate(scope.row, 'a')"
|
||||
:disabled="scope.row.task_status==='5' || scope.row.task_status==='6'"
|
||||
:disabled="scope.row.status==='5' || scope.row.status==='6'"
|
||||
>完成
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-error"
|
||||
@click="doOperate(scope.row, 'b')"
|
||||
:disabled="scope.row.task_status==='5' || scope.row.task_status==='6'"
|
||||
:disabled="scope.row.status==='5' || scope.row.status==='6'"
|
||||
>取消
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -193,7 +193,7 @@ const defaultForm = {
|
||||
task_code: null,
|
||||
task_type: null,
|
||||
acs_type: null,
|
||||
task_status: null,
|
||||
status: null,
|
||||
task_step: null,
|
||||
group_code: null,
|
||||
point_code1: null,
|
||||
@@ -250,9 +250,9 @@ export default {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
handTaskStatus(value) {
|
||||
this.crud.query.more_task_status = null
|
||||
this.crud.query.more_status = null
|
||||
if (value) {
|
||||
this.crud.query.more_task_status = value.toString()
|
||||
this.crud.query.more_status = value.toString()
|
||||
}
|
||||
this.crud.toQuery()
|
||||
},
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
style="width: 185px;">
|
||||
<el-option
|
||||
v-for="item in storList"
|
||||
:key="item.stor_id"
|
||||
:key="item.id"
|
||||
:label="item.stor_code"
|
||||
:value="item.stor_code">
|
||||
</el-option>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
style="width: 185px;">
|
||||
<el-option
|
||||
v-for="item in storList"
|
||||
:key="item.stor_id"
|
||||
:key="item.id"
|
||||
:label="item.stor_code"
|
||||
:value="item.stor_code">
|
||||
</el-option>
|
||||
@@ -68,7 +68,7 @@
|
||||
<el-select v-model="form.stor_code" placeholder="请选择" style="width: 150px;">
|
||||
<el-option
|
||||
v-for="item in storList"
|
||||
:key="item.stor_id"
|
||||
:key="item.id"
|
||||
:label="item.stor_code"
|
||||
:value="item.stor_code">
|
||||
</el-option>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<el-form-item label="完结单据" prop="finish">
|
||||
<el-select multiple clearable v-model="formData.finish" placeholder="请选择" style="width: 370px;">
|
||||
<el-option
|
||||
v-for="item in formTypes"
|
||||
v-for="item in tableEnum.bm_form_struc"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
@@ -36,6 +36,7 @@
|
||||
<script>
|
||||
export default {
|
||||
name: '',
|
||||
tableEnums: [ 'bm_form_struc#form_type#form_type' ],
|
||||
props: {
|
||||
nodeData: Object,
|
||||
lf: Object || String,
|
||||
|
||||
@@ -116,7 +116,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: ['ST_INV_CP_IN_TYPE', 'product_area', 'IO_BILL_STATUS', 'status', 'SCH_TASK_TYPE_DTL', 'PCS_SAL_TYPE'],
|
||||
props: {
|
||||
dialogShow: {
|
||||
type: Boolean,
|
||||
@@ -186,8 +186,8 @@ export default {
|
||||
taskdtl_typeFormat(row) {
|
||||
return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type]
|
||||
},
|
||||
task_statusFormat(row) {
|
||||
return this.dict.label.task_status[row.task_status]
|
||||
statusFormat(row) {
|
||||
return this.dict.label.status[row.status]
|
||||
},
|
||||
work_statusFormat(row) {
|
||||
return this.dict.label.work_status[row.work_status]
|
||||
@@ -227,7 +227,7 @@ export default {
|
||||
}
|
||||
},
|
||||
formatStatus(row) {
|
||||
return this.dict.label.task_status[row.task_status]
|
||||
return this.dict.label.status[row.status]
|
||||
},
|
||||
formatBaseType(row) {
|
||||
return this.dict.label.PCS_SAL_TYPE[row.base_bill_type]
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库" prop="stor_id">
|
||||
<el-form-item label="仓库" prop="id">
|
||||
<label slot="label">仓库</label>
|
||||
<el-select
|
||||
v-model="form.stor_id"
|
||||
v-model="form.id"
|
||||
clearable
|
||||
class="filter-item"
|
||||
style="width: 210px"
|
||||
@@ -57,9 +57,9 @@
|
||||
>
|
||||
<el-option
|
||||
v-for="item in storlist"
|
||||
:key="item.stor_id"
|
||||
:key="item.id"
|
||||
:label="item.stor_name"
|
||||
:value="item.stor_id"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -278,7 +278,7 @@ const defaultForm = {
|
||||
bill_type: '',
|
||||
remark: '',
|
||||
workshop_id: '',
|
||||
stor_id: '',
|
||||
id: '',
|
||||
biz_date: new Date(),
|
||||
create_mode: '',
|
||||
tableData: [],
|
||||
|
||||
@@ -289,7 +289,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
stor_id: '1528627995269533696',
|
||||
id: '1528627995269533696',
|
||||
sect_id: '1528631043496742912',
|
||||
sectProp: null,
|
||||
structShow: false,
|
||||
@@ -305,7 +305,7 @@ export default {
|
||||
dtl_row: null,
|
||||
storage_qty: '',
|
||||
sect_id: '',
|
||||
stor_id: '',
|
||||
id: '',
|
||||
point_code: null,
|
||||
vehicle_code: '',
|
||||
bucketunique: '',
|
||||
@@ -335,7 +335,7 @@ export default {
|
||||
}
|
||||
},
|
||||
open() {
|
||||
crudSectattr.getSect({ 'stor_id': this.storId }).then(res => {
|
||||
crudSectattr.getSect({ 'id': this.storId }).then(res => {
|
||||
this.sects = res.content
|
||||
})
|
||||
const area_type = 'A1_CPRK01'
|
||||
@@ -548,21 +548,21 @@ export default {
|
||||
|
||||
this.sectProp = val
|
||||
if (val.length === 1) {
|
||||
this.stor_id = val[0]
|
||||
this.id = val[0]
|
||||
this.sect_id = ''
|
||||
}
|
||||
if (val.length === 0) {
|
||||
this.sect_id = ''
|
||||
this.stor_id = ''
|
||||
this.id = ''
|
||||
}
|
||||
if (val.length === 2) {
|
||||
this.stor_id = val[0]
|
||||
this.id = val[0]
|
||||
this.sect_id = val[1]
|
||||
}
|
||||
},
|
||||
tableChanged(row) {
|
||||
this.form.sect_id = this.sect_id
|
||||
this.form.stor_id = this.stor_id
|
||||
this.form.id = this.id
|
||||
this.dis_row.struct_id = row.struct_id
|
||||
this.divBtn = true
|
||||
crudProductIn.divStruct(this.dis_row).then(res => {
|
||||
@@ -595,7 +595,7 @@ export default {
|
||||
}
|
||||
this.divBtn = true
|
||||
|
||||
this.dis_row.stor_id = this.stor_id.toString()
|
||||
this.dis_row.id = this.id.toString()
|
||||
this.dis_row.sect_id = this.sect_id.toString()
|
||||
this.dis_row.vehicle_overstruct_type = this.form.vehicle_overstruct_type
|
||||
crudProductIn.divStruct(this.dis_row).then(res => {
|
||||
@@ -609,7 +609,7 @@ export default {
|
||||
this.divBtn = false
|
||||
})
|
||||
} else {
|
||||
if (!this.stor_id) {
|
||||
if (!this.id) {
|
||||
this.crud.notify('请先选择仓库!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ export default {
|
||||
dialogVisible: false,
|
||||
GroupShow: false,
|
||||
click_Row: {},
|
||||
stor_id: '1528627995269533696',
|
||||
id: '1528627995269533696',
|
||||
sect_id: '1528631043496742912',
|
||||
sectProp: null,
|
||||
structShow: false,
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<el-table-column prop="point_code1" label="起始位置" align="center" width="120"/>
|
||||
<el-table-column prop="point_code2" label="目的位置" align="center" width="120"/>
|
||||
<el-table-column prop="task_code" label="任务号" align="center" />
|
||||
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
|
||||
<el-table-column prop="status" label="任务状态" align="center" :formatter="formatStatus"/>
|
||||
<el-table-column prop="source_form_type" label="源单类型" align="center" width="150"/>
|
||||
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单id" align="center" width="150"/>
|
||||
</el-table>
|
||||
@@ -260,7 +260,7 @@ export default {
|
||||
}
|
||||
},
|
||||
formatStatus(row) {
|
||||
return this.dict.label.FORM_STATUS[row.task_status]
|
||||
return this.dict.label.FORM_STATUS[row.status]
|
||||
},
|
||||
formatBaseType(row) {
|
||||
return this.dict.label.PCS_SAL_TYPE[row.base_bill_type]
|
||||
|
||||
@@ -285,7 +285,7 @@ export default {
|
||||
divOpen() {
|
||||
crudProductIn.getIosInvDtl({ 'bill_code': this.currentRow.bill_code }).then(res => {
|
||||
this.openParam = res
|
||||
this.storId = this.currentRow.stor_id
|
||||
this.storId = this.currentRow.id
|
||||
this.billType = this.currentRow.bill_type
|
||||
this.divShow = true
|
||||
})
|
||||
|
||||
@@ -243,7 +243,7 @@ export default {
|
||||
dialogVisible: false,
|
||||
GroupShow: false,
|
||||
click_Row: {},
|
||||
stor_id: '1528627995269533696',
|
||||
id: '1528627995269533696',
|
||||
sect_id: '1528631043496742912',
|
||||
sectProp: null,
|
||||
structShow: false,
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
<el-table-column prop="point_code1" label="任务起始位置" align="center" width="120"/>
|
||||
<el-table-column prop="point_code2" label="任务目的位置" align="center" width="120"/>
|
||||
<el-table-column prop="task_code" label="任务号" align="center" />
|
||||
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
|
||||
<el-table-column prop="status" label="任务状态" align="center" :formatter="formatStatus"/>
|
||||
<el-table-column prop="source_form_type" label="源单类型" align="center" width="150"/>
|
||||
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单id" align="center" width="150"/>
|
||||
</el-table>
|
||||
@@ -277,7 +277,7 @@ export default {
|
||||
data.pop = true
|
||||
},
|
||||
formatStatus(row) {
|
||||
return this.statusEnum.label.FORM_STATUS[row.task_status]
|
||||
return this.statusEnum.label.FORM_STATUS[row.status]
|
||||
},
|
||||
close() {
|
||||
this.form.tableMater = []
|
||||
@@ -460,21 +460,21 @@ export default {
|
||||
|
||||
this.sectProp = val
|
||||
if (val.length === 1) {
|
||||
this.stor_id = val[0]
|
||||
this.id = val[0]
|
||||
this.sect_id = ''
|
||||
}
|
||||
if (val.length === 0) {
|
||||
this.sect_id = ''
|
||||
this.stor_id = ''
|
||||
this.id = ''
|
||||
}
|
||||
if (val.length === 2) {
|
||||
this.stor_id = val[0]
|
||||
this.id = val[0]
|
||||
this.sect_id = val[1]
|
||||
}
|
||||
},
|
||||
tableChanged(row) {
|
||||
this.form.sect_id = this.sect_id
|
||||
this.form.stor_id = this.stor_id
|
||||
this.form.id = this.id
|
||||
this.dis_row.struct_id = row.struct_id
|
||||
this.divBtn = true
|
||||
},
|
||||
|
||||
@@ -131,9 +131,9 @@
|
||||
<el-table-column prop="point_code1" label="任务起始位置" align="center" width="120"/>
|
||||
<el-table-column prop="point_code2" label="任务目的位置" align="center" width="120"/>
|
||||
<el-table-column prop="task_code" label="任务号" align="center" />
|
||||
<el-table-column prop="task_status" label="任务状态">
|
||||
<el-table-column prop="status" label="任务状态">
|
||||
<template slot-scope="scope">
|
||||
{{ statusEnum.label.FORM_STATUS[scope.row.task_status] }}
|
||||
{{ statusEnum.label.FORM_STATUS[scope.row.status] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="source_form_type" label="源单类型" align="center" width="150"/>
|
||||
|
||||
Reference in New Issue
Block a user