opt:界面优化,手持出入库优化;
This commit is contained in:
@@ -80,6 +80,7 @@
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = ext.material_id
|
||||
<where>
|
||||
1 = 1
|
||||
AND ext.status = '02'
|
||||
<if test="param.stor_id != null and param.stor_id != ''">
|
||||
AND
|
||||
attr.stor_id = #{param.stor_id}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
gro.frozen_qty,
|
||||
gro.create_time,
|
||||
gro.qty_unit_name,
|
||||
gro.qty_unit_id,
|
||||
gro.material_id,
|
||||
gro.pcsn,
|
||||
gro.group_id,
|
||||
@@ -60,6 +61,7 @@
|
||||
gro.frozen_qty,
|
||||
gro.create_time,
|
||||
gro.qty_unit_name,
|
||||
gro.qty_unit_id,
|
||||
gro.material_id,
|
||||
gro.pcsn,
|
||||
gro.group_id,
|
||||
|
||||
@@ -21,4 +21,9 @@ public class EXTConstant {
|
||||
* ACS下发任务接口地址
|
||||
*/
|
||||
public final static String SEND_TASK_ACS_API = "api/wms/task";
|
||||
|
||||
/**
|
||||
* RCS下发任务接口地址
|
||||
*/
|
||||
public final static String SEND_TASK_RCS_API = "ics/taskOrder/addTask";
|
||||
}
|
||||
|
||||
@@ -9,14 +9,39 @@ package org.nl.wms.ext.enums;
|
||||
* @since 2025-06-09
|
||||
*/
|
||||
public enum ResultAcsStatus {
|
||||
|
||||
/**
|
||||
* 执行中
|
||||
*/
|
||||
EXECUTING("1", "执行中", "执行中"),
|
||||
CANCEL("3", "取消", "取消"),
|
||||
|
||||
|
||||
/**
|
||||
* 发送失败
|
||||
*/
|
||||
SEND_FAIL("5", "发送失败", "发送失败"),
|
||||
/**
|
||||
* 执行中
|
||||
*/
|
||||
EXECUTING("6", "执行中", "执行中"),
|
||||
/**
|
||||
* 执行失败
|
||||
*/
|
||||
EXECUTE_FAIL("7", "执行失败", "执行失败"),
|
||||
/**
|
||||
* 完成
|
||||
*/
|
||||
FINISHED("2", "完成", "完成");
|
||||
FINISHED("8", "完成", "完成"),
|
||||
|
||||
/**
|
||||
* 已下发
|
||||
*/
|
||||
ISSUE("9", "已下发", "已下发"),
|
||||
|
||||
/**
|
||||
* 等待确认
|
||||
*/
|
||||
WAIT_CONFIRM("10", "等待确认", "等待确认");
|
||||
|
||||
|
||||
ResultAcsStatus(String code, String name, String desc) {
|
||||
@@ -24,7 +49,14 @@ public enum ResultAcsStatus {
|
||||
this.name = name;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public static ResultAcsStatus fromCode(String code) {
|
||||
for (ResultAcsStatus value : values()) {
|
||||
if (value.code.equals(code)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private String code;
|
||||
private String name;
|
||||
private String desc;
|
||||
|
||||
@@ -28,6 +28,7 @@ public class NotifyUtil {
|
||||
if (IOSConstant.IS_DELETE_NO.equals(connectValue)) {
|
||||
log.info("未连接系统,跳过下发!");
|
||||
}
|
||||
log.info("下发ACS任务开始下发,api:{}下发参数为:-------------------{}", api, param);
|
||||
String url = getParam(sysParamService, systemType) + api;
|
||||
try {
|
||||
String response = HttpRequest.post(url).body(String.valueOf(param)).execute().body();
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.gateway.controller;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.gateway.dto.FeedBackTaskDto;
|
||||
import org.nl.wms.gateway.dto.InteracteDto;
|
||||
import org.nl.wms.gateway.service.IGateWayService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -27,10 +28,19 @@ public class GateWayController {
|
||||
|
||||
@Resource
|
||||
private IGateWayService gateWayService;
|
||||
@PostMapping("/apply")
|
||||
@PostMapping("/apply1")
|
||||
@SaIgnore
|
||||
@Log("外层服务请求wms")
|
||||
public ResponseEntity<Object> apply(@RequestBody InteracteDto form) {
|
||||
return new ResponseEntity<>(TableDataInfo.buildJson(gateWayService.apply(form)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/apply")
|
||||
@Log(value = "RCS给WMS反馈任务状态")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> receiveTaskStatus(@RequestBody FeedBackTaskDto param) {
|
||||
return new ResponseEntity<>(gateWayService.receiveTaskStatus(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package org.nl.wms.gateway.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class FeedBackTaskDto implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 货位号 */
|
||||
private String storageNum;
|
||||
|
||||
/** 子任务状态 */
|
||||
private String subTaskStatus;
|
||||
|
||||
/** 订单ID */
|
||||
private String orderId;
|
||||
|
||||
/** 设备编码 */
|
||||
private String deviceCode;
|
||||
|
||||
/** 模型流程编码 */
|
||||
private String modelProcessCode;
|
||||
|
||||
/** 子任务类型ID */
|
||||
private String subTaskTypeId;
|
||||
|
||||
/** 子任务ID */
|
||||
private String subTaskId;
|
||||
|
||||
/** 设备编号 */
|
||||
private String deviceNum;
|
||||
|
||||
/** 二维码内容 */
|
||||
private String qrContent;
|
||||
|
||||
/** 子任务序号 */
|
||||
private String subTaskSeq;
|
||||
|
||||
/** ICS任务单明细ID */
|
||||
private String icsTaskOrderDetailId;
|
||||
|
||||
/** 状态码 */
|
||||
private Integer status;
|
||||
|
||||
/** 错误描述 */
|
||||
private String errorDesc;
|
||||
|
||||
/** 货架当前位置 */
|
||||
private String shelfCurrPosition;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.gateway.dto;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.Data;
|
||||
import org.nl.wms.ext.service.util.AcsResponse;
|
||||
|
||||
/**
|
||||
* @Author: gbx
|
||||
@@ -43,5 +44,17 @@ public class RcsResponse {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求成功
|
||||
* @return RcsResponse
|
||||
*/
|
||||
public static RcsResponse requestOk() {
|
||||
RcsResponse result = new RcsResponse();
|
||||
result.setCode(HttpStatus.HTTP_OK);
|
||||
result.setDesc("请求成功");
|
||||
result.setResponseDate(DateUtil.now());
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.gateway.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.service.util.AcsResponse;
|
||||
import org.nl.wms.gateway.dto.FeedBackTaskDto;
|
||||
import org.nl.wms.gateway.dto.InteracteDto;
|
||||
import org.nl.wms.gateway.dto.RcsResponse;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -26,6 +27,8 @@ public interface IGateWayService {
|
||||
JSONObject apply(InteracteDto<Map> param);
|
||||
|
||||
|
||||
RcsResponse receiveTaskStatus(FeedBackTaskDto param);
|
||||
|
||||
|
||||
/**
|
||||
* 下发Rcs任务
|
||||
|
||||
@@ -5,26 +5,36 @@ import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.system.enums.SysParamConstant;
|
||||
import org.nl.wms.ext.enums.EXTConstant;
|
||||
import org.nl.wms.ext.enums.ResultAcsStatus;
|
||||
import org.nl.wms.ext.util.NotifyUtil;
|
||||
import org.nl.wms.gateway.dto.FeedBackTaskDto;
|
||||
import org.nl.wms.gateway.dto.InteracteDto;
|
||||
import org.nl.wms.gateway.dto.RcsResponse;
|
||||
import org.nl.wms.gateway.service.IGateWayService;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.TaskFactory;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
@@ -38,6 +48,10 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
public class GateWayServiceImpl implements IGateWayService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
@Resource
|
||||
private Map<String, AbstractTask> applyTaskMap;
|
||||
@Autowired
|
||||
@@ -122,8 +136,65 @@ public class GateWayServiceImpl implements IGateWayService {
|
||||
*/
|
||||
@Override
|
||||
public RcsResponse renotifyRcs(List<String> list) {
|
||||
return NotifyUtil.apiNotify(EXTConstant.SEND_TASK_ACS_API, SysParamConstant.IS_CONNECT_RCS, SysParamConstant.RCS_URL, list, RcsResponse.class);
|
||||
return NotifyUtil.apiNotify(EXTConstant.SEND_TASK_RCS_API, SysParamConstant.IS_CONNECT_RCS, SysParamConstant.RCS_URL, list, RcsResponse.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
public RcsResponse receiveTaskStatus(FeedBackTaskDto param) {
|
||||
//返回处理失败的任务
|
||||
String orderId = param.getOrderId();
|
||||
RLock lock = redissonClient.getLock(orderId);
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
SchBaseTask taskObj = iSchBaseTaskService.getByCode(orderId);
|
||||
// rcs反馈的任务类型
|
||||
String rcsTaskStatus = param.getStatus().toString();
|
||||
ResultAcsStatus rcsStatusEnum = ResultAcsStatus.fromCode(rcsTaskStatus);
|
||||
if (rcsStatusEnum == null) {
|
||||
throw new BadRequestException("反馈的任务状态码不受支持: " + rcsTaskStatus);
|
||||
}
|
||||
TaskStatus status;
|
||||
switch (rcsStatusEnum) {
|
||||
case EXECUTING:
|
||||
status = TaskStatus.EXECUTING;
|
||||
break;
|
||||
case FINISHED:
|
||||
status = TaskStatus.FINISHED;
|
||||
break;
|
||||
case CANCEL:
|
||||
status = TaskStatus.CANCELED;
|
||||
break;
|
||||
case SEND_FAIL:
|
||||
status = TaskStatus.UNFINISHED;
|
||||
break;
|
||||
case EXECUTE_FAIL:
|
||||
status = TaskStatus.UNFINISHED;
|
||||
break;
|
||||
case ISSUE:
|
||||
status = TaskStatus.ISSUED;
|
||||
break;
|
||||
case WAIT_CONFIRM:
|
||||
status = TaskStatus.CREATED;
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("反馈的任务状态码不受支持: " + rcsStatusEnum.getName());
|
||||
}
|
||||
// 根据配置编码执行相关配置内的方法
|
||||
AbstractTask task = taskFactory.getTask(taskObj.getConfig_code());
|
||||
task.updateTaskStatus(taskObj.getTask_code(), status);
|
||||
|
||||
} else {
|
||||
throw new BadRequestException("任务编号为:" + orderId + "的任务正在执行逻辑处理中!");
|
||||
}
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
return RcsResponse.requestOk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,6 @@ public class PdaIosOutController {
|
||||
@PostMapping("/getMaterialDtl")
|
||||
@Log("物料出库获取物料库存")
|
||||
public ResponseEntity<Object> getMaterialDtl(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "search");
|
||||
return new ResponseEntity<>(pdaIosOutService.getMaterialDtl(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -62,7 +61,7 @@ public class PdaIosOutController {
|
||||
@PostMapping("/materialConfirm")
|
||||
@Log("线边库物料出库确认")
|
||||
public ResponseEntity<Object> materialConfirm(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode", "group_id");
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode");
|
||||
RedissonUtils.lock(() -> {
|
||||
pdaIosOutService.materialConfirm(whereJson);
|
||||
}, "materialConfirm" + whereJson.getString("group_id"), null);
|
||||
@@ -87,7 +86,7 @@ public class PdaIosOutController {
|
||||
* 货架与站点绑定或解绑
|
||||
*/
|
||||
@PostMapping("bindOrUnbind")
|
||||
@Log("货架与站点绑定或解绑")
|
||||
@Log("绑定或解绑")
|
||||
public ResponseEntity<Object> bindOrUnbind(@RequestBody JSONObject whereJson) {
|
||||
assertNotBlankJson(whereJson, "请求参数不能为空", "siteCode", "shelfCode", "mode");
|
||||
RedissonUtils.lock(() -> {
|
||||
|
||||
@@ -23,7 +23,6 @@ import org.nl.wms.basedata_manage.service.dto.MaterialQuery;
|
||||
import org.nl.wms.pda.ios_manage.service.PdaIosInService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseRegionService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
@@ -39,6 +38,7 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -104,7 +104,11 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 更新库存工具类
|
||||
*/
|
||||
@Autowired
|
||||
private UpdateIvtUtils updateIvtUtils;
|
||||
|
||||
/**
|
||||
* 仓库服务
|
||||
@@ -292,6 +296,8 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse confirmReturnMaterial(JSONObject whereJson) {
|
||||
//校验仓库
|
||||
Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"),whereJson.getString("storagevehicle_code"));
|
||||
//校验回库起点
|
||||
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("storagevehicle_code")));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
@@ -301,9 +307,6 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
whereJson.put("site_code",schBasePoint.getPoint_code());
|
||||
whereJson.put("config_code", IOSConstant.BACK_IN_TASK);
|
||||
whereJson.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
// 查询库区
|
||||
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id"));
|
||||
whereJson.put("stor_id", sectDao.getStor_id());
|
||||
whereJson.put("sect_code", sectDao.getSect_code());
|
||||
//入库分配
|
||||
@@ -375,8 +378,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse confirmIn(JSONObject whereJson) {
|
||||
// 查询库区
|
||||
Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id"));
|
||||
Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"),whereJson.getString("vehicle_code"));
|
||||
whereJson.put("stor_id", sectDao.getStor_id());
|
||||
whereJson.put("sect_code", sectDao.getSect_code());
|
||||
//物料组盘入库
|
||||
@@ -408,20 +410,21 @@ public class PdaIosInServiceImpl implements PdaIosInService {
|
||||
//空载具入库
|
||||
whereJson.put("qty", 1);
|
||||
whereJson.put("pcsn", whereJson.getString("material_id"));
|
||||
String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : StatusEnum.VEHICLE_TYPE.code("空料箱");
|
||||
String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : "2".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空料箱") : StatusEnum.VEHICLE_TYPE.code("空货架");
|
||||
whereJson.put("material_id", materialCode);
|
||||
//组盘
|
||||
groupPlate(whereJson);
|
||||
// 生成空载具入库任务
|
||||
whereJson.put("config_code", IOSConstant.VEHICLE_IN_TASK);
|
||||
whereJson.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
whereJson.put("storagevehicle_code", whereJson.getString("vehicle_code"));
|
||||
//入库分配
|
||||
divStructNoBills(whereJson);
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 组织入库插入数据
|
||||
* @param whereJson {
|
||||
|
||||
@@ -26,7 +26,6 @@ import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
|
||||
import org.nl.wms.pda.ios_manage.service.PdaIosOutService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
@@ -201,23 +200,20 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse materialConfirm(JSONObject whereJson) {
|
||||
//创建出库单/明细/分配
|
||||
GroupPlate plateDao = mdPbGroupplateMapper.selectOne(
|
||||
new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id")));
|
||||
JSONObject json = whereJson.getJSONObject("obj");
|
||||
Structattr sectDao = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getStruct_code, whereJson.getString("struct_code")));
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(plateDao.getMaterial_id());
|
||||
.eq(Structattr::getStruct_code, json.getString("struct_code")));
|
||||
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(json.getString("material_id"));
|
||||
whereJson.put("material_id", materDao.getMaterial_id());
|
||||
whereJson.put("material_code", materDao.getMaterial_code());
|
||||
whereJson.put("store_id", sectDao.getStor_id());
|
||||
whereJson.put("store_code", sectDao.getStor_code());
|
||||
whereJson.put("store_name", sectDao.getStor_name());
|
||||
whereJson.put("sec", sectDao.getSect_id());
|
||||
whereJson.put("qty", plateDao.getQty());
|
||||
whereJson.put("pcsn", plateDao.getPcsn());
|
||||
whereJson.put("unit_id", plateDao.getQty_unit_id());
|
||||
whereJson.put("unit_name", plateDao.getQty_unit_name());
|
||||
whereJson.put("qty", json.getString("qty"));
|
||||
whereJson.put("pcsn", json.getString("pcsn"));
|
||||
whereJson.put("unit_id", json.getString("qty_unit_id"));
|
||||
whereJson.put("unit_name", json.getString("qty_unit_name"));
|
||||
//创建出库单据
|
||||
String disId = createOutBills(whereJson);
|
||||
//锁定货位
|
||||
@@ -229,9 +225,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
JSONObject taskForm = new JSONObject();
|
||||
taskForm.put("task_type", "STOutTask");
|
||||
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskForm.put("PickingLocation", whereJson.getString("struct_code"));
|
||||
taskForm.put("PickingLocation", json.getString("struct_code"));
|
||||
taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
|
||||
taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
taskForm.put("vehicle_code", json.getString("storagevehicle_code"));
|
||||
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
|
||||
String taskId = stOutTask.create(taskForm);
|
||||
//更新任务id
|
||||
@@ -241,8 +237,8 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
);
|
||||
//更新组盘记录表
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getFrozen_qty, plateDao.getQty())
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"))
|
||||
.set(GroupPlate::getFrozen_qty, json.getString("qty"))
|
||||
.eq(GroupPlate::getGroup_id, json.getString("group_id"))
|
||||
);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
@@ -464,10 +460,8 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
if (ObjectUtils.isNotEmpty(cxPointLists)) {
|
||||
throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再做绑定或解绑!");
|
||||
}
|
||||
//更新点位
|
||||
LambdaUpdateWrapper<SchBasePoint> wrapper = new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode"));
|
||||
if ("1" .equals(whereJson.getString("mode"))) {
|
||||
LambdaUpdateWrapper<SchBasePoint> wrapper = new LambdaUpdateWrapper<>();
|
||||
if (IOSEnum.BIND_OR_UNBIND.code("绑定").equals(whereJson.getString("mode"))) {
|
||||
if (StringUtils.isNotBlank(sitePoint.getVehicle_code())) {
|
||||
throw new BadRequestException("当前站点已绑定货架:" + sitePoint.getVehicle_code() + ",请先解绑:" + sitePoint.getVehicle_code());
|
||||
}
|
||||
@@ -476,13 +470,29 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
if (shelfPoint != null) {
|
||||
throw new BadRequestException("当前货架已绑定在站点:" + sitePoint.getPoint_code() + ",请先解绑。");
|
||||
}
|
||||
//绑定库存
|
||||
GroupPlate plateDao = mdPbGroupplateMapper.selectOne(
|
||||
new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, whereJson.getString("shelfCode")).eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
|
||||
if (plateDao != null) {
|
||||
plateDao.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("入库"));
|
||||
mdPbGroupplateMapper.updateById(plateDao);
|
||||
}
|
||||
wrapper.set(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode"))
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"));
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"))
|
||||
.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode"));
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(sitePoint.getParent_point_code())) {
|
||||
List<SchBasePoint> sitePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getParent_point_code, sitePoint.getParent_point_code()).eq(SchBasePoint::getIs_used, true));
|
||||
wrapper.in(SchBasePoint::getPoint_code, sitePointList);
|
||||
} else {
|
||||
wrapper.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode"));
|
||||
}
|
||||
wrapper.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"));
|
||||
}
|
||||
wrapper.set(SchBasePoint::getUpdate_time, DateUtil.now())
|
||||
.set(SchBasePoint::getIs_has_workder, BaseDataEnum.IS_YES_NOT.code("否"))
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName());
|
||||
iSchBasePointService.update(wrapper);
|
||||
return PdaResponse.requestOk();
|
||||
@@ -514,6 +524,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
if ("1".equals(whereJson.getString("type"))) {
|
||||
BigDecimal qty = groupPlate.getQty().subtract(groupPlate.getFrozen_qty()).abs();
|
||||
updateWrapper.set(GroupPlate::getQty, qty).set(GroupPlate::getFrozen_qty, 0);
|
||||
if (qty.compareTo(BigDecimal.ZERO) == 0) {
|
||||
updateWrapper.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"));
|
||||
}
|
||||
} else {
|
||||
//强制确认
|
||||
updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0);
|
||||
@@ -525,7 +538,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
.eq(GroupPlate::getGroup_id, whereJson.getString("group_id"));
|
||||
//更新组盘记录表
|
||||
mdPbGroupplateMapper.update(new GroupPlate(), updateWrapper);
|
||||
//库存绑定到出库点。
|
||||
//库存绑定到出库点
|
||||
iSchBasePointService.update(new SchBasePoint(), new LambdaUpdateWrapper<>(SchBasePoint.class)
|
||||
.set(SchBasePoint::getVehicle_code, groupPlate.getStoragevehicle_code())
|
||||
.set(SchBasePoint::getIos_id, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
@@ -564,7 +577,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
|
||||
task.put("point_code1", schBasePoint.getPoint_code());
|
||||
task.put("point_code2", pointCode);
|
||||
task.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
pdaPointTask.create(task);
|
||||
// 更新起点绑定id
|
||||
iSchBasePointService.update(
|
||||
|
||||
@@ -47,7 +47,6 @@ public class PdaSchPointController {
|
||||
}
|
||||
|
||||
@PostMapping("/dissect")
|
||||
@Log("绑定")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> dissect(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSchPointService.dissect(whereJson), HttpStatus.OK);
|
||||
|
||||
@@ -36,7 +36,6 @@ public interface PdaSchPointService extends IService<SchBasePoint> {
|
||||
PdaResponse binding(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 绑定
|
||||
* @param whereJson {
|
||||
* point_code: 点位编码
|
||||
* point_name: 点位名称
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.ext.service.util.AcsResponse;
|
||||
import org.nl.wms.pda.sch_manage.service.PdaSchTaskService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -78,7 +78,6 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
task.put("point_code1", whereJson.getString("start_point_code"));
|
||||
task.put("point_code2", whereJson.getString("end_point_code"));
|
||||
task.put("vehicle_code", whereJson.getString("storagevehicle_code"));
|
||||
task.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
pdaPointTask.create(task);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
package org.nl.wms.sch_manage.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Author: Liuxy
|
||||
* @Description:
|
||||
* @Date: 2025/5/20
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum PointStatusEnum {
|
||||
/**
|
||||
* 空位/无货
|
||||
*/
|
||||
EMPTY_POINT("1", "空位/无货"),
|
||||
/**
|
||||
* 有料
|
||||
*/
|
||||
FULL_POINT("3", "有料"),
|
||||
/**
|
||||
* 空载具/有货
|
||||
*/
|
||||
EMPTY_VEHICLE("2", "空载具/有货");
|
||||
|
||||
private final String code;
|
||||
private final String label;
|
||||
}
|
||||
@@ -49,25 +49,23 @@ public enum StatusEnum {
|
||||
"SUB_PickMtrl", "19", "委外用料清单", "PRD_PPBOM", "20", "生产用料清单", "PRD_PickMtrl", "21", "生产领料单",
|
||||
"SP_PickMtrl", "22", "简单生产领料单", "STK_TransferDirect", "23", "调拨出库单", "STK_MisDelivery", "26", "其他出库单", "PRD_ReturnMtrl", "27", "生产退料单", "PRD_FeedMtrl", "28", "生产补料单", "SUB_RETURNMTRL", "29", "委外退料单")),
|
||||
|
||||
/**
|
||||
* 任务优先级
|
||||
*/
|
||||
PRIORITY_TYPE(ForkMap.of(
|
||||
"最低", "1", null, "普通", "5", null, "较高", "6", null, "加急", "7", null, "移库", "8", null
|
||||
)),
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
TASK_TYPE(ForkMap.pushAll(IOBILL_TYPE_IN.code, IOBILL_TYPE_OUT.code, IOBILL_TYPE_MOVE.code, EXT_TASK_TYPE.code, OTHER_TASK_TYPE.code)),
|
||||
|
||||
ACS_TYPE(ForkMap.of(
|
||||
"立库", "1", null, "AGV任务", "2", null, "CTU任务", "3", null,"三楼CTU", "4", null
|
||||
)),
|
||||
ACS_SYSTEM_TYPE(ForkMap.of(
|
||||
"NDC", "1", null, "仙工", "2", null,"海柔CTU", "5", null, "海康CTU", "6", null
|
||||
ACS_TASK_TYPE(ForkMap.of(
|
||||
"叉车", "1", "ccbyrw01", "CTU", "2", "ctubyrw01", "潜伏车", "3", "qfbyrw01", "桁架任务", "4", null
|
||||
)),
|
||||
|
||||
/**
|
||||
* 任务优先级
|
||||
*/
|
||||
ACS_PRIORITY(ForkMap.of(
|
||||
"最低", 8, null, "普通", 6, null, "高", 4, null)),
|
||||
|
||||
|
||||
/**
|
||||
* 点位锁类型
|
||||
*/
|
||||
@@ -86,18 +84,14 @@ public enum StatusEnum {
|
||||
STOCK_INFO(ForkMap.of("托盘库", "FStockPallet", null, "料箱库", "FStockId", null, "虚拟库", "FicStockId", null, "二楼ctu缓存库", "CStockId", null,
|
||||
"二楼货架缓存库", "HStockId", null)),
|
||||
|
||||
|
||||
SORT_TYPE(ForkMap.of(
|
||||
"升序", "1", null, "降序", "2", null
|
||||
)),
|
||||
POINT_TYPE(ForkMap.of(
|
||||
"空货架", "0", null, "满货架", "1", null
|
||||
)),
|
||||
BIND_TYPE(ForkMap.of(
|
||||
"解绑", "0", null, "绑定", "1", null, "不操作", "3", null
|
||||
)),
|
||||
VEHICLE_TYPE(ForkMap.of(
|
||||
"空托盘", "KT001", null, "空料箱", "KL001", null
|
||||
"空托盘", "KT001", 1, "空料箱", "KL001", 2, "空货架", "KH001", 3
|
||||
));
|
||||
|
||||
/**
|
||||
@@ -115,9 +109,13 @@ public enum StatusEnum {
|
||||
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||
}
|
||||
|
||||
public Integer intCode(String desc) {
|
||||
return this.getCode().getNode(desc);
|
||||
}
|
||||
|
||||
public String getR(String code) {
|
||||
for (String key : this.getCode().getKeySet()) {
|
||||
if (key.equals(code)){
|
||||
if (key.equals(code)) {
|
||||
String r = this.getCode().getR(key);
|
||||
if (StringUtils.isEmpty(r)) {
|
||||
throw new BadRequestException(this.name() + "对应编码" + code + "未定义R的数据");
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package org.nl.wms.sch_manage.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.MapOf;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 任务枚举类
|
||||
*
|
||||
* @author Liuxy
|
||||
* @Date 2025/05/26
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum TaskEnum {
|
||||
|
||||
// ACS优先级别
|
||||
ACS_PRIORITY(MapOf.of("1", "1", "2", "2", "3", "3"))
|
||||
;
|
||||
|
||||
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 String check(String code) {
|
||||
for (Map.Entry<String, String> entry : this.getCode().entrySet())
|
||||
if (entry.getValue().equals("code")) {
|
||||
return entry.getValue();
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,7 @@ public class SchBaseTask implements Serializable {
|
||||
private String create_id;
|
||||
|
||||
|
||||
private String priority;
|
||||
private Integer priority;
|
||||
|
||||
|
||||
private String create_name;
|
||||
|
||||
@@ -16,7 +16,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
@@ -27,6 +26,7 @@ import org.nl.wms.sch_manage.service.dao.mapper.SchBaseRegionMapper;
|
||||
import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch_manage.service.dto.SchBasePointQuery;
|
||||
import org.nl.wms.sch_manage.service.util.PointUtils;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -137,7 +137,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
}
|
||||
String pointStatus = entity.getPoint_status();
|
||||
// 根据点位状态来判断更新内容
|
||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
|
||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(IOSEnum.POINT_STATUS.code("无货"))) {
|
||||
entity.setVehicle_type("");
|
||||
entity.setVehicle_code("");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.nl.wms.sch_manage.service.util;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.TaskOrderDetail;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -79,7 +78,7 @@ public class AcsTaskDto {
|
||||
/**
|
||||
* 优先级
|
||||
*/
|
||||
String priority;
|
||||
Integer priority;
|
||||
|
||||
/**
|
||||
* 载具号
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
package org.nl.wms.sch_manage.service.util;
|
||||
import lombok.Data;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -72,8 +73,9 @@ public class BackInTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -64,8 +65,9 @@ public class MoveTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
@@ -76,14 +78,12 @@ public class MoveTask extends AbstractTask {
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type("1");
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -66,8 +67,9 @@ public class PdaPointTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
@@ -143,8 +145,7 @@ public class PdaPointTask extends AbstractTask {
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
iSchBasePointService.update(new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
|
||||
@@ -58,10 +58,11 @@ public class StInTask extends AbstractTask {
|
||||
task.setConfig_code(json.getString("task_type"));
|
||||
task.setPoint_code1(json.getString("PickingLocation"));
|
||||
task.setPoint_code2(json.getString("PlacedLocation"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -57,9 +58,10 @@ public class StOutTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("PickingLocation"));
|
||||
task.setPoint_code2(json.getString("PlacedLocation"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.service.util.tasks;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
@@ -19,6 +20,9 @@ import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -32,6 +36,11 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
@Component(value = "VehicleInTask")
|
||||
@TaskType("VehicleInTask")
|
||||
public class VehicleInTask extends AbstractTask {
|
||||
/**
|
||||
* 组盘记录
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
/**
|
||||
* 任务服务类
|
||||
@@ -67,8 +76,9 @@ public class VehicleInTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
@@ -79,7 +89,6 @@ public class VehicleInTask extends AbstractTask {
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
@@ -146,17 +155,23 @@ public class VehicleInTask extends AbstractTask {
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getTaskdtl_id, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
);
|
||||
// 更新库存
|
||||
iMdPbGroupplateService.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))
|
||||
);
|
||||
// 更新任务
|
||||
taskObj.setRemark("已完成");
|
||||
|
||||
@@ -58,9 +58,10 @@ public class VehicleOutTask extends AbstractTask {
|
||||
task.setPoint_code1(json.getString("PickingLocation"));
|
||||
task.setPoint_code2(json.getString("PlacedLocation"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setAcs_trace_id(json.getString("acs_task_type"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
|
||||
@@ -42,7 +42,9 @@ public enum IOSEnum {
|
||||
)),
|
||||
|
||||
// 点位状态
|
||||
POINT_STATUS(MapOf.of("无货", "0", "有货", "1" )),
|
||||
POINT_STATUS(MapOf.of("无货", "0", "有货", "1", "空载具", "2" )),
|
||||
// 绑定操作
|
||||
BIND_OR_UNBIND(MapOf.of("解绑", "0", "绑定", "1" )),
|
||||
|
||||
// 单据创建类型
|
||||
CREATE_MODE(MapOf.of("PC产生", "1", "终端产生", "2", "外部接口产生", "3")),
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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 com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -28,6 +29,7 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
@@ -61,8 +63,12 @@ import java.util.stream.Collectors;
|
||||
* 2025/5/29
|
||||
*/
|
||||
@Service
|
||||
public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> implements IOutBillService {
|
||||
|
||||
public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> implements IOutBillService {
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
@Resource
|
||||
private IOStorInvMapper ioStorInvMapper;
|
||||
|
||||
@@ -1212,6 +1218,14 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
finish_map.put("inv_id", null);
|
||||
finish_map.put("inv_code", null);
|
||||
iStructattrService.updateStatusByCode("1", finish_map);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, task.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, task.getVehicle_code())
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"))
|
||||
);
|
||||
if (StringUtils.isBlank(task.getHandle_status())) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
@@ -12,9 +12,8 @@ import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.MoveTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
@@ -90,7 +89,6 @@ public class StIvtMoveinvdtlServiceImpl extends ServiceImpl<StIvtMoveinvdtlMappe
|
||||
jsonTask.put("point_code1",json.getString("turnout_struct_code"));
|
||||
jsonTask.put("point_code2",json.getString("turnin_struct_code"));
|
||||
jsonTask.put("vehicle_code",json.getString("storagevehicle_code"));
|
||||
jsonTask.put("Priority", TaskEnum.ACS_PRIORITY.code("1"));
|
||||
String task_id = moveTask.create(jsonTask);
|
||||
// 明细数据
|
||||
StIvtMoveinvdtl dtlDao = new StIvtMoveinvdtl();
|
||||
|
||||
@@ -7,14 +7,20 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.ISectattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.TaskOrderDetail;
|
||||
import org.nl.wms.sch_manage.service.util.TaskOrderDetail;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
@@ -24,10 +30,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@@ -44,6 +47,17 @@ public class UpdateIvtUtils {
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService;
|
||||
/**
|
||||
* 载具属性服务
|
||||
*/
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
|
||||
/**
|
||||
* 库区服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISectattrService iSectattrService;
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
@@ -124,6 +138,10 @@ public class UpdateIvtUtils {
|
||||
if (CollectionUtils.isNotEmpty(list)) {
|
||||
throw new BadRequestException("当前载具存在任务:" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")) + ",请在WMS任务列表中检查!");
|
||||
}
|
||||
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new QueryWrapper<MdPbStoragevehicleinfo>().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, where.getString("vehicle_code")));
|
||||
String acsTaskType = StatusEnum.ACS_TASK_TYPE.getR(mdPbStoragevehicleinfo.getStoragevehicle_type());
|
||||
where.put("acs_task_type", acsTaskType);
|
||||
where.put("vehicle_type", mdPbStoragevehicleinfo.getStoragevehicle_type());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -334,11 +352,10 @@ public class UpdateIvtUtils {
|
||||
|
||||
public String sendRcsParam(SchBaseTask taskDao) {
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setModelProcessCode(taskDao.getVehicle_type());
|
||||
acsTaskDto.setModelProcessCode(taskDao.getAcs_trace_id());
|
||||
acsTaskDto.setOrderId(taskDao.getTask_code());
|
||||
acsTaskDto.setFromSystem("WMS");
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setShelfNumber(taskDao.getVehicle_code());
|
||||
TaskOrderDetail detail = new TaskOrderDetail();
|
||||
detail.setTaskPath(taskDao.getPoint_code2() + "," + taskDao.getPoint_code1());
|
||||
detail.setShelfNumber(taskDao.getVehicle_code());
|
||||
@@ -350,7 +367,26 @@ public class UpdateIvtUtils {
|
||||
List<TaskOrderDetail> detailList = new ArrayList<>();
|
||||
detailList.add(detail);
|
||||
acsTaskDto.setTaskOrderDetail(detailList);
|
||||
return JSON.toJSONString(acsTaskDto, true);
|
||||
return JSON.toJSONString(acsTaskDto, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验仓库是否允许该载具类型出入库
|
||||
*/
|
||||
public Sectattr checkVehicleType(String sectId, String vehicleCode) {
|
||||
//查询载具
|
||||
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new QueryWrapper<MdPbStoragevehicleinfo>().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, vehicleCode));
|
||||
String vehicleType = mdPbStoragevehicleinfo.getStoragevehicle_type();
|
||||
// 查询库区
|
||||
Sectattr sectDao = iSectattrService.getById(sectId);
|
||||
String vehicleTypeList = sectDao.getExt_id();
|
||||
if (StringUtils.isBlank(vehicleTypeList)) {
|
||||
throw new BadRequestException("库区:【" + sectDao.getSect_code() + "】未配置允许的载具类型!");
|
||||
}
|
||||
List<String> allowedVehicleTypes = Arrays.asList(vehicleTypeList.split(","));
|
||||
if (!allowedVehicleTypes.contains(vehicleType)) {
|
||||
throw new BadRequestException("该载具类型【" + mdPbStoragevehicleinfo.getStoragevehicle_name() + "】不在仓库【"+sectDao.getSect_name()+"】的出入库范围内!");
|
||||
}
|
||||
return sectDao;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?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_oulun}?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_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
server:
|
||||
port: 8011
|
||||
#配置数据源
|
||||
spring:
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
allow-circular-references: true
|
||||
datasource:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3302}/${DB_NAME:wms_oulun}?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_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:Noble123456.}
|
||||
# 初始连接数
|
||||
initial-size: 15
|
||||
# 最小连接数
|
||||
min-idle: 25
|
||||
# 最大连接数
|
||||
max-active: 40
|
||||
# 是否自动回收超时连接
|
||||
remove-abandoned: true
|
||||
# 超时时间(以秒数为单位)
|
||||
remove-abandoned-timeout: 180
|
||||
# 获取连接超时时间
|
||||
max-wait: 9000
|
||||
# 连接有效性检测时间
|
||||
time-between-eviction-runs-millis: 20000
|
||||
# 连接在池中最小生存的时间
|
||||
min-evictable-idle-time-millis: 300000
|
||||
# 连接在池中最大生存的时间
|
||||
max-evictable-idle-time-millis: 900000
|
||||
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
|
||||
test-while-idle: true
|
||||
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
|
||||
test-on-borrow: false
|
||||
# 是否在归还到池中前进行检验
|
||||
test-on-return: false
|
||||
# 检测连接是否有效
|
||||
validation-query: select 1 from dual
|
||||
# 配置监控统计
|
||||
webStatFilter:
|
||||
enabled: true
|
||||
stat-view-servlet:
|
||||
enabled: true
|
||||
url-pattern: /druid/*
|
||||
reset-enable: false
|
||||
allow: 127.0.0.1
|
||||
filters:
|
||||
DruidFilter,stat
|
||||
log-abandoned: false
|
||||
keep-alive: true
|
||||
keep-alive-between-time-millis: 20000
|
||||
|
||||
redis:
|
||||
#数据库索引
|
||||
database: ${REDIS_DB:1}
|
||||
#host: ${REDIS_HOST:127.0.0.1}
|
||||
host: ${REDIS_HOST:localhost}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PWD:}
|
||||
#连接超时时间
|
||||
timeout: 5000
|
||||
redisson:
|
||||
config: |
|
||||
threads: 4
|
||||
nettyThreads: 4
|
||||
singleServerConfig:
|
||||
connectionMinimumIdleSize: 8
|
||||
connectionPoolSize: 8
|
||||
address: redis://127.0.0.1:6379
|
||||
idleConnectionTimeout: 10000
|
||||
timeout: 3000
|
||||
|
||||
# 登录相关配置
|
||||
login:
|
||||
# 登录缓存
|
||||
cache-enable: true
|
||||
# 是否限制单用户登录
|
||||
single-login: false
|
||||
# 验证码
|
||||
login-code:
|
||||
# 验证码类型配置 查看 LoginProperties 类
|
||||
code-type: arithmetic
|
||||
# 登录图形验证码有效时间/分钟
|
||||
expiration: 2
|
||||
# 验证码高度
|
||||
width: 111
|
||||
# 验证码宽度
|
||||
heigth: 36
|
||||
# 内容长度
|
||||
length: 2
|
||||
# 字体名称,为空则使用默认字体
|
||||
font-name:
|
||||
# 字体大小
|
||||
font-size: 25
|
||||
|
||||
#jwt
|
||||
jwt:
|
||||
header: Authorization
|
||||
# 令牌前缀
|
||||
token-start-with: Bearer
|
||||
# 必须使用最少88位的Base64对该令牌进行编码
|
||||
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
|
||||
# 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
|
||||
token-validity-in-seconds: 14400000
|
||||
# 在线用户key
|
||||
online-key: online-token-
|
||||
# 验证码
|
||||
code-key: code-key-
|
||||
# token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
|
||||
detect: 1800000
|
||||
# 续期时间范围,默认1小时,单位毫秒
|
||||
renew: 3600000
|
||||
|
||||
sa-token:
|
||||
# token 名称 (同时也是cookie名称)
|
||||
token-name: Authorization
|
||||
# token 有效期,单位s 默认30天, -1代表永不过期
|
||||
timeout: 2592000
|
||||
# token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
|
||||
activity-timeout: -1
|
||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||
is-concurrent: true
|
||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||
is-share: false
|
||||
# token风格
|
||||
token-style: random-128
|
||||
# 是否输出操作日志
|
||||
is-log: false
|
||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||
# token 前缀
|
||||
token-prefix:
|
||||
is-read-cookie: false
|
||||
is-print: false
|
||||
lucene:
|
||||
index:
|
||||
path: D:\lms\lucene\index
|
||||
@@ -13,7 +13,7 @@ spring:
|
||||
profiles:
|
||||
active: dev
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
time-zone: GMT+8730 885 969
|
||||
data:
|
||||
redis:
|
||||
repositories:
|
||||
@@ -61,7 +61,7 @@ file:
|
||||
avatarMaxSize: 5
|
||||
logging:
|
||||
file:
|
||||
path: D:\log\beian\lms
|
||||
path: D:\log\wms
|
||||
config: classpath:logback-spring.xml
|
||||
# sa-token白名单配置
|
||||
security:
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<included>
|
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||
<property name="LOG_HOME" value="${logPath}"/>
|
||||
<!-- 按照每天生成日志文件 -->
|
||||
<appender name="FILE_ERPTOWMS" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名-->
|
||||
<FileNamePattern>${LOG_HOME}/ErpToWms/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<!--日志文件保留天数-->
|
||||
<maxHistory>15</maxHistory>
|
||||
<!--单个日志最大容量 至少10MB才能看得出来-->
|
||||
<maxFileSize>200MB</maxFileSize>
|
||||
<!--所有日志最多占多大容量-->
|
||||
<totalSizeCap>2GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<charset>${log.charset}</charset>
|
||||
</encoder>
|
||||
|
||||
</appender>
|
||||
<!-- 打印sql -->
|
||||
<logger name="org.nl.wms.ext.service.impl.ErpToWmsServiceImpl" level="info" additivity="false">
|
||||
<appender-ref ref="FILE_ERPTOWMS"/>
|
||||
</logger>
|
||||
</included>
|
||||
@@ -33,33 +33,12 @@
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="ErpLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!--日志文件输出的文件名-->
|
||||
<FileNamePattern>${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
|
||||
<!--日志文件保留天数-->
|
||||
<maxHistory>7</maxHistory>
|
||||
<!--单个日志最大容量 至少10MB才能看得出来-->
|
||||
<maxFileSize>100MB</maxFileSize>
|
||||
<!--所有日志最多占多大容量-->
|
||||
<totalSizeCap>20GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<!--异步到文件-->
|
||||
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
|
||||
<discardingThreshold>2</discardingThreshold>
|
||||
<queueSize>500</queueSize>
|
||||
<appender-ref ref="FILE"/>
|
||||
</appender>
|
||||
<appender name="asyncERPFileAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||
<discardingThreshold>2</discardingThreshold>
|
||||
<queueSize>500</queueSize>
|
||||
<appender-ref ref="ErpLogFile"/>
|
||||
</appender>
|
||||
<appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
|
||||
<properties>
|
||||
<property>
|
||||
@@ -102,39 +81,86 @@
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
</springProfile>s
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.wms.system_manage.service.quartz.task" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.hibernate" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.quartz" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="com.google" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework.data" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
<springProfile name="prod">
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.wms.system_manage.service.quartz.task" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncERPFileAppender"/>
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.hibernate" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.quartz" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="com.google" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.redisson" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
<logger name="org.springframework.data" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
<!--测试环境:打印控制台-->
|
||||
|
||||
Reference in New Issue
Block a user