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,14 +86,16 @@ 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());
|
||||
int dataCount = iPmFormDataService.count(new QueryWrapper<PmFormData>().in("form_type", collect));
|
||||
if (dataCount>0){
|
||||
throw new BadRequestException("当前表单存在业务数据,不允许删除");
|
||||
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));
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
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));
|
||||
Map<String, List<BmFormStruc>> childMap = new HashMap<>();
|
||||
if (!CollectionUtils.isEmpty(ids)){
|
||||
List<BmFormStruc> childs = this.list(new QueryWrapper<BmFormStruc>().in("parent_id", ids));
|
||||
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 (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));
|
||||
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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
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}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user