add:移库,拣选

This commit is contained in:
zhangzq
2024-06-28 15:18:28 +08:00
parent cb0268055d
commit de4ab8d38b
90 changed files with 3694 additions and 192 deletions

View File

@@ -1,5 +1,9 @@
package org.nl.common.domain.constant;
import org.nl.common.utils.MapOf;
import java.util.Map;
/*
* @author ZZQ
* @Date 2022/12/26 9:29 上午
@@ -8,4 +12,5 @@ public class DictConstantPool {
public static final String DICT_SYS_CODE = "system_type";
public static final String DICT_SYS_NAME = "所属系统";
public static final Map<String,String> PRODUCT_OUT_POINT = MapOf.of("A1","1101","A2","2114","A3","3204");
}

View File

@@ -15,7 +15,6 @@
*/
package org.nl.common.domain.exception.handler;
import cn.hutool.http.HttpStatus;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@@ -30,10 +29,10 @@ import java.time.LocalDateTime;
@Data
class ApiError {
private String status = "400";
private String code = "400";
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime timestamp;
private String message;
private String msg;
private ApiError() {
timestamp = LocalDateTime.now();
@@ -41,14 +40,14 @@ class ApiError {
public static ApiError error(String message){
ApiError apiError = new ApiError();
apiError.setMessage(message);
apiError.setMsg(message);
return apiError;
}
public static ApiError error(Integer status, String message){
ApiError apiError = new ApiError();
apiError.setStatus(String.valueOf(status));
apiError.setMessage(message);
apiError.setCode(String.valueOf(status));
apiError.setMsg(message);
return apiError;
}

View File

@@ -85,6 +85,6 @@ public class GlobalExceptionHandler {
* 统一返回
*/
private ResponseEntity<ApiError> buildResponseEntity(ApiError apiError) {
return new ResponseEntity<>(apiError, HttpStatus.valueOf(Integer.valueOf(apiError.getStatus())));
return new ResponseEntity<>(apiError, HttpStatus.valueOf(Integer.valueOf(apiError.getCode())));
}
}

View File

@@ -31,13 +31,15 @@ public enum StatusEnum {
/**
* 出入库单据类型
*/
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask","拣选回库", "13","inStorageTask","托盘入库", "30","inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask", "拣选出库", "23","conveyorOutStorageTask","托盘出库", "40","outStorageTask")),
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10","inStorageTask", "调拨入库", "11","inStorageTask", "退货入库", "12","inStorageTask","拣选回库", "13","inStorageTask","盘点入库", "14","inStorageTask","托盘入库", "30","inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20","outStorageTask","生产出库", "21","outStorageTask", "调拨出库", "22","outStorageTask","拣选出库", "23","conveyorOutStorageTask","盘点出库", "24","outStorageTask", "托盘出库", "40","outStorageTask")),
IOBILL_TYPE_MOVE(ForkMap.of("移库", "50","moveStorageTask")),
profit_loss(ForkMap.of("盘亏", "0",null,"盘盈", "1",null,"实盘", "2",null)),
/**
* 任务类型
*/
TASK_TYPE(ForkMap.pushAll(IOBILL_TYPE_IN.code,IOBILL_TYPE_OUT.code)),
TASK_TYPE(ForkMap.pushAll(IOBILL_TYPE_IN.code,IOBILL_TYPE_OUT.code,IOBILL_TYPE_MOVE.code)),
ACS_TYPE(ForkMap.of("立库", "10",null
,"海柔", "20",null
@@ -47,7 +49,7 @@ public enum StatusEnum {
/**
* 点位锁类型
*/
LOCK(ForkMap.of("","00",null,"","10",null,"","20",null)),
LOCK(ForkMap.of("","00",null,"库锁","10",null,"入库盘点锁","16",null,"出库锁","20",null,"盘点出库锁","26",null,"移库锁","50",null)),
STRATEGY_TYPE(ForkMap.of("入库", "1",null, "出库", "2", null,"出入库", "3",null)),
;

View File

@@ -105,35 +105,10 @@ public class SpelUtil {
}
public static void main(String[] args) {
TypeReference<Class<JSONArray>> typeRef = new TypeReference<Class<JSONArray>>() {};
ParameterizedType type = (ParameterizedType) typeRef.getType();
Type type1 = type.getActualTypeArguments()[0];
Class aClass = (Class) type1;
String a="{\n" +
"\t\"code\": \"REC10022\",\n" +
"\t\"t\": {\n" +
"\t\t\"form_data\": {\n" +
"\t\t\t\"stor_code\": \"\",\n" +
"\t\t\t\"struct_code\": \"\",\n" +
"\t\t\t\"order\": \"\"\n" +
"\t\t},\n" +
"\t\t\"stor_code\": \"FStockId\",\n" +
"\t\t\"pcsn\": \"werwe\",\n" +
"\t\t\"material_id\": \"FMaterialId\",\n" +
"\t\t\"biz_id\": \"1793594766324273152\",\n" +
"\t\t\"order\": \"FMoBillNo\"\n" +
"\t},\n" +
"\t\"create_time\": \"2024-05-23 18:48:31\",\n" +
"\t\"form_id\": \"\",\n" +
"\t\"id\": \"1793594856053018624\",\n" +
"\t\"form_type\": \"PRD_FeedMtrl\",\n" +
"\t\"source_form_id\": \"1793594766324273152\",\n" +
"\t\"source_form_type\": \"st_ivt_iostorinvdtl_in\",\n" +
"\t\"status\": \"10\",\n" +
"\t\"create_name\": \"管理员\"\n" +
"}";
Object o = JSONObject.parseObject(a, aClass);
System.out.println(o.toString());
String a= "{\"item\":[{\"t\":{\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-19 11:13:06\",\"task_code\":\"28510\",\"material_spec\":\"45CCL1 1/8\",\"form_data\":{},\"group_id\":\"1803264719126138880\",\"qty\":120,\"proc_inst_id\":\"1803320414961799168\",\"is_lock\":false,\"pcsn\":\"11\",\"material_id\":\"FMaterialId\",\"id\":\"1803264718849314816\",\"has_child\":false,\"frozen_qty\":0,\"vehicle_code\":\"D00012\",\"source_form_id\":\"1803264490947612672\",\"unit_id\":\"16\",\"material_name\":\"A345度等径承插口弯头45CCL1 1/8USNA0131010\",\"source_form_type\":\"st_ivt_iostorinvdtl\",\"create_name\":\"管理员\",\"material_code\":\"24001097S\"},\"form_id\":\"1803264718849314816\",\"form_type\":\"md_pb_vehicleMater\",\"source_form_id\":\"1803264490947612672\",\"source_form_type\":\"st_ivt_iostorinvdtl\"}],\"t\":{\"code\":\"ZP20240619023\",\"stor_code\":\"FStockId\",\"create_time\":\"2024-06-19 11:13:06\",\"update_name\":\"管理员\",\"update_time\":\"2024-06-19 11:15:31\",\"form_data\":{},\"id\":\"1803264719126138880\",\"vehicle_code\":\"D00012\",\"source_form_id\":\"1803264490947612672\",\"struct_code\":\"L03-03-01\",\"source_form_type\":\"st_ivt_iostorinvdtl\",\"status\":\"10\",\"create_name\":\"管理员\"},\"form_id\":\"1803264719126138880\",\"form_type\":\"md_group_dick\",\"source_form_id\":\"1803264490947612672\",\"source_form_type\":\"st_ivt_iostorinvdtl\"}";
JSONObject jsonObject = JSONObject.parseObject(a);
String parse = SpelUtil.parse(jsonObject.getJSONObject("t"),"#M['stor_code'] == 'FStockId'", String.class);
System.out.println(parse);
}

View File

@@ -1,13 +1,19 @@
package org.nl.config.mybatis;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.github.pagehelper.PageInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.Interceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@@ -16,6 +22,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Map;
@EnableTransactionManagement
@Configuration

View File

@@ -45,7 +45,7 @@ public class BmClassStandardController {
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody JSONObject form) {
classStandardService.create(form);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -49,7 +49,7 @@ public class BmCustomerController {
@Log("新增客户基础表")
public ResponseEntity<Object> create(@Validated @RequestBody JSONObject dto) {
customerService.create(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -41,7 +41,7 @@ public class BmMaterialController {
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody MdMeMaterialbase dto) {
materialService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -109,16 +109,26 @@ public class MdMeMaterialbase implements Serializable {
*/
private String weight_unit_id;
/**
* 物料毛重
*/
private BigDecimal gross_weight;
/**
* 物料净重
*/
private BigDecimal net_weight;
/**
* 最近称重重量
*/
private BigDecimal nearby_weight;
/**
* 单重
*/
private BigDecimal single_weight;
/**
* 物料毛重
*/
private BigDecimal gross_weight;
/**
* 体积单位
*/

View File

@@ -40,7 +40,7 @@ public class BmSupplierController {
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody BmSupplier dto) {
supplierService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -44,7 +44,7 @@ public class BmVehicleInfoController {
@PostMapping
@Log("新增载具")
public ResponseEntity<Object> create(@RequestBody JSONObject map) {
return new ResponseEntity<>(vehicleInfoService.create(map), HttpStatus.CREATED);
return new ResponseEntity<>(vehicleInfoService.create(map), HttpStatus.OK);
}
@PutMapping

View File

@@ -53,7 +53,7 @@ public class EndDecisionChainer extends DecisionerChain<List> {
StIvtStructattr structattr = (StIvtStructattr)transfers.get(0);
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code", startParam.getString("vehicle_code"))
.set("lock_type", StatusEnum.LOCK.code(""))
.set("lock_type", StatusEnum.LOCK.code("库锁"))
.eq("struct_code", structattr.getStruct_code()));
System.out.println("货位绑定成功"+structattr.getStruct_code());
structs.add(structattr.getStruct_code());

View File

@@ -51,7 +51,7 @@ public class StartDecisionChainer extends DecisionerChain<List> {
if (in_storage){
QueryWrapper<StIvtStructattr> query = new QueryWrapper<StIvtStructattr>()
.eq("is_used", true)
.eq("lock_type", StatusEnum.LOCK.code(""))
.eq("lock_type", StatusEnum.LOCK.code(""))
.eq("stor_code", startParam.getString("stor_code"));
query.isNull("vehicle_code");
list = iStIvtStructattrService.list(query);

View File

@@ -45,7 +45,7 @@ public class SchBasePointController {
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
pointService.save(entity);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -43,7 +43,7 @@ public class SchBaseRegionController {
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
regionService.save(entity);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -52,13 +52,13 @@ public class SchBaseTaskController {
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody SchBaseTask entity){
schBaseTaskService.create(entity);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody SchBaseTask entity){
schBaseTaskService.update(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -71,7 +71,7 @@ public class SchBaseTaskController {
@PutMapping("/operation")
public ResponseEntity<Object> update(@RequestBody JSONObject map) {
schBaseTaskService.operation(map);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -1,9 +1,13 @@
package org.nl.wms.dispatch_manage.task.handler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
@@ -23,8 +27,18 @@ public abstract class AbstractTask {
public abstract JSONObject createTask(JSONObject data);
public void updateTask(JSONObject data){
ISchBaseTaskService taskService = SpringContextHolder.getBean(ISchBaseTaskService.class);
String status = data.getString("status");
SchBaseTask task = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
if (!task.getStatus().equals(status) && !task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))){
taskService.update(new UpdateWrapper<SchBaseTask>().set("status",status).eq("task_code",data.getString("task_code")));
}
}
public abstract void updateStatus(JSONObject data);
public abstract void finish(JSONObject data);
public abstract void cancel(JSONObject data);

View File

@@ -11,22 +11,17 @@ import org.nl.common.publish.event.PublishEvent;
@Data
@Builder
public class StructEvent extends PublishEvent {
/**
* @see org.nl.common.enums.StatusEnum.TASK_TYPE_IN
* 任务类型
*/
private String task_type;
/**
* 载具编码
*/
private String vehicle_code;
private String status;
//变动起点
private String point_code1;
//变动终点
private String point_code2;
private String source_form_id;
private String source_form_type;
}

View File

@@ -6,12 +6,15 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
@@ -49,9 +52,18 @@ public class ConveyorOutStorageTask extends AbstractTask {
@Transactional
public JSONObject createTask(JSONObject from) {
String vehicle_code = from.getString("vehicle_code");
String outbound = from.getJSONObject("form_data").getString("outbound");
String outbound = from.getJSONObject("form_data").getString("outbound");//出库口根据单据车间来确认
String start_point = from.getString("start_point");
String task_type = from.getString("task_type");
String product_area = from.getString("product_area");
if (StringUtils.isNotEmpty(product_area)){
String configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
if (StringUtils.isEmpty(configTarget)){
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
}
outbound = configTarget;
}
System.out.println("输送线出库:拣选分配点/车间"+outbound+"_"+product_area);
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(outbound)){
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
}
@@ -82,6 +94,20 @@ public class ConveyorOutStorageTask extends AbstractTask {
@Override
public void updateStatus(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
}

View File

@@ -101,6 +101,11 @@ public class GroupDickInStorageTask extends AbstractTask {
}
@Override
public void finish(JSONObject data) {
}
@Override
public void cancel(JSONObject data) {

View File

@@ -5,13 +5,16 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
@@ -76,12 +79,26 @@ public class InStorageTask extends AbstractTask {
}
@Override
public void updateStatus(JSONObject data) {
@Transactional
public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
//跟新库存
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void updateStatus(JSONObject data) {
this.updateTask(data);
}
@Override
public void cancel(JSONObject data) {
this.updateTask(data);
}
}

View File

@@ -6,12 +6,15 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
@@ -52,7 +55,15 @@ public class OutStorageTask extends AbstractTask {
public JSONObject createTask(JSONObject from) {
String vehicle_code = from.getString("vehicle_code");
String target_point = from.getString("target_point");
//通过全局变量获取目标位置
String product_area = from.getString("product_area");
if (StringUtils.isNotEmpty(product_area)){
String configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
if (StringUtils.isEmpty(configTarget)){
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
}
target_point = configTarget;
}
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
}
@@ -88,12 +99,32 @@ public class OutStorageTask extends AbstractTask {
}
@Override
@Transactional
public void updateStatus(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void cancel(JSONObject data) {
this.updateTask(data);
}
}

View File

@@ -11,6 +11,9 @@ import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.MapOf;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService;
import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent;
@@ -44,6 +47,8 @@ public class PalletInStorageTask extends AbstractTask {
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
private IActRuExecutionService iActRuExecutionService;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
@Override
public JSONObject createTask(JSONObject data) {
@@ -77,6 +82,11 @@ public class PalletInStorageTask extends AbstractTask {
}
@Override
public void finish(JSONObject data) {
}
@Override
public void cancel(JSONObject data) {

View File

@@ -86,6 +86,11 @@ public class PickStorageTask extends AbstractTask {
}
@Override
public void finish(JSONObject data) {
}
@Override
public void cancel(JSONObject data) {

View File

@@ -0,0 +1,125 @@
package org.nl.wms.dispatch_manage.task.handler.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.system_manage.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
/*
* @author ZZQ
* @Date 2024/5/6 14:34
* 出库任务入库任务
*/
@Service
public class moveStorageTask extends AbstractTask {
@Autowired
private ISchBaseTaskService taskService;
@Autowired
private ISysParamService iSysParamService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Override
@Transactional
public JSONObject createTask(JSONObject from) {
String vehicle_code = from.getString("vehicle_code");
JSONObject form_data = from.getJSONObject("form_data");
String start_struct_code = form_data.getString("start_struct_code");
String end_struct_code = form_data.getString("end_struct_code");
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
.ne("status", StatusEnum.FORM_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
StIvtStructattr source = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
if (!source.getStruct_code().equals(start_struct_code)){
throw new BadRequestException("载具库位变动:当前货位"+source.getStruct_code()+",移库前货位"+start_struct_code);
}
StIvtStructattr target = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", end_struct_code));
if (StringUtils.isNotEmpty(target.getVehicle_code())){
throw new BadRequestException("目标货位存在载具:"+target.getVehicle_code());
}
SchBaseTask task = new SchBaseTask();
task.setId(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setStatus(StatusEnum.FORM_STATUS.code("生成"));
task.setHandle_class(this.getClass().getName());
task.setAcs_type(StatusEnum.ACS_TYPE.code("立库"));
task.setCreate_time(DateUtil.now());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setTask_type(from.getString("task_type"));
task.setVehicle_code(vehicle_code);
task.setPoint_code1(source.getStruct_code());
task.setPoint_code2(end_struct_code);
taskService.save(task);
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
.set(MdPbVehicleMater::getTask_code,task.getTask_code())
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()));
//TODO:是否下发
Boolean isSend = from.getBoolean("is_send");
if (isSend){
//参数封装调acs接口
}
return (JSONObject)JSON.toJSON(task);
}
@Override
@Transactional
public void updateStatus(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
}
@Override
public void cancel(JSONObject data) {
this.updateTask(data);
}
}

View File

@@ -13,14 +13,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.dispatch_manage.task.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery;
import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -39,8 +44,7 @@ import java.util.stream.Collectors;
public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBaseTask> implements ISchBaseTaskService {
@Autowired
private SchBaseTaskMapper schBaseTaskMapper;
IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Override
public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
@@ -53,7 +57,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
}
}
IPage<SchBaseTask> pages = new Page<>(page.getPage() + 1, page.getSize());
pages = schBaseTaskMapper.selectPageLeftJoin(pages, whereJson, collect);
pages = this.baseMapper.selectPageLeftJoin(pages, whereJson, collect);
return pages;
}
@@ -70,20 +74,19 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Override
public void update(SchBaseTask entity) {
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_code());
SchBaseTask dto = this.baseMapper.selectById(entity.getTask_code());
if (dto == null) throw new BadRequestException("任务信息不存在");
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
entity.setUpdate_name(nickName);
entity.setUpdate_time(now);
schBaseTaskMapper.updateById(entity);
this.baseMapper.updateById(entity);
}
@Override
public void deleteAll(Set<String> ids) {
// 真删除
schBaseTaskMapper.deleteBatchIds(ids);
this.removeByIds(ids);
}
@Override
@@ -98,15 +101,27 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
entity.setCreate_time(now);
entity.setUpdate_name(nickName);
entity.setUpdate_time(now);
schBaseTaskMapper.insert(entity);
this.baseMapper.insert(entity);
}
@Override
public void operation(JSONObject param) {
String taskStatus = param.getString("method_name");
String task_code = param.getString("task_code");
SchBaseTask task = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code));
if (task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))){
throw new BadRequestException("当前任务已完成");
}
this.update(new UpdateWrapper<SchBaseTask>()
.set("status",taskStatus)
.eq("task_code",param.getString("task_code")));
.set("status",param.getString("method_name"))
.eq("task_code", task_code));
if (param.getString("method_name").equals(StatusEnum.FORM_STATUS.code("完成"))){
MdPbVehicleMater vehicleMater = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
.eq("vehicle_code", task.getVehicle_code()));
if (!StringUtils.isEmpty(vehicleMater.getProc_inst_id())){
FlowContinueEvent continueEvent = new FlowContinueEvent(vehicleMater.getProc_inst_id(), null, null);
BussEventMulticaster.Publish(continueEvent);
}
}
}
}

View File

@@ -84,7 +84,7 @@ public class AlmEarlyDeferralController {
almEarlyDeferralDetail.setMaterial_id(material_id);
almEarlyDeferralDetailService.save(almEarlyDeferralDetail);
}
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping("/delete")
@@ -102,7 +102,7 @@ public class AlmEarlyDeferralController {
almEarlyDeferral.setId(IdUtil.getStringId());
almEarlyDeferral.setCreate_time(DateUtil.now());
almEarlyDeferralService.save(almEarlyDeferral);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/update")
@@ -110,7 +110,7 @@ public class AlmEarlyDeferralController {
AlmEarlyDeferral almEarlyDeferral = dto.toJavaObject(AlmEarlyDeferral.class);
almEarlyDeferral.setCreate_time(DateUtil.now());
almEarlyDeferralService.updateById(almEarlyDeferral);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -95,7 +95,7 @@ public class AlmEarlyInvController {
inv.setId(IdUtil.getStringId());
inv.setCreate_time(DateUtil.now());
iAlmEarlyInvService.save(inv);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/update")
@@ -103,7 +103,7 @@ public class AlmEarlyInvController {
AlmEarlyInv inv = dto.toJavaObject(AlmEarlyInv.class);
inv.setCreate_time(DateUtil.now());
iAlmEarlyInvService.updateById(inv);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/saveDtl")
@@ -121,7 +121,7 @@ public class AlmEarlyInvController {
almEarlyDtl.setMaterial_id(material_id);
iAlmEarlyDtlService.save(almEarlyDtl);
}
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping("/delete")

View File

@@ -72,7 +72,6 @@ public class ActDeModelController {
actDeModel.setCreate_id(SecurityUtils.getCurrentUserId());
actDeModel.setCreate_time(DateUtil.now());
actDeModel.setId(IdUtil.getStringId());
actDeModel.setModel_key(IdUtil.getStringId());
if (!StringUtils.isEmpty(actDeModel.getModel_editor_json())){
try {
JSONObject modelJson = JSONObject.parseObject(actDeModel.getModel_editor_json());
@@ -106,10 +105,11 @@ public class ActDeModelController {
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
if (ids.length > 0) {
modelService.removeByIds(Arrays.asList(ids));
}
return new ResponseEntity<>(HttpStatus.OK);
throw new BadRequestException("模型配置无法直接删除");
// if (ids.length > 0) {
// modelService.removeByIds(Arrays.asList(ids));
// }
// return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping(value = "/select/{modelId}", produces = "application/json")

View File

@@ -83,7 +83,7 @@ public abstract class FlowNodeActivityBehavior<T> {
.eq("proc_inst_id", proc_inst_id)
.set("status", StatusEnum.FLOW_STATUS.code("暂停"))
.set("remark","节点:"+entity.getActivityName()+":异常:"+ex.getMessage()));
throw new BadRequestException(ex.getMessage());
// throw new BadRequestException(ex.getMessage());
}
}

View File

@@ -39,8 +39,8 @@ public class ClassHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONOb
auxParam.putAll(entity.getAuxParam());
}
JSONObject form = process.process(dto.getT(), auxParam);
//清空全局配置的数据
entity.setAuxParam(new JSONObject());
//清空全局配置的数据:暂时不清空只做覆盖
// entity.setAuxParam(new JSONObject());
result.put("t",form);
//后续:涉及框架的参数提到框架中处理
String source_form_type = dto.getForm_type();

View File

@@ -51,7 +51,6 @@ public class StorageChangesProcessHandler implements ClassProcess {
//TODO:后续在流程节点中配置监听时间触发
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.status(schBaseTask.getStatus())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())

View File

@@ -78,7 +78,7 @@ public class FlowOperationServiceImpl implements IFlowOperationService {
entity.setStartActivityId(entity.getActivityId());
entity.setDeploymentId(deployment.getDeployment_id());
commandExecutor.execute(new StartInstanceCmd(),entity);
return null;
return entity.getProc_inst_id();
}

View File

@@ -80,4 +80,8 @@ public class FlowStartEvent extends PublishEvent {
public ExecutionDto getDto() {
return dto;
}
public void setDto(ExecutionDto dto) {
this.dto = dto;
}
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pda_manage.palletio.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.publish.BussEventMulticaster;
@@ -31,8 +32,11 @@ public class PalletIostorinvService {
Assert.notNull(form, "参数不能为空");
String vehicle_code = form.getString("vehicle_code");
String material_id = form.getString("material_id");
int count = iMdPbVehicleMaterService.count(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", vehicle_code));
if (count>0){
throw new BadRequestException("入库失败:当前载具信息已经存在");
}
MdPbVehicleMater vehicleMater = new MdPbVehicleMater();
vehicleMater.setGroup_id(IdUtil.getStringId());
vehicleMater.setId(IdUtil.getStringId());
vehicleMater.setCreate_time(DateUtil.now());
vehicleMater.setCreate_name(SecurityUtils.getCurrentNickName());

View File

@@ -1,23 +1,19 @@
package org.nl.wms.pm_manage.form_data.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* <p>
@@ -32,18 +28,20 @@ import java.util.List;
public class PmFormDataController {
@Autowired
private IPmFormDataService formDataService;
private IPmFormDataService iPmFormDataService;
@GetMapping()
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(formDataService.queryTree(query,page)), HttpStatus.CREATED);
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@DeleteMapping
@Transactional
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
if (ids.length > 0) {
formDataService.removeByIds(Arrays.asList(ids));
iPmFormDataService.removeByIds(Arrays.asList(ids));
iPmFormDataService.remove(new QueryWrapper<PmFormData>().in("parent_id",ids));
}
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -52,15 +50,15 @@ public class PmFormDataController {
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
return new ResponseEntity<>(formDataService.getSonDtlFormData(id),HttpStatus.OK);
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id),HttpStatus.OK);
}
@GetMapping("/sync/{type}")
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl) {
//参数判读,参数解析,调用参数入库
formDataService.syncFormData("type", formDtl);
return new ResponseEntity<>(HttpStatus.CREATED);
iPmFormDataService.syncFormData("type", formDtl);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -38,6 +38,6 @@ public interface IPmFormDataService extends IService<PmFormData> {
void dynamicSql(String sql);
List<PmFormData> getByParentId(String parent_id);
List<PmFormData> getByParentId(String...parent_id);
}

View File

@@ -67,15 +67,6 @@ public class PmFormData implements Serializable {
*/
private String status = StatusEnum.FORM_STATUS.code("生成");
/**
* 创建id
*/
private String create_time;
/**
* 创建id
*/
private String create_name;
/**
* 物料id
@@ -119,4 +110,31 @@ public class PmFormData implements Serializable {
/**
* 创建id
*/
private String create_time;
/**
* 创建id
*/
private String create_name;
/**
* 创建id
*/
private String update_time;
/**
* 创建id
*/
private String update_name;
/**
* 备注说明
*/
private String remark;
}

View File

@@ -31,11 +31,16 @@
<result property="source_form_type" column="source_form_type"/>
<result property="form_type" column="form_type"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
<result property="create_name" column="create_name"/>
<result property="create_time" column="create_time"/>
<result property="material_id" column="material_id"/>
<result property="qty" column="qty"/>
<result property="pcsn" column="pcsn"/>
<result property="material_code" column="material_code"/>
<result property="material_name" column="material_name"/>
<result property="material_spec" column="material_spec"/>
<result property="single_weight" column="single_weight"/>
<result property="vehicle_code" column="vehicle_code"/>
<result property="parent_id" column="parent_id"/>
<result property="form_data" column="form_data" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
@@ -67,7 +72,8 @@
pm_form_data.*,
md_me_materialbase.material_code,
md_me_materialbase.material_name,
md_me_materialbase.material_spec
md_me_materialbase.material_spec,
md_me_materialbase.single_weight
FROM
pm_form_data
left join md_me_materialbase on pm_form_data.material_id = md_me_materialbase.material_id
@@ -92,7 +98,8 @@
pm_form_data.*,
md_me_materialbase.material_code,
md_me_materialbase.material_name,
md_me_materialbase.material_spec
md_me_materialbase.material_spec,
md_me_materialbase.single_weight
from pm_form_data left join md_me_materialbase on pm_form_data.material_id = md_me_materialbase.material_id
where parent_id = #{id}
</select>

View File

@@ -63,6 +63,10 @@ public class PmFormDataDto implements Serializable {
* 业务单据状态
*/
private String status;
/**
* 业务单据状态
*/
private String remark;
/**
* 创建id
@@ -90,6 +94,10 @@ public class PmFormDataDto implements Serializable {
* 物料spec
*/
private String material_spec;
/**
* 物料单重
*/
private String single_weight;
/**
* 数量

View File

@@ -224,9 +224,10 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
}
@Override
public List<PmFormData> getByParentId(String parent_id) {
public List<PmFormData> getByParentId(String[] parent_id) {
Assert.notNull(parent_id,"请求参数不能为空");
return this.list(new QueryWrapper<PmFormData>().eq("parent_id",parent_id));
QueryWrapper<PmFormData> query = new QueryWrapper<PmFormData>().in("parent_id", parent_id);
return this.list(query);
}
}

View File

@@ -0,0 +1,97 @@
package org.nl.wms.stor_manage.checkStorage.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.enums.StatusEnum;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
import org.nl.wms.stor_manage.checkStorage.service.CheckStorageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.function.Predicate;
/**
* <p>
* 表单信息表 前端控制器
* </p>
*
* @author generator
* @since 2024-03-25
*/
@RestController
@RequestMapping("/api/check")
public class CheckController {
@Autowired
private IPmFormDataService iPmFormDataService;
@Autowired
private CheckStorageService checkStorageService;
@GetMapping()
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id),HttpStatus.OK);
}
@PostMapping("/save")
@Log("新增盘点单")
public ResponseEntity<Object> save(@RequestBody JSONObject params) {
checkStorageService.save(params);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updateStatus")
@Log("跟新单据状态")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
//TODO:明细校验
List<PmFormData> childs = iPmFormDataService.getByParentId(param.getString("id"));
long tmpCount = childs.stream().filter(a -> a.getStatus().equals(StatusEnum.FORM_STATUS.code("生成"))).count();
if (tmpCount==0){
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",param.getString("status"))
.eq("id",param.getString("id")));
}
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/saveCheckTask")
@Log("盘点确认")
public ResponseEntity<Object> saveCheckTask(@RequestBody JSONObject param) {
//TODO:明细校验
param.getJSONObject("form_data");
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status", StatusEnum.FORM_STATUS.code("已分配"))
.set("form_data",param.getJSONObject("form_data").toJSONString())
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen")
@Log("盘点单下发")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {
checkStorageService.taskOpen(param);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping()
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
checkStorageService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,149 @@
package org.nl.wms.stor_manage.checkStorage.service;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
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.*;
import java.util.stream.Collectors;
/*
* @author ZZQ
* @Date 2024/6/17 21:25
*/
@Service
public class CheckStorageService {
@Autowired
private IPmFormDataService iFormDataService;
@Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
/**
* 生成移库单
* @param form
*/
@Transactional
public void save(JSONObject form){
ArrayList<PmFormData> list = new ArrayList<>();
Set<String> structs = new HashSet<>();
String user = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
List items = (List)form.remove("item");
PmFormData mst = form.toJavaObject(PmFormData.class);
mst.setCreate_name(user);
mst.setCreate_time(now);
mst.setId(IdUtil.getStringId());
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
mst.setCode(CodeUtil.getNewCode(mst.getForm_type()));
list.add(mst);
for (Object itemO : items) {
JSONObject itemJ = new JSONObject((Map) itemO);
PmFormData dtl = itemJ.toJavaObject(PmFormData.class);
dtl.setCreate_name(user);
dtl.setCreate_time(now);
dtl.setId(IdUtil.getStringId());
dtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
dtl.setParent_id(mst.getId());
structs.add(dtl.getForm_data().getString("struct_code"));
list.add(dtl);
}
iFormDataService.saveBatch(list);
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("lock_type", StatusEnum.LOCK.code("移库锁"))
.in("struct_code",structs));
}
/**
* 删除移库单
* @param ids
*/
@Transactional
public void delete(String[] ids){
if (ids.length>0){
List<PmFormData> dtls = iFormDataService.getByParentId(ids);
List<String> removeCollect = dtls.stream().map(PmFormData::getId).collect(Collectors.toList());
removeCollect.addAll(Arrays.asList(ids));
List<String> structs = new ArrayList<>();
for (PmFormData dtl : dtls) {
String struct_code = dtl.getForm_data().getString("struct_code");
structs.add(struct_code);
}
iFormDataService.removeByIds(removeCollect);
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("lock_type", StatusEnum.LOCK.code("无锁"))
.in("struct_code",structs));
}
}
public void taskOpen(JSONObject form){
PmFormData mst = form.toJavaObject(PmFormData.class);
if (StringUtils.isNotEmpty(mst.getProc_inst_id())){
throw new BadRequestException("下发失败:当前单据已存在流程,请勿重新下发");
}
JSONObject mstJ = (JSONObject) JSON.toJSON(mst);
ExecutionDto dto = new ExecutionDto();
dto.setForm_id(mst.getId());
dto.setForm_type(mst.getForm_type());
dto.setSource_form_type(mst.getSource_form_type());
dto.setSource_form_id(mst.getSource_form_id());
dto.setT(mstJ);
dto.setItem(packageT(mstJ,"id"));
FlowStartEvent startEvent = new FlowStartEvent("st_ivt_check",
(proc_inst_id, empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>().set("proc_inst_id", proc_inst_id).eq("vehicle_code", empPlace))
, null);
startEvent.setDto(dto);
startEvent.setCallback(proc_inst_id->{
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
.set("proc_inst_id",proc_inst_id)
.eq("id",mst.getId()));
});
BussEventMulticaster.Publish(startEvent);
}
private List<ExecutionDto> packageT(JSONObject current,String itemField){
String id = current.getString(itemField);
List<PmFormData> items = iFormDataService.getByParentId(id);
if (!CollectionUtils.isEmpty(items)){
List<ExecutionDto> list = new ArrayList<>();
for (PmFormData item : items) {
JSONObject itemJ = (JSONObject) JSON.toJSON(item);
ExecutionDto itemDto = new ExecutionDto();
itemDto.setT(itemJ);
itemDto.setForm_id(item.getId());
itemDto.setForm_type(item.getForm_type());
itemDto.setSource_form_type(item.getSource_form_type());
itemDto.setSource_form_id(item.getSource_form_id());
itemDto.setItem(packageT(itemJ,itemField));
list.add(itemDto);
}
return list;
}
return null;
}
}

View File

@@ -233,7 +233,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
, (proc_inst_id,innerVehicle) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("proc_inst_id",proc_inst_id)
.in("vehicle_code",innerVehicle==null?vechiles: ListOf.of(innerVehicle)))
,null)
//传递全局参数:出库分配出库点用
,iostorinv.getForm_data())
.build("st_ivt_iostorinv",iostorinv.getId(),iostorinv.getSource_form_type(),iostorinv.getSource_form_id(),form)
.build("st_ivt_iostorinvdtl",dtlVo)
);

View File

@@ -29,23 +29,18 @@ public class StructEventListener extends AbstraceListener<StructEvent> {
@Override
protected String doEvent(StructEvent event) {
//根据不同的task_type获取对应出入库类型
String status = event.getStatus();
String task_type = event.getTask_type();
if (status.equals(StatusEnum.FORM_STATUS.code("生成"))){
if (StatusEnum.IOBILL_TYPE_IN.check(task_type)){
structattrService.changeStruct(event.getPoint_code2(),event.getVehicle_code(),task_type,true);
}
if (StatusEnum.IOBILL_TYPE_OUT.check(task_type)){
structattrService.changeStruct(event.getPoint_code1(),null,task_type,false);
}
if (StatusEnum.IOBILL_TYPE_MOVE.check(task_type)){
structattrService.changeStruct(event.getPoint_code1(),null,task_type,false);
structattrService.changeStruct(event.getPoint_code2(),event.getVehicle_code(),task_type,true);
}
if (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 (status.equals(StatusEnum.FORM_STATUS.code("取消"))){
}
return null;
}
}

View File

@@ -0,0 +1,75 @@
package org.nl.wms.stor_manage.move.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
import org.nl.wms.stor_manage.move.service.MovingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 表单信息表 前端控制器
* </p>
*
* @author generator
* @since 2024-03-25
*/
@RestController
@RequestMapping("/api/move")
public class MovingController {
@Autowired
private IPmFormDataService iPmFormDataService;
@Autowired
private MovingService movingService;
@GetMapping()
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
return new ResponseEntity<>(iPmFormDataService.getSonDtlFormData(id),HttpStatus.OK);
}
@PostMapping("/save")
public ResponseEntity<Object> save(@RequestBody JSONObject params) {
movingService.save(params);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updateStatus")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
//TODO:明细校验
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",param.getString("status"))
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {
movingService.taskOpen(param);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping()
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
movingService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,163 @@
package org.nl.wms.stor_manage.move.service;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import 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.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
import org.nl.wms.flow_manage.monitor.event.FlowContinueEvent;
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
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.*;
import java.util.stream.Collectors;
/*
* @author ZZQ
* @Date 2024/6/17 21:25
*/
@Service
public class MovingService {
@Autowired
private IPmFormDataService iFormDataService;
@Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
/**
* 生成移库单
* @param form
*/
@Transactional
public void save(JSONObject form){
ArrayList<PmFormData> list = new ArrayList<>();
Set<String> structs = new HashSet<>();
String user = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
List items = (List)form.remove("item");
PmFormData mst = form.toJavaObject(PmFormData.class);
mst.setCreate_name(user);
mst.setCreate_time(now);
mst.setId(IdUtil.getStringId());
mst.setStatus(StatusEnum.FORM_STATUS.code("生成"));
mst.setCode(CodeUtil.getNewCode(mst.getForm_type()));
list.add(mst);
for (Object itemO : items) {
JSONObject itemJ = new JSONObject((Map) itemO);
PmFormData dtl = itemJ.toJavaObject(PmFormData.class);
dtl.setCreate_name(user);
dtl.setCreate_time(now);
dtl.setId(IdUtil.getStringId());
dtl.setStatus(StatusEnum.FORM_STATUS.code("生成"));
dtl.setParent_id(mst.getId());
structs.add(dtl.getForm_data().getString("start_struct_code"));
structs.add(dtl.getForm_data().getString("end_struct_code"));
list.add(dtl);
}
if (structs.size() != items.size()*2){
throw new BadRequestException("移库分配异常:库位信息不正确");
}
iFormDataService.saveBatch(list);
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("lock_type", StatusEnum.LOCK.code("移库锁"))
.in("struct_code",structs));
}
/**
* 删除移库单
* @param ids
*/
@Transactional
public void delete(String[] ids){
if (ids.length>0){
List<PmFormData> dtls = iFormDataService.getByParentId(ids);
List<String> removeCollect = dtls.stream().map(PmFormData::getId).collect(Collectors.toList());
removeCollect.addAll(Arrays.asList(ids));
List<String> structs = new ArrayList<>();
for (PmFormData dtl : dtls) {
String start_struct_code = dtl.getForm_data().getString("start_struct_code");
String end_struct_code = dtl.getForm_data().getString("end_struct_code");
structs.add(start_struct_code);
structs.add(end_struct_code);
}
iFormDataService.removeByIds(removeCollect);
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
.set("lock_type", StatusEnum.LOCK.code("无锁"))
.in("struct_code",structs));
}
}
public void taskOpen(JSONObject form){
PmFormData mst = form.toJavaObject(PmFormData.class);
if (StringUtils.isNotEmpty(mst.getProc_inst_id())){
throw new BadRequestException("下发失败:当前单据已存在流程,请勿重新下发");
}
JSONObject mstJ = (JSONObject) JSON.toJSON(mst);
ExecutionDto dto = new ExecutionDto();
dto.setForm_id(mst.getId());
dto.setForm_type(mst.getForm_type());
dto.setSource_form_type(mst.getSource_form_type());
dto.setSource_form_id(mst.getSource_form_id());
dto.setT(mstJ);
dto.setItem(packageT(mstJ,"id"));
FlowStartEvent startEvent = new FlowStartEvent("st_ivt_move",
(proc_inst_id, empPlace) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>().set("proc_inst_id", proc_inst_id).eq("vehicle_code", empPlace))
, null);
startEvent.setDto(dto);
startEvent.setCallback(proc_inst_id->{
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",StatusEnum.FORM_STATUS.code("执行中"))
.set("proc_inst_id",proc_inst_id)
.eq("id",mst.getId()));
});
BussEventMulticaster.Publish(startEvent);
}
private List<ExecutionDto> packageT(JSONObject current,String itemField){
String id = current.getString(itemField);
List<PmFormData> items = iFormDataService.getByParentId(id);
if (!CollectionUtils.isEmpty(items)){
List<ExecutionDto> list = new ArrayList<>();
for (PmFormData item : items) {
JSONObject itemJ = (JSONObject) JSON.toJSON(item);
ExecutionDto itemDto = new ExecutionDto();
itemDto.setT(itemJ);
itemDto.setForm_id(item.getId());
itemDto.setForm_type(item.getForm_type());
itemDto.setSource_form_type(item.getSource_form_type());
itemDto.setSource_form_id(item.getSource_form_id());
itemDto.setItem(packageT(itemJ,itemField));
list.add(itemDto);
}
return list;
}
return null;
}
}

View File

@@ -35,7 +35,7 @@ public class PickingController {
@GetMapping()
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.CREATED);
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
@@ -50,12 +50,12 @@ public class PickingController {
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl) {
//参数判读,参数解析,调用参数入库
iPmFormDataService.syncFormData("type", formDtl);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/savePickTask")
public ResponseEntity<Object> savePickTask(@RequestBody JSONArray params) {
pickingService.savePickTask(params);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updateStatus")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
@@ -63,12 +63,12 @@ public class PickingController {
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",param.getString("status"))
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {
pickingService.taskOpen(param);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -44,7 +44,7 @@ public class StIvtStructattrController {
dto.setCreate_name(SecurityUtils.getCurrentNickName());
dto.setCreate_time(DateUtil.now());
structattrService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -27,7 +27,7 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
*/
List<Map<String, Object>> getByQuery(StructattrQuery query);
void changeStruct(String struct_code,String vehicle_code,String task_type);
void changeStruct(String struct_code,String vehicle_code,String task_type,Boolean in_storage);
void deleteAll(Long[] ids);
Object pageQuery(StructattrQuery query, PageQuery page);

View File

@@ -4,22 +4,42 @@
<select id="getPageQuery" resultType="java.util.Map">
SELECT
md_pb_vehicleMater.material_id,
md_pb_vehicleMater.qty,
md_pb_vehicleMater.frozen_qty,
md_pb_vehicleMater.pcsn,
md_pb_vehicleMater.unit_id,
md_me_materialbase.material_name,
md_me_materialbase.material_code,
md_me_materialbase.material_spec,
struct.*,
sect.sect_name,
stor.stor_name
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.id
left join st_ivt_bsrealstorattr stor on struct.stor_code = stor.stor_code
left join md_pb_vehicleMater on struct.vehicle_code = md_pb_vehicleMater.vehicle_code
left JOIN md_me_materialbase on md_pb_vehicleMater.material_id = md_me_materialbase.material_id
<where>
<if test="query.is_used == true">
and struct.is_used = '0'
</if>
<if test="query.material != null and query.material != ''">
and (material_spec LIKE '%${query.material}%'
or material_name LIKE '%${query.material}%')
</if>
<if test="query.is_used == false">
and struct.is_used = '1'
</if>
<if test="query.is_used == null and query.is_used == ''">
and struct.is_used = #{query.is_used}
<if test="query.has == true">
and struct.vehicle_code is not null and struct.lock_type = '00'
</if>
<if test="query.has == false">
and struct.vehicle_code is null and struct.lock_type = '00'
</if>
<if test="query.vehicle_code != null and query.vehicle_code != ''">
and struct.vehicle_code is not null
</if>
<if test="query.stor_code != null and query.stor_code != ''">
and struct.stor_code = #{query.stor_code}
@@ -35,6 +55,7 @@
or struct.struct_name LIKE '%${query.search}%')
</if>
</where>
GROUP BY struct.struct_code
</select>
<select id="collectVehicle" resultType="org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto">
SELECT

View File

@@ -19,6 +19,8 @@ public class StructattrQuery extends BaseQuery<StIvtStructattr> {
private String lock_type;
private Boolean is_used;
private String vehicle_code;
private String material;
private Boolean has;
@Override
public void paramMapping() {
super.doP.put("search", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build());

View File

@@ -64,12 +64,12 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
System.out.println(in);
}
@Override
public void changeStruct(String struct_code, String vehicle_code, String task_type) {
public void changeStruct(String struct_code, String vehicle_code, String task_type,Boolean in_storage) {
String now = DateUtil.now();
this.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code",vehicle_code)
.set("update_time",now)
.set("lock_type", StatusEnum.LOCK.code(""))
.set("lock_type", StatusEnum.LOCK.code(""))
.eq("struct_code",struct_code));
//变动结存记录"如果没有载具物料信息则不考虑结存TODO:多级载具处理
List<MdPbVehicleMater> vehicleMaters = vehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", vehicle_code));
@@ -91,7 +91,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
record.setStruct_code(struct_code);
record.setStor_code(attr.getStor_code());
record.setVehicle_form_data(vehicleMater.getForm_data());
record.setGrowth( StatusEnum.IOBILL_TYPE_IN.check(task_type));
record.setGrowth(in_storage);
records.add(record);
}
if (!CollectionUtils.isEmpty(records)){

View File

@@ -43,13 +43,13 @@ public class BmExternalFieldMappingController {
@PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody BmExternalFieldMapping dto) {
mappingsService.save(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/addRows")
public ResponseEntity<Object> addRows(@RequestBody RequestMappingParam param) {
mappingsService.addRows(param);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping

View File

@@ -97,7 +97,7 @@ public class SyncFormMappingController {
if (needSave!=null && (Boolean)needSave){
formDataService.saveBatch(pmFormDatas);
}
return new ResponseEntity<>(TableDataInfo.build(pmFormDatas),HttpStatus.CREATED);
return new ResponseEntity<>(TableDataInfo.build(pmFormDatas),HttpStatus.OK);
}
}

View File

@@ -47,7 +47,7 @@ public class SysCodeRuleController {
// //SaCheckPermission("genCode:add")
public ResponseEntity<Object> create(@Validated @RequestBody SysCodeRule codeRule) {
codeRuleService.create(codeRule);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("删除编码")

View File

@@ -42,7 +42,7 @@ public class SysCodeRuleDetailController {
// //SaCheckPermission("genCode:add")
public ResponseEntity<Object> create(@RequestBody SysCodeRuleDetail codeRuleDetail){
codeDetailService.create(codeRuleDetail);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("删除编码明细")

View File

@@ -89,7 +89,7 @@ public class DeptController {
// //SaCheckPermission("dept:add")
public ResponseEntity<Object> create(@Validated @RequestBody SysDept resources){
deptService.createDept(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
//
@Log("修改部门")

View File

@@ -57,7 +57,7 @@ public class SysDictController {
@PostMapping
public ResponseEntity<Object> create(@RequestBody Dict dict){
dictService.create(dict);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@@ -94,7 +94,7 @@ public class SysDictController {
@PostMapping("/dictDetail")
public ResponseEntity<Object> createDetail(@RequestBody Dict resources){
dictService.createDetail(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改字典详情")

View File

@@ -99,7 +99,7 @@ public class SysMenuController {
//SaCheckPermission("menu:add")
public ResponseEntity<Object> create(@RequestBody SysMenu form) {
iSysMenuService.create(form);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改菜单")

View File

@@ -50,7 +50,7 @@ class SysParamController {
////SaCheckPermission("param:add")
public ResponseEntity<Object> create(@Validated @RequestBody Param param) {
paramService.create(param);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@@ -77,7 +77,7 @@ class SysParamController {
//("根据编码获取值")
@SaIgnore
public ResponseEntity<Object> getValueByCode(@RequestBody String code) {
return new ResponseEntity<>(paramService.findByCode(code), HttpStatus.CREATED);
return new ResponseEntity<>(paramService.findByCode(code), HttpStatus.OK);
}
}

View File

@@ -50,7 +50,7 @@ public class SysDataPermissionController {
////SaCheckPermission("@el.check('dataPermission:add')")
public ResponseEntity<Object> create(@Validated @RequestBody SysDataPermission permission) {
dataPermissionService.create(permission);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@@ -90,7 +90,7 @@ public class SysDataPermissionController {
//("保存数据权限")
public ResponseEntity<Object> saveDataPermission(@RequestBody JSONObject datas){
dataPermissionService.savePermission(datas);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/dataShow")

View File

@@ -60,7 +60,7 @@ public class SysQuartzJobController {
throw new BadRequestException("A new " + ENTITY_NAME + " cannot already have an ID");
}
quartzJobService.createJob(resources);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改定时任务")

View File

@@ -50,7 +50,7 @@ public class SysRoleController {
//SaCheckPermission("roles:add")
public ResponseEntity<Object> create(@RequestBody JSONObject param) {
roleService.create(param);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改角色")

View File

@@ -63,7 +63,7 @@ public class UserController {
@PostMapping
public ResponseEntity<Object> create(@RequestBody JSONObject user){
userService.create(user);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改用户")

View File

@@ -1,8 +1,5 @@
_ _ ___________ _ _____ _ ___________ _____
| \ | | _ | ___ \ | | ___| | | ___| ___|_ _|
| \| | | | | |_/ / | | |__ | | | |__ | |_ | |
| . ` | | | | ___ \ | | __|| | | __|| _| | |
| |\ \ \_/ / |_/ / |____| |___| |____| |___| | | |
\_| \_/\___/\____/\_____/\____/\_____/\____/\_| \_/
:: Spring Boot :: (v2.1.0.RELEASE)
------------------------------
托盘库编码FStockPallet
料箱库编码: FStockId
虚拟库编码: FicStockId
------------------------------

View File

@@ -42,7 +42,7 @@ public class ${className}Controller {
//@PreAuthorize("@el.check('${changeClassName}:add')")
public ResponseEntity<Object> create(@Validated @RequestBody ${className}Dto dto){
${changeClassName}Service.create(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping