add 项目更新

This commit is contained in:
zhoujj
2026-01-30 17:44:28 +08:00
parent 0f979310d7
commit d0c14a6b58
63 changed files with 1748 additions and 411 deletions

View File

@@ -2,6 +2,7 @@ package org.nl.wms.basedata_manage.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -87,6 +88,9 @@ public class GroupController {
JSONObject row = rows.getJSONObject(i);
GroupPlate groupPlate = row.toJavaObject(GroupPlate.class);
String material_code=row.getString("material_code");
if(!ObjectUtil.isNotEmpty(iMdMeMaterialbaseService.getByCode(material_code))){
throw new BadRequestException("传入的物料信息不存在");
}
groupPlate.setMaterial_id(material_code);
groupPlate.setStoragevehicle_code(storagevehicleCode);
groupPlate.setGroup_id(IdUtil.getStringId());

View File

@@ -0,0 +1,13 @@
package org.nl.wms.basedata_manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype;
public interface IMdPbStoragevehicletypeService extends IService<MdPbStoragevehicletype> {
/**
* 根据编码获取载具
* @param storagevehicle_stype 载具类型细分
* @return 实体类
*/
MdPbStoragevehicletype getByCode(String storagevehicle_stype);
}

View File

@@ -0,0 +1,32 @@
package org.nl.wms.basedata_manage.service.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 载具信息表
* </p>
*
* @author Zjj
* @since 2025-12-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("md_pb_storagevehicletype")
public class MdPbStoragevehicletype {
private static final long serialVersionUID = 1L;
private String storagevehicle_stype;
/**
* 1.木栈板 2.胶合栈板 3.烟熏栈板 4.纸栈板
*/
private String storagevehicle_btype;
private String storagevehicle_size;
/**
* 1.RT16 2.PS20 3.RT16和PS20
*/
private String suitable_car;
private String storagevehicle_name;
private String car_width;
}

View File

@@ -13,4 +13,5 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
*/
public interface MdPbStoragevehicleinfoMapper extends BaseMapper<MdPbStoragevehicleinfo> {
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.basedata_manage.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype;
/**
* <p>
* 载具类型表 Mapper 接口
* </p>
*
* @author Liuxy
* @since 2025-05-14
*/
public interface MdPbStoragevehicletypeMapper extends BaseMapper<MdPbStoragevehicletype> {
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicletypeMapper">
</mapper>

View File

@@ -42,6 +42,8 @@ public class StrategyStructParam {
*/
private String storagevehicle_code;
private String suitable_car;
/**
* 载具明细:混料的话则是数组
*/

View File

@@ -17,7 +17,9 @@ import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper;
import org.nl.wms.system_manage.service.dict.ISysDictService;
import org.nl.wms.system_manage.service.dict.dao.Dict;
@@ -40,12 +42,13 @@ import java.util.Set;
public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStoragevehicleinfoMapper, MdPbStoragevehicleinfo> implements IMdPbStoragevehicleinfoService {
@Autowired
private ISysDictService dictService;
@Autowired
private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService;
@Override
public IPage<MdPbStoragevehicleinfo> queryAll(Map whereJson, PageQuery page) {
// 查询条件
LambdaQueryWrapper<MdPbStoragevehicleinfo> queryWrapper = new QueryWrapper<MdPbStoragevehicleinfo>().lambda();
String search = MapUtil.getStr(whereJson, "storagevehicle_code");
String search = MapUtil.getStr(whereJson, "vehicle_code");
String storagevehicle_type = MapUtil.getStr(whereJson, "storagevehicle_type");
if (ObjectUtil.isNotEmpty(search)) {
@@ -75,21 +78,23 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
throw new BadRequestException("当前载具编码已存在【"+dto.getString("storagevehicle_code")+"");
}
//转编码类型:
Dict dict = dictService.getOne(new QueryWrapper<Dict>().eq("para1", dto.getString("storagevehicle_type")));
if (dict==null){
throw new BadRequestException("此载具类型"+dto.getString("vehicle_type")+"没有配置字典值");
}
// Dict dict = dictService.getOne(new QueryWrapper<Dict>().eq("para1", dto.getString("storagevehicle_type")));
// if (dict==null){
// throw new BadRequestException("此载具类型"+dto.getString("vehicle_type")+"没有配置字典值");
// }
MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(dto.getString("storagevehicle_type"));
JSONArray resultCodeArr = new JSONArray();
MdPbStoragevehicleinfo vehicleInfo = dto.toJavaObject(MdPbStoragevehicleinfo.class);
MdPbStoragevehicleinfo entity = new MdPbStoragevehicleinfo();
entity.setStoragevehicle_id(IdUtil.getStringId());
entity.setStoragevehicle_code(dto.getString("storagevehicle_code"));
entity.setStoragevehicle_name(dict.getLabel());
entity.setStoragevehicle_name(mdPbStoragevehicletype.getStoragevehicle_name());
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
entity.setCreate_id(SecurityUtils.getCurrentUserId());
entity.setIs_used(vehicleInfo.getIs_used());
entity.setStoragevehicle_type(dict.getValue());
entity.setStoragevehicle_type(mdPbStoragevehicletype.getStoragevehicle_btype());
entity.setVehicle_height(vehicleInfo.getVehicle_height());
entity.setVehicle_width(vehicleInfo.getVehicle_width());
entity.setVehicle_long(vehicleInfo.getVehicle_long());

View File

@@ -0,0 +1,27 @@
package org.nl.wms.basedata_manage.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicletypeMapper;
import org.springframework.stereotype.Service;
@Service
public class MdPbStoragevehicletypeServiceImpl extends ServiceImpl<MdPbStoragevehicletypeMapper, MdPbStoragevehicletype> implements IMdPbStoragevehicletypeService {
@Override
public MdPbStoragevehicletype getByCode(String storagevehicle_stype) {
MdPbStoragevehicletype one = this.getOne(
new QueryWrapper<MdPbStoragevehicletype>().lambda()
.eq(MdPbStoragevehicletype::getStoragevehicle_stype, storagevehicle_stype)
);
if (ObjectUtil.isEmpty(one)) {
throw new BadRequestException("载具类型为【"+storagevehicle_stype+"】的不存在!");
}
return one;
}
}

View File

@@ -128,6 +128,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
.eq(Structattr::getSect_id,id));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(Structattr dto) {
@@ -357,11 +358,33 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
}
List<String> strategy = one.getStrategy();
Map<String, Decisioner> decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class);
QueryWrapper<Structattr> query = new QueryWrapper<Structattr>()
.eq("is_used", true)
QueryWrapper<Structattr> query = new QueryWrapper<Structattr>();
if ("3".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.isNull("storagevehicle_code");
.ne("width",1)
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if("2".equals(param.getSuitable_car())){
query.eq("is_used", true)
.eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("width",1)
.ne("layer_num",4)
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("1".equals(param.getSuitable_car())){
query.eq("is_used", true)
.eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("layer_num",4)
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
}
List<Structattr> list = this.list(query);
for (String decisionerType : strategy) {
Decisioner decisioner = decisionerMap.get(decisionerType);

View File

@@ -46,6 +46,7 @@ public class NearbyRuleHandler extends Decisioner<Structattr, JSONObject> {
*/
@Override
public List<Structattr> handler(List<Structattr> list, JSONObject param) {
if (CollectionUtils.isEmpty(list)) {
throw new BadRequestException("当前分配策略无可用货位");
}

View File

@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2025-06-09
*/
@RestController
@RequestMapping("/api/wms")
@RequestMapping("/api/wms/task")
@Slf4j
public class AcsToWmsController {
@Autowired

View File

@@ -16,8 +16,12 @@ public enum ResultAcsStatus {
/**
* 完成
*/
FINISHED("2", "完成", "完成");
FINISHED("2", "完成", "完成"),
/**
* 取货完成
*/
MOVEFINISH("10","取货完成","取货完成");
ResultAcsStatus(String code, String name, String desc) {
this.code = code;

View File

@@ -2,14 +2,19 @@ package org.nl.wms.ext_manage.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.ext_manage.enums.ResultAcsStatus;
import org.nl.wms.ext_manage.service.AcsToWmsService;
import org.nl.wms.sch_manage.enums.PointStatusEnum;
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.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.redisson.api.RLock;
@@ -18,7 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -46,18 +54,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
@Autowired
private ISchBasePointService iSchBasePointService;
/**
* 任务工厂服务
*/
@Autowired
private TaskFactory taskFactory;
@Autowired
private SchBasePointMapper schBasePointMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
public Map<String, Object> receiveTaskStatusAcs(String string) {
log.info("acs向lms反馈任务状态请求参数--------------------------------------" + string);
JSONObject data=new JSONObject();
JSONArray array = JSONArray.parseArray(string);
String finish_code=null;
//返回处理失败的任务
JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) {
@@ -78,6 +93,36 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 完成
status = TaskStatus.FINISHED;
iSchBaseTaskService.updateById(taskObj);
} else if(ResultAcsStatus.MOVEFINISH.getCode().equals(acs_task_status)){
if(!taskObj.getPoint_code2().equals("CKFPW")){
log.info("任务号{}已经申请二次分配",taskObj.getTask_code());
finish_code=taskObj.getPoint_code2();
}else{
log.info("任务号{}开始申请二次分配",taskObj.getTask_code());
String region_code=null;
if(taskObj.getConfig_code().equals("STOutTask")){
region_code="CKQ";
}
List<SchBasePoint> regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code,region_code)
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
.eq(SchBasePoint::getLock_up,"0")
.eq(SchBasePoint::getIs_used,"1")
.orderByDesc(SchBasePoint::getOut_order_seq)
);
if (CollectionUtils.isEmpty(regionCode)){
throw new BadRequestException("当前库区"+regionCode+"无可用点位");
}
finish_code=regionCode.get(0).getPoint_code();
SchBasePoint schBasePoint=new SchBasePoint();
schBasePoint=iSchBasePointService.getByCode(finish_code);
schBasePoint.setLock_up(true);
iSchBasePointService.update(schBasePoint);
taskObj.setPoint_code2(finish_code);
taskObj.setTask_status(TaskStatus.FINISHFP.getCode());
iSchBaseTaskService.update(taskObj);
}
status = TaskStatus.FINISHFP;
} else {
// 取消
status = TaskStatus.CANCELED;
@@ -98,7 +143,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
result.put("data", new JSONObject());
result.put("data", data);
result.put("finish_code",finish_code);
result.put("errArr", errArr);
log.info("acs向lms反馈任务状态返回参数--------------------------------------" + result.toString());
return result;

View File

@@ -26,6 +26,10 @@ public enum TaskStatus {
* 执行中
*/
EXECUTING("4", "执行中", "执行中"),
/**
* 分配完成
*/
FINISHFP("8", "执行中", "执行中"),
/**
* 完成
*/
@@ -40,6 +44,7 @@ public enum TaskStatus {
UNFINISHED("7", "未完成", "未完成");
TaskStatus(String code, String name, String desc) {
this.code = code;
this.name = name;

View File

@@ -159,4 +159,5 @@ public class SchBasePoint implements Serializable {
private String task_warn;
@TableField(exist = false)
private String storagevehicle_code;
private Boolean lock_up;
}

View File

@@ -123,4 +123,6 @@ public class SchBaseTask implements Serializable {
@TableField(exist = false)
private String task_name;
private String car_type;
private String car_width;
}

View File

@@ -50,16 +50,19 @@
<if test="whereJson.is_used != null">
AND p.is_used = #{whereJson.is_used}
</if>
<choose>
<!-- Case: whereJson.lock_type is true -->
<when test="whereJson.lock_type">
AND (p.ing_task_code IS NOT NULL AND p.ing_task_code <![CDATA[<>]]> '')
</when>
<!-- Case: whereJson.lock_type is false -->
<otherwise>
AND (p.ing_task_code IS NULL OR p.ing_task_code = '')
</otherwise>
</choose>
<if test="whereJson.lock_up != null">
AND p.lock_up = #{whereJson.lock_up}
</if>
<!-- <choose>-->
<!-- &lt;!&ndash; Case: whereJson.lock_type is true &ndash;&gt;-->
<!-- <when test="whereJson.lock_type">-->
<!-- AND (p.ing_task_code IS NOT NULL AND p.ing_task_code <![CDATA[<>]]> '')-->
<!-- </when>-->
<!-- &lt;!&ndash; Case: whereJson.lock_type is false &ndash;&gt;-->
<!-- <otherwise>-->
<!-- AND (p.ing_task_code IS NULL OR p.ing_task_code = '')-->
<!-- </otherwise>-->
<!-- </choose>-->
</where>
ORDER BY p.region_code, p.point_code, p.point_type
</select>

View File

@@ -16,6 +16,6 @@ public class SchBasePointQuery implements Serializable {
private String point_type;
private String point_status;
private Boolean is_used;
private Boolean lock_type;
private Boolean lock_up;
private Boolean parent_point;
}

View File

@@ -192,9 +192,12 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Transactional
public void changeLock(JSONObject points) {
JSONArray data = points.getJSONArray("data");
Boolean lockType = points.getBoolean("lock_type");
Boolean lockType = points.getBoolean("lock_up");
List<SchBasePoint> pointList = data.toJavaList(SchBasePoint.class);
pointList.forEach(point -> point.setIng_task_code(lockType ? "" : "-"));
for (SchBasePoint point : pointList) {
point.setLock_up(lockType);
}
// pointList.forEach(point -> point.setIng_task_code(lockType ? "" : "-"));
this.updateBatchById(pointList);
}

View File

@@ -73,7 +73,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Override
@Transactional
public void update(SchBaseTask entity) {
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_code());
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_id());
if (dto == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}

View File

@@ -124,4 +124,10 @@ public class AcsTaskDto {
* 扩展属性
*/
Map<String, String> params;
/**
* 车辆类型 1 ps20 2 RT
*/
private String car_type;
private String car_width;
}

View File

@@ -39,7 +39,7 @@ public class AutoTask {
//定时任务
@SneakyThrows
public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName());
RLock lock = redissonClient.getLock(this.getClass().getName());
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {

View File

@@ -0,0 +1,159 @@
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.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
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.SchBaseTask;
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_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.service.dao.StIvtCheckdtl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component(value = "CheckInTask")
@TaskType("CheckInTask")
public class CheckInTask extends AbstractTask {
/**
* 任务服务类
*/
@Autowired
private ISchBaseTaskService taskService;
/**
* 仓位服务
*/
@Autowired
private IStructattrService iStructattrService;
/**
* 点位服务
*/
@Autowired
private ISchBasePointService iSchBasePointService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(json.getString("TaskCode"));
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("task_type"));
task.setPoint_code1(json.getString("PickingLocation"));
task.setPoint_code2(json.getString("PlacedLocation"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
return task.getTask_id();
}
@Override
@Transactional
protected void updateStatus(String task_code, TaskStatus status) {
// 校验任务
SchBaseTask taskObj = taskService.getByCode(task_code);
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成!");
}
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
throw new BadRequestException("该任务已取消!");
}
// 根据传来的类型去对任务进行操作
if (status.equals(TaskStatus.EXECUTING)) {
// 更新明细状态
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
taskObj.setRemark("执行中");
taskService.updateById(taskObj);
}
if (status.equals(TaskStatus.FINISHED)) {
this.finishTask(taskObj);
}
if (status.equals(TaskStatus.CANCELED)) {
this.cancelTask(taskObj);
}
}
@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");
acsTaskDto.setCar_type(taskDao.getCar_type());
if(StringUtils.isNoneBlank(taskDao.getCar_width())){
acsTaskDto.setCar_width(taskDao.getCar_width());
}
return acsTaskDto;
}
@Override
public void backMes(String task_code) {
}
@Override
@Transactional
public void forceFinish(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(taskObj);
}
@Transactional
public void finishTask(SchBaseTask taskObj) {
// 完成任务
this.taskConfirm(taskObj.getTask_code());
// 更新任务状态
taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj);
}
@Transactional
public void taskConfirm(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
// 更新终点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
);
}
@Override
@Transactional
public void cancel(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.cancelTask(taskObj);
}
@Transactional
public void cancelTask(SchBaseTask taskObj) {
// 更新任务状态
taskObj.setRemark("已取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj);
}
}

View File

@@ -0,0 +1,156 @@
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.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
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.SchBaseTask;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component(value = "CheckOutTask")
@TaskType("CheckOutTask")
public class CheckOutTask extends AbstractTask {
/**
* 任务服务类
*/
@Autowired
private ISchBaseTaskService taskService;
/**
* 仓位服务
*/
@Autowired
private IStructattrService iStructattrService;
/**
* 点位服务
*/
@Autowired
private ISchBasePointService iSchBasePointService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(json.getString("TaskCode"));
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("task_type"));
task.setPoint_code1(json.getString("PickingLocation"));
task.setPoint_code2(json.getString("PlacedLocation"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
return task.getTask_id();
}
@Override
@Transactional
protected void updateStatus(String task_code, TaskStatus status) {
// 校验任务
SchBaseTask taskObj = taskService.getByCode(task_code);
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
throw new BadRequestException("该任务已完成!");
}
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
throw new BadRequestException("该任务已取消!");
}
// 根据传来的类型去对任务进行操作
if (status.equals(TaskStatus.EXECUTING)) {
// 更新明细状态
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
taskObj.setRemark("执行中");
taskService.updateById(taskObj);
}
if (status.equals(TaskStatus.FINISHED)) {
this.finishTask(taskObj);
}
if (status.equals(TaskStatus.CANCELED)) {
this.cancelTask(taskObj);
}
}
@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("2");
acsTaskDto.setCar_type(taskDao.getCar_type());
if(StringUtils.isNoneBlank(taskDao.getCar_width())){
acsTaskDto.setCar_width(taskDao.getCar_width());
}
return acsTaskDto;
}
@Override
public void backMes(String task_code) {
}
@Override
@Transactional
public void forceFinish(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.finishTask(taskObj);
}
@Transactional
public void finishTask(SchBaseTask taskObj) {
// 完成任务
this.taskConfirm(taskObj.getTask_code());
// 更新任务状态
taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj);
}
@Transactional
public void taskConfirm(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
// 更新起点
iStructattrService.update(
new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
);
}
@Override
@Transactional
public void cancel(String task_code) {
SchBaseTask taskObj = taskService.getByCode(task_code);
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
this.cancelTask(taskObj);
}
@Transactional
public void cancelTask(SchBaseTask taskObj) {
// 更新任务状态
taskObj.setRemark("已取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj);
}
}

View File

@@ -4,10 +4,14 @@ 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 org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper;
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;
@@ -18,6 +22,9 @@ import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -41,6 +48,16 @@ public class StInTask extends AbstractTask {
@Resource
private IOStorInvDisMapper ioStorInvDisMapper;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
@Autowired
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
@Autowired
private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
@@ -52,7 +69,8 @@ public class StInTask extends AbstractTask {
task.setPoint_code2(json.getString("PlacedLocation"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
@@ -62,6 +80,7 @@ public class StInTask extends AbstractTask {
}
@Override
@Transactional
public AcsTaskDto sendAcsParam(String taskId) {
SchBaseTask taskDao = taskService.getById(taskId);
@@ -71,12 +90,12 @@ public class StInTask extends AbstractTask {
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
if (taskDao.getPoint_code2().contains("-")) {
acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_'));
}
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setTask_type("1");
acsTaskDto.setCar_type(taskDao.getCar_type());
if(StringUtils.isNoneBlank(taskDao.getCar_width())){
acsTaskDto.setCar_width(taskDao.getCar_width());
}
return acsTaskDto;
}
@@ -123,9 +142,9 @@ public class StInTask extends AbstractTask {
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("该任务不存在");
}
if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
throw new BadRequestException("任务状态必须为生成才能取消任务");
}
// if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
// throw new BadRequestException("任务状态必须为生成才能取消任务");
// }
this.cancelTask(taskObj);
}
@@ -145,6 +164,17 @@ public class StInTask extends AbstractTask {
@Transactional(rollbackFor = Exception.class)
public void cancelTask(SchBaseTask taskObj) {
rawAssistIStorService.taskCancel(taskObj);
//删除托盘和组盘
GroupPlate groupPlate=new GroupPlate();
String storagevehicle_code=taskObj.getVehicle_code();
groupPlate=iMdPbGroupplateService.getByCode(storagevehicle_code);
mdPbGroupplateMapper.deleteById(groupPlate);
MdPbStoragevehicleinfo mdPbStoragevehicleinfo=new MdPbStoragevehicleinfo();
mdPbStoragevehicleinfo=iMdPbStoragevehicleinfoService.getByCode(storagevehicle_code);
//将载具信息清除
mdPbStoragevehicleinfoMapper.deleteById(mdPbStoragevehicleinfo);
// 取消任务
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""))

View File

@@ -4,6 +4,7 @@ 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 org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;;
@@ -51,6 +52,8 @@ 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.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
@@ -71,12 +74,12 @@ public class StOutTask extends AbstractTask {
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
if (taskDao.getPoint_code2().contains("-")) {
acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_'));
}
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setTask_type("1");
acsTaskDto.setTask_type("2");
acsTaskDto.setCar_type(taskDao.getCar_type());
if(StringUtils.isNoneBlank(taskDao.getCar_width())){
acsTaskDto.setCar_width(taskDao.getCar_width());
}
return acsTaskDto;
}
@@ -140,7 +143,7 @@ public class StOutTask extends AbstractTask {
@Transactional(rollbackFor = Exception.class)
public void cancelTask(SchBaseTask taskObj) {
outBillService.taskCancel(taskObj);
// 取消任务
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""))

View File

@@ -2,6 +2,7 @@ package org.nl.wms.system_manage.service.quartz.config;
import lombok.RequiredArgsConstructor;
import org.nl.wms.system_manage.service.quartz.ISysQuartzJobService;
import org.nl.wms.system_manage.service.quartz.dao.SysQuartzJob;
import org.nl.wms.system_manage.service.quartz.utils.QuartzManage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -10,6 +11,8 @@ import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* <p>
* 项目启动时重新激活启用的定时任务
@@ -33,5 +36,9 @@ public class JobRunner implements ApplicationRunner {
*/
@Override
public void run(ApplicationArguments applicationArguments) {
log.info("--------------------注入定时任务---------------------");
List<SysQuartzJob> quartzJobs = quartzJobService.findByIsPauseIsFalse();
quartzJobs.forEach(quartzManage::addJob);
log.info("--------------------定时任务注入完成---------------------");
}
}

View File

@@ -84,6 +84,12 @@ public class IOSConstant {
*/
public final static String CHECK_POINT_CODE = "BCPCK5-9";
/**
* 出库分配点
*/
public final static String CKFPW_POINT_CODE = "CKFPW";
/**
* 数字1
*/

View File

@@ -55,6 +55,12 @@ public interface IInBillService extends IService<IOStorInv> {
void taskFinish(SchBaseTask task);
/**
* 入库任务取消
* @param task
*/
void taskCancel(SchBaseTask task);
List<IOStorInvDisDto> getDisDtl(Map whereJson);
Structattr autoDis(JSONObject whereJson);

View File

@@ -145,7 +145,7 @@ public interface IOutBillService extends IService<IOStorInv> {
*
* @param whereJson /
*/
String allSetPoint(JSONObject whereJson);
void allSetPoint(JSONObject whereJson);
/**
* 出库单强制确认(更新仓位以及库存信息)
@@ -167,5 +167,12 @@ public interface IOutBillService extends IService<IOStorInv> {
*/
void taskFinish(SchBaseTask task);
/**
* 出库任务取消
* @param task
*/
void taskCancel(SchBaseTask task);
IOStorInv getByCode(String bill_code);
}

View File

@@ -29,4 +29,6 @@ public class IOStorInvDtlDto extends IOStorInvDtl {
* 载具编号
*/
private String storagevehicle_code;
private String turnout_struct_code;
}

View File

@@ -21,11 +21,9 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.*;
import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper;
import org.nl.wms.basedata_manage.service.dto.StrategyMater;
@@ -109,6 +107,9 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
@Resource
private IWmsToWmsService iWmsToWmsService;
@Resource
private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService;
@Override
public IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page) {
HashMap<String, String> map = new HashMap<>();
@@ -269,22 +270,21 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
int row_size = 0;
JSONObject io_mst = new JSONObject();
String iostorinv_id = IdUtil.getStringId();
String bill_code= (String) whereJson.get("bill_code");
IOStorInv ioStorInv=new IOStorInv();
if(ObjectUtil.isNotEmpty(this.getByCode(bill_code))){
throw new BadRequestException("此入库批次号已经存在");
}
String source_name= (String) whereJson.get("bill_code");
String bill_code = CodeUtil.getNewCode("IN_STORE_CODE");
io_mst.put("iostorinv_id", iostorinv_id);
io_mst.put("bill_code", bill_code);
io_mst.put("source_name", source_name);
io_mst.put("io_type", IOSEnum.IO_TYPE.code("入库"));
io_mst.put("bill_type", StatusEnum.IOBILL_TYPE_IN.code("生产入库"));
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(new Date());
io_mst.put("biz_date",formattedDate);
BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById("1985609822694936576");
BsrealStorattr bsrealStorattr = iBsrealStorattrService.findByCode((String) whereJson.get("stor_code"));
String stor_id=bsrealStorattr.getStor_id();
String stor_code = bsrealStorattr.getStor_code();
String stor_name = bsrealStorattr.getStor_name();
io_mst.put("stor_id","1985609822694936576");
io_mst.put("stor_id",stor_id);
io_mst.put("stor_code", stor_code);
io_mst.put("stor_name", stor_name);
io_mst.put("remark", whereJson.get("remark"));
@@ -596,6 +596,9 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
JSONObject mst = JSONObject.parseObject(JSON.toJSONString(param));
String iostorinvId = param.getString("iostorinv_id");
String storagevehicleCode = param.getString("storagevehicle_code");
String storagevehicle_stype=param.getString("storagevehicle_type");
MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype);
String suitable_car=mdPbStoragevehicletype.getSuitable_car();
//判断该分配明细是否已经分配货位
List<IOStorInvDis> disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getIostorinv_id, iostorinvId)
@@ -632,6 +635,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
.sect_code(param.getString("sect_code"))
.stor_code(param.getString("stor_code"))
.storagevehicle_code(param.getString("storagevehicle_code"))
.suitable_car(suitable_car)
.strategyMaters(maters)
.build());
Structattr struct = structattrs.get(0);
@@ -778,14 +782,28 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
@Transactional(rollbackFor = Exception.class)
public void divPoint1(Map whereJson) {
String point_code = (String) whereJson.get("point_code");
String struct_code= (String) whereJson.get("struct_code");
Structattr structattr=new Structattr();
String car_type=null;
String car_width=null;
structattr=iStructattrService.getByCode(struct_code);
if(structattr.getLayer_num().equals(4)){
car_type="2";
String storagevehicle_stype=(String) whereJson.get("storagevehicle_type");
MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype);
car_width=mdPbStoragevehicletype.getCar_width();
}else{
car_type="1";
}
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STInTask");
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("PickingLocation", point_code);
task_form.put("PlacedLocation", whereJson.get("struct_code"));
task_form.put("PlacedLocation", struct_code);
task_form.put("vehicle_code", whereJson.get("storagevehicle_code"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
StInTask stInTask = SpringContextHolder.getBean("STInTask");
String task_id = stInTask.create(task_form);
@@ -954,6 +972,9 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
//获取单据编号
String bill_code=ioStorInv.getBill_code();
//
//
String source_name=ioStorInv.getSource_name();
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", structCode);
@@ -1005,13 +1026,16 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
//回传给wms
TOWMSMSG towmsmsg=new TOWMSMSG();
towmsmsg.setType("0");
towmsmsg.setBill_code(bill_code);
towmsmsg.setStatus("Finish");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus("200");
JSONObject jo=new JSONObject();
jo.put("storagevehicle_code",task.getVehicle_code());
jo.put("struct_name",task.getPoint_code2());
jo.put("struct_code",task.getPoint_code2());
GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code()));
GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code()
));
MdMeMaterialbase mdMeMaterialbase=mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code,groupPlate.getMaterial_id()));
jo.put("material_name",mdMeMaterialbase.getMaterial_name());
jo.put("material_code",mdMeMaterialbase.getMaterial_code());
@@ -1021,6 +1045,43 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
towmsmsg.setTableData(tableData);
iWmsToWmsService.FinishOutTask(towmsmsg);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void taskCancel(SchBaseTask task) {
List<IOStorInvDis> ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getTask_id, task.getTask_id())
);
if (CollectionUtils.isEmpty(ioStorInvDis)) {
throw new BadRequestException("未找到任务对应的分配明细");
}
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", task.getPoint_code2());
finish_map.put("storagevehicle_code",null);
finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("2", finish_map);
String iostorinvId = ioStorInvDis.get(0).getIostorinv_id();
String storagevehicleCode = ioStorInvDis.get(0).getStoragevehicle_code();
String structCode = ioStorInvDis.get(0).getStruct_code();
IOStorInvDis item1 = ioStorInvDis.get(0);
//获取出入库单标识
String iostorinv_id=item1.getIostorinv_id();
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
String source_name=ioStorInv.getSource_name();
TOWMSMSG towmsmsg=new TOWMSMSG();
towmsmsg.setType("0");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus("4");
JSONObject jo=new JSONObject();
jo.put("storagevehicle_code",task.getVehicle_code());
List<JSONObject> tableData=new ArrayList<>();
tableData.add(jo);
towmsmsg.setTableData(tableData);
iWmsToWmsService.FinishOutTask(towmsmsg);
}
@Override
public List<IOStorInvDisDto> getDisDtl(Map whereJson) {

View File

@@ -21,9 +21,11 @@ import org.nl.common.utils.IdUtil;;
import org.nl.config.SpringContextHolder;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
@@ -112,6 +114,9 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Resource
private IWmsToWmsService iWmsToWmsService;
@Resource
private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService;
@Override
public IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) {
HashMap<String, String> map = new HashMap<>(whereJson);
@@ -242,6 +247,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
}
}
@Override
public void deleteAll(String[] ids) {
String currentUserId = SecurityUtils.getCurrentUserId();
@@ -347,14 +354,12 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String iostorinv_id = IdUtil.getStringId();
String bill_code= (String) map.get("bill_code");
IOStorInv ioStorInv=new IOStorInv();
if(ObjectUtil.isNotEmpty(this.getByCode(bill_code))){
throw new BadRequestException("此入库批次号已经存在");
}
String source_name= (String) map.get("bill_code");
String bill_code = CodeUtil.getNewCode("OUT_STORE_CODE");
BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById("1985609822694936576");
map.put("iostorinv_id", iostorinv_id);
map.put("bill_code", bill_code);
map.put("source_name", source_name);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy -MM-dd");
String formattedDate = formatter.format(new Date());
map.put("biz_date",formattedDate);
@@ -379,7 +384,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
// 校验计划数量不能为零
double plan_qty = row.getDoubleValue("Plan_qty");
double plan_qty = row.getDoubleValue("plan_qty");
if (Double.compare(plan_qty, 0.0) == 0) {
throw new BadRequestException("数量不能为0");
}
@@ -397,10 +402,10 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
ioStorInvDtl.put("source_bill_code", row.getString("source_bill_code"));
ioStorInvDtl.put("source_bill_type", row.getString("source_bill_type"));
ioStorInvDtl.put("source_billdtl_id", row.getString("source_billdtl_id"));
ioStorInvDtl.put("plan_qty", row.get("Plan_qty"));
ioStorInvDtl.put("plan_qty", row.get("plan_qty"));
ioStorInvDtl.put("remark", row.getString("remark"));
ioStorInvDtl.put("assign_qty", "0");
ioStorInvDtl.put("unassign_qty", row.get("Plan_qty"));
ioStorInvDtl.put("unassign_qty", row.get("plan_qty"));
ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class));
@@ -584,7 +589,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
mater.setMaterial_id(material_id);
List<StrategyMater> list = new ArrayList<>();
list.add(mater);
Structattr outAllocation = iStructattrService.getByCode(whereJson.getString("turnout_struct_code"));
// Structattr outAllocation = iStructattrService.getByCode(whereJson.getString("turnout_struct_code"));
Structattr outAllocation = iStructattrService.getByCode(tableData.getJSONObject(i).getString("turnout_struct_code"));
int seq_no = 1;
BigDecimal allocation_canuse_qty=BigDecimal.ZERO;
// //分配明细
@@ -594,9 +600,9 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
ioStorInvDis.setIostorinvdtl_id(dtl.getIostorinvdtl_id());
ioStorInvDis.setSeq_no((seq_no++)+"");
ioStorInvDis.setSect_id(outAllocation.getSect_id());
ioStorInvDis.setPcsn(tableData.getJSONObject(0).getString("pcsn"));
ioStorInvDis.setMaterial_id(tableData.getJSONObject(0).getString("material_code"));
ioStorInvDis.setMaterial_code(tableData.getJSONObject(0).getString("material_code"));
ioStorInvDis.setPcsn(tableData.getJSONObject(i).getString("pcsn"));
ioStorInvDis.setMaterial_id(tableData.getJSONObject(i).getString("material_code"));
ioStorInvDis.setMaterial_code(tableData.getJSONObject(i).getString("material_code"));
ioStorInvDis.setSect_name(outAllocation.getSect_name());
ioStorInvDis.setSect_code(outAllocation.getSect_code());
ioStorInvDis.setStruct_id(outAllocation.getStruct_id());
@@ -604,10 +610,10 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
ioStorInvDis.setStruct_code(outAllocation.getStruct_code());
ioStorInvDis.setStoragevehicle_code(outAllocation.getStoragevehicle_code());
ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code(""));
ioStorInvDis.setQty_unit_id(tableData.getJSONObject(0).getString("qty_unit_id"));
ioStorInvDis.setQty_unit_name(tableData.getJSONObject(0).getString("qty_unit_name"));
ioStorInvDis.setQty_unit_id(tableData.getJSONObject(i).getString("qty_unit_id"));
ioStorInvDis.setQty_unit_name(tableData.getJSONObject(i).getString("qty_unit_name"));
ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成"));
String Plan_qty=tableData.getJSONObject(0).getString("Plan_qty");
String Plan_qty=tableData.getJSONObject(i).getString("plan_qty");
BigDecimal bigDecimal = new BigDecimal(Plan_qty);
ioStorInvDis.setPlan_qty(bigDecimal);
//锁定货位
@@ -621,21 +627,21 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
iStructattrService.updateStatusByCode("0",lock_map);
//更新组盘表冻结数量状态
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>()
.set(GroupPlate::getFrozen_qty, tableData.getJSONObject(0).getString("qty"))
.set(GroupPlate::getFrozen_qty, tableData.getJSONObject(i).getString("qty"))
.set(GroupPlate::getUpdate_time, now)
.eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code())
.eq(GroupPlate::getPcsn, tableData.getJSONObject(0).getString("pcsn"))
.eq(GroupPlate::getPcsn, tableData.getJSONObject(i).getString("pcsn"))
.eq(GroupPlate::getMaterial_id, whereJson.getString("material_code"))
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")));
//生成分配明细
ioStorInvDisMapper.insert(ioStorInvDis);
// allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty());
allocation_canuse_qty=bigDecimal;
//分配完成 结束分配
unassign_qty=unassign_qty.subtract(allocation_canuse_qty);
if (unassign_qty.doubleValue() <= 0){
break;
}
// //分配完成 结束分配
// unassign_qty=unassign_qty.subtract(allocation_canuse_qty);
// if (unassign_qty.doubleValue() <= 0){
// break;
// }
//更新详情
@@ -1133,7 +1139,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Override
@Transactional
public String allSetPoint(JSONObject whereJson) {
public void allSetPoint(JSONObject whereJson) {
//出库点
if (StrUtil.isBlank(whereJson.getString("region_code"))){
throw new BadRequestException("未选择出库区");
@@ -1141,13 +1147,17 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
List<SchBasePoint> regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
.eq(SchBasePoint::getPoint_status,PointStatusEnum.EMPTY_POINT.getCode())
.eq(SchBasePoint::getIs_used,true)
.eq(SchBasePoint::getLock_up,"0")
);
if (CollectionUtils.isEmpty(regionCode)){
throw new BadRequestException("当前库区"+regionCode+"无可用点位");
}
String pointCode=regionCode.get(0).getPoint_code();
// String pointCode=regionCode.get(0).getPoint_code();
// SchBasePoint schBasePoint=new SchBasePoint();
// schBasePoint=iSchBasePointService.getByCode(pointCode);
// schBasePoint.setLock_up("1");
// iSchBasePointService.update(schBasePoint);
String iostorinv_id = whereJson.getString("iostorinv_id");
//查询主表信息
IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id);
@@ -1167,13 +1177,28 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
for (String storageVehicleCode : groupDis.keySet()) {
List<IOStorInvDis> disList = groupDis.get(storageVehicleCode);
IOStorInvDis item = disList.get(0);
String struct_code= item.getStruct_code();
Structattr structattr=new Structattr();
String car_type=null;
String car_width=null;
structattr=iStructattrService.getByCode(struct_code);
if(structattr.getLayer_num().equals(4)){
car_type="2";
String storagevehicle_stype=(String) whereJson.get("storagevehicle_type");
MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype);
car_width=mdPbStoragevehicletype.getCar_width();
}else{
car_type="1";
}
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STOutTask");
task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE"));
task_form.put("PickingLocation", item.getStruct_code());
task_form.put("PlacedLocation", pointCode);
task_form.put("PickingLocation", struct_code);
task_form.put("PlacedLocation", IOSConstant.CKFPW_POINT_CODE);
task_form.put("vehicle_code", item.getStoragevehicle_code());
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
String task_id = stOutTask.create(task_form);
for (IOStorInvDis itemDis : disList) {
@@ -1183,11 +1208,10 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
dis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("生成"));
dis.setTask_id(task_id);
dis.setIs_issued(BaseDataEnum.IS_YES_NOT.code(""));
dis.setPoint_code(pointCode);
// dis.setPoint_code(pointCode);
ioStorInvDisMapper.updateById(dis);
}
}
return pointCode;
}
@Override
@@ -1197,7 +1221,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String iostorinv_id = whereJson.getString("iostorinv_id");
String iostorinv_id = whereJson.getString("iostorinv_ id");
//查询主表信息
IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id);
@@ -1342,6 +1366,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
//获取单据编号
String bill_code=ioStorInv.getBill_code();
//
String source_name=ioStorInv.getSource_name();
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", item.getStruct_code());
@@ -1356,6 +1382,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
point_code2=iSchBasePointService.getByCode(task.getPoint_code2());
point_code2.setVehicle_code(task.getVehicle_code());
point_code2.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
point_code2.setLock_up(false);
iSchBasePointService.update(point_code2);
//库存变动:根据冻结数更新物料库存
StructattrChangeDto changeDto = StructattrChangeDto.builder()
@@ -1398,13 +1425,15 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
//回传给wms
TOWMSMSG towmsmsg=new TOWMSMSG();
towmsmsg.setType("1");
towmsmsg.setBill_code(bill_code);
towmsmsg.setStatus("Finish");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus("200");
JSONObject jo=new JSONObject();
jo.put("storagevehicle_code",task.getVehicle_code());
jo.put("struct_name",task.getPoint_code2());
jo.put("struct_code",task.getPoint_code2());
GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>().eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code()));
GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code()));
MdMeMaterialbase mdMeMaterialbase=mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_id,groupPlate.getMaterial_id()));
jo.put("material_name",mdMeMaterialbase.getMaterial_name());
jo.put("material_code",mdMeMaterialbase.getMaterial_code());
@@ -1415,6 +1444,43 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
iWmsToWmsService.FinishOutTask(towmsmsg);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void taskCancel(SchBaseTask task) {
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", task.getPoint_code1());
finish_map.put("storagevehicle_code",null);
finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("2", finish_map);
List<IOStorInvDis> disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getTask_id, task.getTask_id())
);
// 完成当前任务对应的所有分配明细
for (IOStorInvDis ioStorInvDis : disList) {
ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
.eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id()));
}
IOStorInvDis item = disList.get(0);
//获取出入库单标识
String iostorinv_id=item.getIostorinv_id();
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
String source_name=ioStorInv.getSource_name();
TOWMSMSG towmsmsg=new TOWMSMSG();
towmsmsg.setType("1");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus("4");
JSONObject jo=new JSONObject();
jo.put("storagevehicle_code",task.getVehicle_code());
List<JSONObject> tableData=new ArrayList<>();
tableData.add(jo);
towmsmsg.setTableData(tableData);
iWmsToWmsService.FinishOutTask(towmsmsg);
}
@Override
public IOStorInv getByCode(String bill_code){
IOStorInv one = this.getOne(

View File

@@ -1,19 +1,30 @@
package org.nl.wms.wbwms.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.common.utils.IdUtil;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.wbwms.service.WmsToIWmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/ext/wms")
@@ -21,12 +32,20 @@ import org.springframework.web.bind.annotation.RestController;
public class WmsToIWmscontroller {
@Autowired
WmsToIWmsService wmsToIWmsService;
@Autowired
IStructattrService iStructattrService;
@PostMapping("/release")
@Log("WMS释放出库终点位置")
@SaIgnore
public ResponseEntity<Object> release(@RequestBody JSONObject param) {
return new ResponseEntity<>(wmsToIWmsService.release(param), HttpStatus.OK);
}
@PostMapping("/groupCheck")
@Log("WMS待检区任务推送")
@SaIgnore
public ResponseEntity<Object> groupCheck(@RequestBody JSONObject param) {
return new ResponseEntity<>(wmsToIWmsService.groupCheck(param), HttpStatus.OK);
}
@PostMapping("/group")
@Log("WMS入库任务推送")
@SaIgnore
@@ -49,6 +68,61 @@ public class WmsToIWmscontroller {
@Log("WMS盘点任务推送")
@SaIgnore
public ResponseEntity<Object> checkBillTask(@RequestBody JSONObject param) {
return new ResponseEntity<>(wmsToIWmsService.checkBillTask(param), HttpStatus.OK);
return new ResponseEntity<>(wmsToIWmsService. checkBillTask(param), HttpStatus.OK);
}
@PostMapping("/batchSaveAttr")
@SaIgnore
public ResponseEntity<Object> batchSaveAttr(@Validated @RequestBody JSONObject config) {
int = config.getInteger("x");
int = config.getInteger("y");
int = config.getInteger("z");
String sect_code = config.getString("sect_code");
String stor_code = config.getString("stor_code");
String pre = config.getString("pre");
String now = DateUtil.now();
ArrayList<Structattr> list = new ArrayList<>();
for (int x = 1; x <= ; x++) {
for (int y = 1; y <= ; y++) {
for (int z = 1; z <= ; z++) {
Structattr attr = new Structattr();
attr.setStruct_id(IdUtil.getStringId());
attr.setSect_code(sect_code);
attr.setStor_code(stor_code);
String nx = "" + x;
String ny = "" + y;
String nz = "" + z;
if(x<10){
nx="0"+nx;
}
if(y<10){
ny="0"+ny;
}
attr.setStruct_code(pre+nx+ny+"0"+nz);
attr.setStruct_name(pre+nx+ny+"0"+nz);
attr.setCreate_id("1");
attr.setRow_num(x);
attr.setCol_num(y);
attr.setBlock_num(5);
attr.setLayer_num(z);
attr.setCreate_time(now);
attr.setCreate_name("Admin");
attr.setStor_id("1985609997907791872");
attr.setSect_id("1985610807760785408");
attr.setSect_name("1楼半成品");
attr.setStor_name("1楼半成品");
attr.setIs_used(true);
attr.setIs_tempstruct("0");
attr.setLock_type("0");
list.add(attr);
}
}
}
Lists.partition(list,1000).stream().map((Function<List<Structattr>, CompletableFuture>) o->CompletableFuture.runAsync(() -> {
for (Structattr stIvtStructattr : o) {
iStructattrService.save(stIvtStructattr);
}
})).parallel().forEach(CompletableFuture::join);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
public interface WmsToIWmsService {
WmstoIWmsResponse release(JSONObject param);
WmstoIWmsResponse groupTask (JSONObject param);
WmstoIWmsResponse groupCheck(JSONObject param);
WmstoIWmsResponse outBillTask (JSONObject param);
WmstoIWmsResponse moveTask(JSONObject param);
WmstoIWmsResponse checkBillTask(JSONObject param);

View File

@@ -1,9 +1,11 @@
package org.nl.wms.wbwms.service.impl;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
@@ -75,11 +77,13 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService {
public JSONObject FinishOutTask(TOWMSMSG towmsmsg) {
JSONObject result = new JSONObject();
// 系统参数类
JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(towmsmsg), JSONObject.class);
log.info("FinishOutTask请求参数是-------------------" + jsonObject.toString());
String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue();
wmsUrl = wmsUrl + WMSConstant.INOUT_WMS_API;
try {
String resultMsg = HttpRequest.post(wmsUrl)
.body(String.valueOf(towmsmsg))
.body(String.valueOf(jsonObject))
.execute().body();
result = JSONObject.parseObject(resultMsg);
log.info("FinishOutTask接口输出参数为-------------------" + result.toString());
@@ -98,6 +102,8 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService {
@Override
public JSONObject FinishMoveTask(MoveToWmsMsg moveToWmsMsg) {
JSONObject result = new JSONObject();
log.info("FinishMoveTask请求参数是-------------------" + moveToWmsMsg.toString());
// 系统参数类
String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue();
wmsUrl = wmsUrl + WMSConstant.MOVE_WMS_API;
@@ -116,6 +122,7 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService {
@Override
public JSONObject FinishCheckTask(CheckToWmsMsg checkToWmsMsg) {
JSONObject result = new JSONObject();
log.info("FinishMoveTask请求参数是-------------------" + checkToWmsMsg.toString());
// 系统参数类
String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue();
wmsUrl = wmsUrl + WMSConstant.CHECK_WMS_API;

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -19,10 +20,14 @@ import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper;
import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper;
import org.nl.wms.sch_manage.enums.PointStatusEnum;
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.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.tasks.CheckInTask;
import org.nl.wms.sch_manage.service.util.tasks.CheckOutTask;
import org.nl.wms.sch_manage.service.util.tasks.MoveTask;
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
@@ -34,6 +39,7 @@ import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.IStIvtCheckmstService;
import org.nl.wms.warehouse_manage.service.IStIvtMoveinvService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_manage.service.dto.CheckInsertDto;
import org.nl.wms.wbwms.service.WmsToIWmsService;
import org.nl.wms.wbwms.service.dto.WmstoIWmsResponse;
@@ -61,6 +67,10 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
private GroupController groupController;
@Autowired
private IOStorInvDisMapper ioStorInvDisMapper;
@Resource
private SchBasePointMapper schBasePointMapper;
@Resource
private StructattrMapper structattrMapper;
@Autowired
IInBillService iInBillService;
@Autowired
@@ -69,6 +79,10 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
private IStIvtCheckmstService iStIvtCheckmstService;
@Autowired
private IMdPbGroupplateService iMdPbGroupplateService;
@Autowired
private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper;
@Autowired
private MdPbGroupplateMapper mdPbGroupplateMapper;
/**
* 移库任务配置类
*/
@@ -78,6 +92,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
IStIvtMoveinvService iStIvtMoveinvService;
@Override
public WmstoIWmsResponse release(JSONObject parm) {
log.info("WMS释放点位的请求参数为-------------------" + parm.toString());
//IWMS出库终点位置
String turnout_destination_code=parm.getString("turnout_destination_code");
SchBasePoint schBasePoint=new SchBasePoint();
@@ -87,14 +102,22 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
schBasePoint=iSchBasePointService.getByCode(turnout_destination_code);
//载具编码
String storagevehicle_code=schBasePoint.getVehicle_code();
iSchBasePointService.unLockPoint(turnout_destination_code);
//将组盘状态改为出库
groupPlate=iMdPbGroupplateService.getByCode(storagevehicle_code);
groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("出库"));
iMdPbGroupplateService.update(groupPlate);
// iSchBasePointService.unLockPoint(turnout_destination_code);
if(StringUtils.isNotEmpty(storagevehicle_code)) {
//将组盘状态改为出库
groupPlate = iMdPbGroupplateService.getByCode(storagevehicle_code);
mdPbGroupplateMapper.deleteById(groupPlate);
}
schBasePoint.setVehicle_code("");
schBasePoint.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
schBasePoint.setLock_up(false);
iSchBasePointService.update(schBasePoint);
MdPbStoragevehicleinfo mdPbStoragevehicleinfo=new MdPbStoragevehicleinfo();
if(StringUtils.isNotEmpty(storagevehicle_code)) {
mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(storagevehicle_code);
//将载具信息清除
mdPbStoragevehicleinfoMapper.deleteById(mdPbStoragevehicleinfo);
}
}catch (Exception e){
result.setCode("404");
result.setMsg("未找到出库货位");
@@ -102,14 +125,19 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
}
result.setMsg("出库位释放成功");
result.setCode(String.valueOf(HttpStatus.OK.value()));
log.info("WMS释放点位的返回参数为-------------------" + result.toString());
return result;
}
@Override
@Transactional
public WmstoIWmsResponse groupTask(JSONObject parm) {
log.info("WMS入库请求参数参数为-------------------" + parm.toString());
if(StringUtils.isBlank(parm.getString("point_code"))){
throw new BadRequestException("未传入地面入库点");
}
if(!ObjectUtil.isNotEmpty(iSchBasePointService.getByCode(parm.getString("point_code")))){
throw new BadRequestException("传入的地面入库点不存在");
}
if(StringUtils.isBlank(parm.getString("storagevehicle_code"))){
throw new BadRequestException("未传入载具码");
}
@@ -136,11 +164,79 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
data.put("urnin_struct_code",point_code1);
data.put("bill_code",parm.getString("bill_code"));
result.setData(data);
log.info("WMS入库返回参数为-------------------" + result.toString());
return result;
}
@Override
@Transactional
public WmstoIWmsResponse groupCheck(JSONObject parm) {
log.info("WMS待检区请求参数参数为-------------------" + parm.toString());
if(StringUtils.isBlank(parm.getString("point_code"))){
throw new BadRequestException("未传入地面入库点");
}
if(StringUtils.isBlank(parm.getString("task_type"))){
throw new BadRequestException("未传入任务类型");
}
if(StringUtils.isBlank(parm.getString("storagevehicle_type"))){
throw new BadRequestException("未传入托盘类型");
}
String car_type=null;
String car_width="685";
if(parm.getString("task_type").equals("1")){
List<Structattr> regionCode = structattrMapper.selectList(new LambdaQueryWrapper<Structattr>()
.eq(Structattr::getSect_code, "1BCDJQ")
.eq(Structattr::getIs_used,true)
.eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
.isNull(Structattr::getStoragevehicle_code));
String pointCode=regionCode.get(0).getStruct_code();
if(StringUtils.isBlank(pointCode)){
throw new BadRequestException("待检区域无库存");
}
if(parm.getString("storagevehicle_type").equals("BCPHDL")){
car_type="1";
}else{
car_type="2";
}
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "CheckInTask");
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("PickingLocation", parm.getString("point_code"));
task_form.put("PlacedLocation", pointCode);
task_form.put("vehicle_code", parm.getString("storagevehicle_type"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
CheckInTask checkInTask = SpringContextHolder.getBean("CheckInTask");
String task_id = checkInTask.create(task_form);
} else if(parm.getString("task_type").equals("2")){
if(parm.getString("storagevehicle_type").equals("BCPHDL")){
car_type="1";
}else{
car_type="2";
}
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STInTask");
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("PickingLocation",parm.getString("point_code"));
task_form.put("PlacedLocation", "CKFPW");
task_form.put("vehicle_code",parm.getString("storagevehicle_type"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
CheckOutTask checkOutTask = SpringContextHolder.getBean("CheckOutTask");
String task_id = checkOutTask.create(task_form);
}
WmstoIWmsResponse result = new WmstoIWmsResponse();
result.setCode(String.valueOf(HttpStatus.OK.value()));
result.setMsg("待检区任务生成成功");
result.setTotalElements(0);
return result;
}
@Override
@Transactional
public WmstoIWmsResponse outBillTask(JSONObject parm) {
log.info("WMS出库请求参数参数为-------------------" + parm.toString());
WmstoIWmsResponse result = new WmstoIWmsResponse();
JSONArray tableData = parm.getJSONArray("tableData");
String storage_code=tableData.getJSONObject(0).getString("storage_code");
@@ -157,7 +253,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
}
parm.put("sect_id",structattr.getSect_id());
parm.put("stor_id",structattr.getStor_id());
parm.put("turnout_struct_code",turnout_struct_code);
// parm.put("turnout_struct_code",turnout_struct_code);
JSONObject j1=new JSONObject();
j1.put("tableData",tableData);
j1.put("bill_type",parm.getString("bill_type"));
@@ -165,26 +261,28 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
//新增出库单
String iostorinv_id=iOutBillService.insertDtl1(j1);
parm.put("iostorinv_id",iostorinv_id);
//分配库位
//
String stuct_code=iOutBillService.allDiv1(parm);
//生成出库任务
parm.put("point_code",stuct_code);
parm.put("region_code","CKQ");
String pointCode=iOutBillService.allSetPoint(parm);
iOutBillService.allSetPoint(parm);
JSONObject data=new JSONObject();
data.put("bill_code",iostorinv_id);
data.put("urnin_struct_code",pointCode);
// data.put("bill_code",iostorinv_id);
// data.put("turnout_destination_code",pointCode);
result.setCode(String.valueOf(HttpStatus.OK.value()));
result.setMsg("出库任务生成成功");
result.setTotalElements(0);
result.setData(data);
log.info("WMS出库返回参数参数为-------------------" + result.toString());
return result;
}
@Override
@Transactional
public WmstoIWmsResponse moveTask(JSONObject parm) {
log.info("WMS移库请求参数参数为-------------------" + parm.toString());
WmstoIWmsResponse result = new WmstoIWmsResponse();
JSONArray tableData = parm.getJSONArray("tableData");
//移出位置
@@ -209,12 +307,14 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
JSONObject data=new JSONObject();
data.put("bill_code",bill_code);
result.setData(data);
log.info("WMS移库返回参数参数为-------------------" + result.toString());
return result;
}
@Override
@Transactional
public WmstoIWmsResponse checkBillTask(JSONObject parm) {
log.info("WMS盘点请求参数参数为-------------------" + parm.toString());
WmstoIWmsResponse result = new WmstoIWmsResponse();
CheckInsertDto checkInsertDto=new CheckInsertDto();
String check_id=IdUtil.getStringId();
@@ -247,8 +347,8 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
result.setCode(String.valueOf(HttpStatus.OK.value()));
result.setMsg("盘点任务生成成功");
JSONObject data=new JSONObject();
data.put("bill_code",parm.getString("check_code"));
result.setData(data);
log.info("WMS盘点返回参数参数为-------------------" + result.toString());
return result;
}
}

View File

@@ -1,30 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--配置说明:
https://www.cnblogs.com/jybky/p/12204586.html
https://blog.csdn.net/wzygis/article/details/103189490
https://www.cnblogs.com/xrq730/p/8628945.html
https://www.jianshu.com/p/af5a7bab0e59
https://blog.csdn.net/wzygis/article/details/103189490
https://juejin.cn/post/6844903775631572999
-->
<configuration scan="true" scanPeriod="30 seconds" debug="false">
<contextName>nlAdmin</contextName>
<property name="log.charset" value="utf-8"/>
<property name="log.pattern"
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
value="%cyan(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %blue(%msg%n)"/>
<property name="LOG_HOME" value="${logPath}"/>
<!--引入默认的一些设置-->
<include resource="log/WmsToErp.xml"/>
<include resource="log/ErpToWms.xml"/>
<include resource="log/SendAcsTask.xml"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 控制台高亮-->
<!--withJansi 参数改为true-->
<withJansi>true</withJansi>
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<pattern>${log.pattern}</pattern>
<!-- <charset>${log.charset}</charset>-->
</encoder>
</appender>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="${logPath}"/>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>10</maxHistory>
<maxHistory>30</maxHistory>
<!--单个日志最大容量 至少10MB才能看得出来-->
<maxFileSize>100MB</maxFileSize>
<maxFileSize>120MB</maxFileSize>
<!--所有日志最多占多大容量-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
@@ -32,78 +46,116 @@
<!--格式化输出:%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="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>
<name>system</name>
<value>lms</value>
</property>
<property>
<name>logLevel</name>
<value>%level</value>
</property>
<property>
<name>requestMethod</name>
<value>%X{requestMethod}</value>
</property>
<property>
<name>requestTime</name>
<value>%d{yyyy-MM-dd HH:mm:ss.SSS}</value>
</property>
<property>
<name>requestIp</name>
<value>%X{requestIp}</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
</properties>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="asyncLuceneAppender" class="org.nl.config.lucene.AsyncLuceneAppender">
<appender name="asyncLuceneAppender" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="luceneAppender" />
<!-- 设置队列大小 -->
<queueSize>512</queueSize>
</appender>
<!--异步到文件-->
<appender name="asyncFileAppender" class="com.yomahub.tlog.core.enhance.logback.async.AspectLogbackAsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!--开发环境:打印控制台-->
<springProfile name="dev">
<root level="info">
<root level="debug">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>s
<logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.reflections.Reflections" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterPubSubConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.Version" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.alibaba.druid.pool.DruidDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.config.RedisConfig" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="log4jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="nl.basjes" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.yomahub.tlog.id.snowflake.UniqueIdGenerator" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.yomahub.tlog.core.rpc.TLogRPCHandler" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="asyncFileAppender"/>
@@ -146,8 +198,27 @@
<appender-ref ref="asyncFileAppender"/>
</logger>
</springProfile>
<!--测试环境:打印控制台-->
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="test">
<root level="INFO">
<appender-ref ref="asyncFileAppender"/>
</root>
<logger name="jdbc.audit" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultset" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="springfox.documentation" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.resultsettable" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc.sqlonly" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>
</configuration>