feat(api): 重构WCS和WMS接口服务并添加货位重量查询功能

- 新增BasCargoSpaceWeight实体类用于货位重量统计
- 在BasCargoSpaceMapper中添加selectPlatByWeight方法查询每排重量
- 实现selectPlatByWeight方法的SQL查询逻辑
- 在IBasCargoSpaceService中添加selectPlatByWeight接口
- 实现selectPlatByWeight服务方法用于分配重量平衡的货位
- 更新RequestLogService接口添加sourceSystem参数
- 在ToErpApiController中添加接口调用日志记录功能
- 在ToMesApiController中添加接口调用日志记录功能
- 重构ToWcsApiController添加任务完成、重新分配等接口
- 移除IToWmsService中已废弃的接口方法
- 移除PdaController中已废弃的addInJob方法
- 在ToWcsServiceImpl中实现货位分配和任务处理逻辑
- 添加RequestEnterResponse用于返回货位分配结果
This commit is contained in:
liuhanqing
2026-01-05 09:58:56 +08:00
parent a060574363
commit 754f55b883
19 changed files with 375 additions and 425 deletions

View File

@@ -1,11 +1,14 @@
package com.ruoyi.api.controller;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.service.IToErpService;
import com.ruoyi.bas.BasCustomer.domain.BasCustomer;
import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasSupplier.domain.BasSupplier;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -22,20 +25,28 @@ public class ToErpApiController {
@Autowired
private IToErpService toErpService;
@Autowired
private IRequestLogService requestLogService;
/**
* 接收物料信息
*/
@PostMapping("/receiveMaterial")
public AjaxResult receiveMaterial(@RequestBody BasProduct basProduct) {
return toErpService.receiveMaterial(basProduct);
AjaxResult ajaxResult = toErpService.receiveMaterial(basProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basProduct), "接收ERP物料信息",ajaxResult, "ERP");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 接收客户信息
*/
@PostMapping("/receiveCustomer")
public AjaxResult receiveCustomer(@RequestBody BasCustomer basProduct) {
return toErpService.receiveCustomer(basProduct);
public AjaxResult receiveCustomer(@RequestBody BasCustomer basCustomer) {
AjaxResult ajaxResult = toErpService.receiveCustomer(basCustomer);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basCustomer), "接收ERP客户信息",ajaxResult, "ERP");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
@@ -43,7 +54,10 @@ public class ToErpApiController {
*/
@PostMapping("/receiveSupplier")
public AjaxResult receiveSupplier(@RequestBody BasSupplier basSupplier) {
return toErpService.receiveSupplier(basSupplier);
AjaxResult ajaxResult = toErpService.receiveSupplier(basSupplier);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basSupplier), "接收ERP供应商信息",ajaxResult, "ERP");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
@@ -51,7 +65,10 @@ public class ToErpApiController {
*/
@PostMapping("/receiveInBill")
public AjaxResult receiveInBill(@RequestBody InstockInVo inStockinVo) {
return toErpService.receiveInBill(inStockinVo);
AjaxResult ajaxResult = toErpService.receiveInBill(inStockinVo);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(inStockinVo), "接收ERP入库单据信息",ajaxResult, "ERP");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
@@ -59,7 +76,10 @@ public class ToErpApiController {
*/
@PostMapping("/receiveOutBill")
public AjaxResult receiveOutBill(@RequestBody OutStockoutVo outStockoutVo) {
return toErpService.receiveOutBill(outStockoutVo);
AjaxResult ajaxResult = toErpService.receiveOutBill(outStockoutVo);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(outStockoutVo), "接收ERP出库单据信息", ajaxResult, "ERP");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 单据信息回传

View File

@@ -1,5 +1,6 @@
package com.ruoyi.api.controller;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.service.IToErpService;
import com.ruoyi.api.service.IToMesService;
import com.ruoyi.bas.BasCustomer.domain.BasCustomer;
@@ -7,6 +8,8 @@ import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasSupplier.domain.BasSupplier;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -20,13 +23,18 @@ public class ToMesApiController {
@Autowired
private IToMesService toMesService;
@Autowired
private IRequestLogService requestLogService;
/**
* 接收物料信息
*/
@PostMapping("/receiveMaterial")
public AjaxResult receiveMaterial(@RequestBody BasProduct basProduct) {
return toMesService.receiveMaterial(basProduct);
AjaxResult ajaxResult = toMesService.receiveMaterial(basProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basProduct), "接收MES物料信息",ajaxResult,"MES");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
@@ -34,7 +42,10 @@ public class ToMesApiController {
*/
@PostMapping("/receiveInBill")
public AjaxResult receiveInBill(@RequestBody InstockInVo inStockinVo) {
return toMesService.receiveInBill(inStockinVo);
AjaxResult ajaxResult = toMesService.receiveInBill(inStockinVo);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(inStockinVo), "接收MES入库单据信息",ajaxResult,"MES");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
@@ -42,7 +53,10 @@ public class ToMesApiController {
*/
@PostMapping("/receiveOutBill")
public AjaxResult receiveOutBill(@RequestBody OutStockoutVo outStockoutVo) {
return toMesService.receiveOutBill(outStockoutVo);
AjaxResult ajaxResult = toMesService.receiveOutBill(outStockoutVo);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(outStockoutVo), "接收MES出库单据信息",ajaxResult,"MES");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 单据信息回传

View File

@@ -1,8 +1,15 @@
package com.ruoyi.api.controller;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.AgvMoveParam;
import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -19,14 +26,62 @@ public class ToWcsApiController {
@Autowired
private IToWcsService toWcsService;
@Autowired
private IToWmsService toWmsService;
@Autowired
private IRequestLogService requestLogService;
/**
* 推送agv搬运作业
* @return
* 获取入库作业
*/
@PostMapping("/pushAgvMoveJob")
public AjaxResult pushAgvMoveJob(@RequestBody AgvMoveParam agvMoveParam) {
return toWcsService.pushAgvMoveJob(agvMoveParam);
@RequestMapping("/requestEnterByTrayCodeAndEntranceId")
public AjaxResult requestEnterByTrayCodeAndEntranceId(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWcsService.requestEnterByTrayCodeAndEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "获取入库作业",ajaxResult,"WCS");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库 3-agv搬运,
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*
*/
@PostMapping("/jobFinish")
public AjaxResult jobFinish(@RequestBody WmsJobRequest wmsJobRequest) {
AjaxResult ajaxResult = toWcsService.jobFinish(wmsJobRequest);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish",ajaxResult,"WCS");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 放货有货,重新分配货位
*/
@PostMapping("/reAssign")
public AjaxResult reAssign(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWcsService.reAssign(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "重新分配货位",ajaxResult,"WCS");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 取货无货,重新分配物料
*/
@PostMapping("/reMaterial")
public AjaxResult reMaterial(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWcsService.reMaterial(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "重新分配物料",ajaxResult,"WCS");
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
}

View File

@@ -23,84 +23,9 @@ import java.util.Map;
@RequestMapping("/api2wms")
public class ToWmsApiController {
@Autowired
private IToWmsService toWmsService;
@Autowired
private IRequestLogService requestLogService;
/**
* 入库请求生成作业
*/
@PostMapping("/requestEnterByTrayCode")
public AjaxResult requestEnterByTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "入库任务创建请求",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 请求补码作业
*/
@RequestMapping("/requestByNoTrayCode")
public AjaxResult requestByNoTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.selectMydoJobByEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "请求补码作业",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 获取入库作业
*/
@RequestMapping("/requestEnterByTrayCodeAndEntranceId")
public AjaxResult requestEnterByTrayCodeAndEntranceId(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCodeAndEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "获取入库作业",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库 3-agv搬运,
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*
*/
@PostMapping("/jobFinish")
public AjaxResult jobFinish(@RequestBody WmsJobRequest wmsJobRequest) {
AjaxResult ajaxResult = toWmsService.jobFinish(wmsJobRequest);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 放货有货,重新分配货位
*/
@PostMapping("/reAssign")
public AjaxResult reAssign(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reAssign(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reAssign",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 取货无货,重新分配物料
*/
@PostMapping("/reMaterial")
public AjaxResult reMaterial(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reMaterial(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reMaterial",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
}

View File

@@ -1,6 +1,9 @@
package com.ruoyi.api.service;
import com.ruoyi.api.domain.AgvMoveParam;
import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.common.core.domain.AjaxResult;
import java.util.HashMap;
@@ -14,24 +17,6 @@ public interface IToWcsService {
* 推送CTU出库任务
*/
void pushOutMydoJob();
/**
* 推送agv搬运作业
* @return
*/
AjaxResult pushAgvMoveJob(AgvMoveParam agvMoveParam);
/**
* 推送流利架入库任务
*/
void pushInMydoJob();
/**
* 出库作业确认
* @param outMydojobMakeSureParam
* @return
*/
AjaxResult outMydojobMakeSure(HashMap<String, String> outMydojobMakeSureParam);
/**
* 取消任务
* @param taskNo
@@ -39,5 +24,20 @@ public interface IToWcsService {
*/
AjaxResult cancelTaskByTaskNo(String taskNo);
/**
* 入库任务请求根据托盘码和入口
*/
AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter);
/**
* 入出库任务完成
*/
AjaxResult jobFinish(WmsJobRequest wmsJobRequest);
/**
* 放货有货,重新分配货位
*/
AjaxResult reAssign(ReMaterialParam reMaterialParam);
/**
* 取货无货,重新分配单据
*/
AjaxResult reMaterial(ReMaterialParam reMaterialParam);
}

View File

@@ -11,36 +11,5 @@ import java.util.Map;
* 作业统计 Service 接口
*/
public interface IToWmsService {
/**
* 入库任务请求根据托盘码
*/
AjaxResult requestEnterByTrayCode(RequestEnter requestEnter);
AjaxResult selectMydoJobByEntranceId(RequestEnter requestEnter);
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*
*/
AjaxResult jobFinish(WmsJobRequest wmsJobRequest);
/**
* 放货有货,重新分配货位
*/
AjaxResult reAssign(ReMaterialParam reMaterialParam);
/**
* 取货无货,重新分配物料
*/
AjaxResult reMaterial(ReMaterialParam reMaterialParam);
/**
* 获取入库作业
*/
AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter);
}

View File

@@ -1,19 +1,30 @@
package com.ruoyi.api.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.AgvMoveParam;
import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.RequestEnterResponse;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.device.agv.domain.AgvContainerTask;
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
import com.ruoyi.job.mydojobdetail.service.IMydoJobDetailService;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.service.IOutStockoutService;
import com.ruoyi.pda.domain.TrayCodeMsg;
import com.ruoyi.pda.service.PdaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@@ -24,18 +35,22 @@ import java.util.*;
* 作业统计 Service 实现
*/
@Service
@Slf4j
public class ToWcsServiceImpl implements IToWcsService {
@Autowired
private IRequestLogService requestLogService;
@Autowired
private IMydoJobService mydoJobService;
@Autowired
private IAgvContainerTaskService agvContainerTaskService;
private IMydoJobDetailService mydoJobDetailService;
@Autowired
private IBasCargoSpaceService basCargoSpaceService;
@Autowired
private IOutStockoutService outStockoutService;
@Autowired
private PdaService pdaService;
public static final String PUSH_OUT_MYDO_JOB = "http://localhost:10012/wcs2Wms/api/receiveOutMydoJob";
public static final String PUSH_IN_MYDO_JOB = "http://localhost:10012/wcs2Wms/api/receiveInMydoJob";
public static final String PUSH_AGV_MOVE_JOB = "http://localhost:10012/agv/api/receiveAgvMoveJob";
public static final String OUT_MYDOJOB_MS = "http://localhost:10012/wcs2Wms/api/outMydojobMakesure";
public static final String CANCEL_MYDOJOB = "http://localhost:10012/wcs2Wms/api/cancelMydoJob";
@@ -62,60 +77,6 @@ public class ToWcsServiceImpl implements IToWcsService {
}
}
@Override
public AjaxResult pushAgvMoveJob(AgvMoveParam agvMoveParam) {
agvMoveParam.setTaskNo(IdUtil.fastSimpleUUID());
RequestLog requestLog = requestLogService.getRequestLog(PUSH_AGV_MOVE_JOB, JSONUtil.toJsonStr(agvMoveParam), "推送搬运任务");
if ("1".equals(requestLog.getIsSuccessful())){
AgvContainerTask agvContainerTask = new AgvContainerTask();
agvContainerTask.setContainer(agvMoveParam.getContainerCode());
agvContainerTask.setStartPoint(agvMoveParam.getStartPoint());
agvContainerTask.setEndPoint(agvMoveParam.getEndPoint());
agvContainerTask.setStatus("0");
agvContainerTask.setTaskNo(agvMoveParam.getTaskNo());
agvContainerTask.setCreateTime(new Date());
agvContainerTaskService.insertAgvContainerTask(agvContainerTask);
return AjaxResult.success();
}
return AjaxResult.error(requestLog.getErrorDetails());
}
@Override
public void pushInMydoJob() {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setInOrOut("1");
mydoJobParam.setStatus("1");
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)){
for (MydoJob mydoJob : mydoJobs) {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(mydoJob), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
mydoJobParam.setEntranceId("fluent");
mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)){
for (MydoJob mydoJob : mydoJobs) {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_IN_MYDO_JOB, JSONUtil.toJsonStr(mydoJob), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}
@Override
public AjaxResult outMydojobMakeSure(HashMap<String, String> outMydojobMakeSureParam) {
RequestLog requestLog = requestLogService.getRequestLog(OUT_MYDOJOB_MS, JSONUtil.toJsonStr(outMydojobMakeSureParam), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
return AjaxResult.success();
}
return AjaxResult.error(requestLog.getDuration());
}
@Override
public AjaxResult cancelTaskByTaskNo(String taskNo) {
@@ -128,5 +89,174 @@ public class ToWcsServiceImpl implements IToWcsService {
return AjaxResult.error(requestLog.getErrorDetails());
}
@Override
public AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter) {
HashMap<String, String> result = new HashMap<>();
if (StrUtil.isEmpty(requestEnter.getTrayCode())) {
return AjaxResult.error("托盘条码不能为空");
}
if (requestEnter.getHeight()==0) {
return AjaxResult.error("未检测到入库高度");
}
/*if (requestEnter.getWeight() ==0){
return AjaxResult.error("未检测到入库重量");
}*/
log.info("扫码内容{},入库高度{}", requestEnter.getTrayCode(), requestEnter.getHeight());
MydoJob param = new MydoJob();
param.setStatus("1");
param.setTrayCode(requestEnter.getTrayCode());
param.setWarehouseId(requestEnter.getWarehouseId());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(param);
if (CollUtil.isEmpty(mydoJobs)){
//生成杂料入库任务
TrayCodeMsg trayCodeMsg = new TrayCodeMsg();
trayCodeMsg.setTrayCode(requestEnter.getTrayCode());
trayCodeMsg.setWarehouseId(requestEnter.getWarehouseId());
pdaService.zlin(trayCodeMsg);
mydoJobs = mydoJobService.selectMydoJobListApi(param);
if (CollUtil.isEmpty(mydoJobs)){
return AjaxResult.error("杂料入库任务生成失败", requestEnter.getTrayCode());
}
}
MydoJob mydoJob = mydoJobs.get(0);
if(StrUtil.isEmpty(mydoJob.getCargoSpaceId())){
//根据重量平衡 两排货位
//查询重量
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(requestEnter.getWarehouseId());
basCargoSpaceParam.setRoadwayId(requestEnter.getRoadwayId());
//找到重量小的排数
Long plat = basCargoSpaceService.selectPlatByWeight(requestEnter);
basCargoSpaceParam.setThePlatoon(plat);
if (requestEnter.getHeight()==1){
basCargoSpaceParam.setCargoHight("975");
}else {
basCargoSpaceParam.setCargoHight("1519");
}
//查找货位
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)){
//去除排的条件 再次查询货位
basCargoSpaceParam.setThePlatoon(null);
basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)){
return AjaxResult.error("没有空货位");
}
}
//修改作业状态为正执行
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
mydoJob.setRoadwayId(requestEnter.getRoadwayId());
mydoJob.setLineId(Convert.toStr(requestEnter.getWeight()));
mydoJobService.updateMydoJob(mydoJob);
//修改货位状态为已分配
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
}
//返回结果
result.put("jobId", mydoJob.getJobId());
result.put("taskNo", mydoJob.getTaskNo());
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
result.put("roadwayId", mydoJob.getRoadwayId());
result.put("entranceId", mydoJob.getEntranceId());
result.put("inOrOut", mydoJob.getInOrOut());
return AjaxResult.success(result);
}
@Override
public AjaxResult jobFinish(WmsJobRequest wmsJobRequest) {
MydoJob mydoJobParam = new MydoJob();
switch (wmsJobRequest.getWmsType()) {
case "1":
if (StrUtil.isEmpty(wmsJobRequest.getTaskNo())) {
return AjaxResult.error("任务号不能为空");
}
if (StrUtil.isEmpty(wmsJobRequest.getJobId())) {
return AjaxResult.error("任务Id不能为空");
}
//入库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
mydoJobParam.setJobId(wmsJobRequest.getJobId());
List<MydoJob> inMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (inMydoJobs.isEmpty()) {
return AjaxResult.error("任务不存在");
}
MydoJob inMydoJob = inMydoJobs.get(0);
mydoJobService.manualCompleted(inMydoJob, 1);
break;
case "2":
if (StrUtil.isEmpty(wmsJobRequest.getTaskNo())) {
return AjaxResult.error("任务号不能为空");
}
//出库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (outMydoJobs.isEmpty()) {
return AjaxResult.error("任务不存在");
}
MydoJob outJob = outMydoJobs.get(0);
outJob.setExecutionPhase("2");
mydoJobService.updateMydoJob(outJob);
if (outJob.getInOrOut().equals("23")){
String[] jobIds = new String[]{outJob.getJobId()};
mydoJobService.OuthandFinish(jobIds);
}
break;
default:
log.error("作业类型错误");
return AjaxResult.error(MessageUtils.message("error.message12"));
}
return AjaxResult.success();
}
@Override
public AjaxResult reAssign(ReMaterialParam reMaterialParam) {
//重新分配货位
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
//先标记原来货位有问题
String cargoSpaceId = mydoJob.getCargoSpaceId();
BasCargoSpace oldBasCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId);
oldBasCargoSpace.setStatus("5");
basCargoSpaceService.updateBasCargoSpace(oldBasCargoSpace);
String warehouseId = mydoJob.getWarehouseId();
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(warehouseId);
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (basCargoSpace == null) {
return AjaxResult.error("没有空货位");
} else {
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setFaultFlag("1");
mydoJobService.updateMydoJob(mydoJob);
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
return AjaxResult.success(new RequestEnterResponse(basCargoSpace.getCargoSpaceId(), mydoJob.getTrayCode(), mydoJob.getJobId()));
}
}
@Override
public AjaxResult reMaterial(ReMaterialParam reMaterialParam) {
//重新分配物料
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
mydoJobDetailParam.setJobId(mydoJob.getJobId());
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
String stockOutId = mydoJobDetails.get(0).getInOrOutId();
// 作废作业
mydoJobService.OuthandInvalidation(new String[]{mydoJob.getJobId()});
//调用自动分配
return outStockoutService.autoAllot(stockOutId);
}
}

View File

@@ -9,28 +9,11 @@ import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.RequestEnterResponse;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToErpService;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasProduct.service.IBasProductService;
import com.ruoyi.bas.BasProductCode.util.ProcodeUtils;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.container.service.IBasContainerService;
import com.ruoyi.bas.roadway.domain.BasRoadway;
import com.ruoyi.bas.roadway.service.IBasRoadwayService;
import com.ruoyi.bas.tag.service.IBasTagService;
import com.ruoyi.bas.taskNo.service.IBasTaskNoService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
import com.ruoyi.in.erp.domain.TransferBillCallback;
import com.ruoyi.in.erp.service.ITransferBillCallbackService;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
@@ -46,7 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 作业统计 Service 实现
@@ -66,186 +48,8 @@ public class ToWmsServiceImpl implements IToWmsService {
private PdaService pdaService;
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult requestEnterByTrayCode(RequestEnter requestEnter) {
return null;
}
@Override
public AjaxResult selectMydoJobByEntranceId(RequestEnter requestEnter) {
MydoJob param = new MydoJob();
param.setStatus("1");
param.setEntranceId(requestEnter.getEntranceId());
MydoJob mydoJob = mydoJobService.selectMydoJobByEntranceId(param);
HashMap<String, String> result = new HashMap<>();
result.put("jobId", mydoJob.getJobId());
result.put("taskNo", mydoJob.getTaskNo());
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
result.put("roadwayId", mydoJob.getRoadwayId());
result.put("entranceId", mydoJob.getEntranceId());
return AjaxResult.success(result);
}
@Override
public AjaxResult jobFinish(WmsJobRequest wmsJobRequest) {
MydoJob mydoJobParam = new MydoJob();
switch (wmsJobRequest.getWmsType()) {
case "1":
if (StrUtil.isEmpty(wmsJobRequest.getTaskNo())) {
return AjaxResult.error("任务号不能为空");
}
if (StrUtil.isEmpty(wmsJobRequest.getJobId())) {
return AjaxResult.error("任务Id不能为空");
}
//入库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
mydoJobParam.setJobId(wmsJobRequest.getJobId());
List<MydoJob> inMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (inMydoJobs.isEmpty()) {
return AjaxResult.error("任务不存在");
}
MydoJob inMydoJob = inMydoJobs.get(0);
mydoJobService.manualCompleted(inMydoJob, 1);
break;
case "2":
if (StrUtil.isEmpty(wmsJobRequest.getTaskNo())) {
return AjaxResult.error("任务号不能为空");
}
//出库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (outMydoJobs.isEmpty()) {
return AjaxResult.error("任务不存在");
}
MydoJob outJob = outMydoJobs.get(0);
outJob.setExecutionPhase("2");
mydoJobService.updateMydoJob(outJob);
if (outJob.getInOrOut().equals("23")){
String[] jobIds = new String[]{outJob.getJobId()};
mydoJobService.OuthandFinish(jobIds);
}
break;
default:
log.error("作业类型错误");
return AjaxResult.error(MessageUtils.message("error.message12"));
}
return AjaxResult.success();
}
@Override
public AjaxResult reAssign(ReMaterialParam reMaterialParam) {
//重新分配货位
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
//先标记原来货位有问题
String cargoSpaceId = mydoJob.getCargoSpaceId();
BasCargoSpace oldBasCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(cargoSpaceId);
oldBasCargoSpace.setStatus("5");
basCargoSpaceService.updateBasCargoSpace(oldBasCargoSpace);
String warehouseId = mydoJob.getWarehouseId();
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(warehouseId);
basCargoSpaceParam.setRoadwayId(mydoJob.getRoadwayId());
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (basCargoSpace == null) {
return AjaxResult.error("没有空货位");
} else {
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setFaultFlag("1");
mydoJobService.updateMydoJob(mydoJob);
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
return AjaxResult.success(new RequestEnterResponse(basCargoSpace.getCargoSpaceId(), mydoJob.getTrayCode(), mydoJob.getJobId()));
}
}
@Override
public AjaxResult reMaterial(ReMaterialParam reMaterialParam) {
//重新分配物料
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
MydoJobDetail mydoJobDetailParam = new MydoJobDetail();
mydoJobDetailParam.setJobId(mydoJob.getJobId());
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
String stockOutId = mydoJobDetails.get(0).getInOrOutId();
// 作废作业
mydoJobService.OuthandInvalidation(new String[]{mydoJob.getJobId()});
//调用自动分配
return outStockoutService.autoAllot(stockOutId);
}
@Override
//@Transactional(rollbackFor = Exception.class)
public AjaxResult requestEnterByTrayCodeAndEntranceId(RequestEnter requestEnter) {
HashMap<String, String> result = new HashMap<>();
if (StrUtil.isEmpty(requestEnter.getTrayCode())) {
return AjaxResult.error("托盘条码不能为空");
}
if (requestEnter.getHeight()==0) {
return AjaxResult.error("未检测到入库高度");
}
/*if (requestEnter.getWeight() ==0){
return AjaxResult.error("未检测到入库重量");
}*/
log.info("扫码内容{},入库高度{}", requestEnter.getTrayCode(), requestEnter.getHeight());
MydoJob param = new MydoJob();
param.setStatus("1");
param.setTrayCode(requestEnter.getTrayCode());
param.setWarehouseId(requestEnter.getWarehouseId());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(param);
if (CollUtil.isEmpty(mydoJobs)){
//生成杂料入库任务
TrayCodeMsg trayCodeMsg = new TrayCodeMsg();
trayCodeMsg.setTrayCode(requestEnter.getTrayCode());
trayCodeMsg.setWarehouseId(requestEnter.getWarehouseId());
pdaService.zlin(trayCodeMsg);
mydoJobs = mydoJobService.selectMydoJobListApi(param);
if (CollUtil.isEmpty(mydoJobs)){
return AjaxResult.error("杂料入库任务生成失败", requestEnter.getTrayCode());
}
}
MydoJob mydoJob = mydoJobs.get(0);
if(StrUtil.isEmpty(mydoJob.getCargoSpaceId())){
BasCargoSpace basCargoSpaceParam = new BasCargoSpace();
basCargoSpaceParam.setWarehouseId(requestEnter.getWarehouseId());
basCargoSpaceParam.setRoadwayId(requestEnter.getRoadwayId());
if (requestEnter.getHeight()==1){
basCargoSpaceParam.setCargoHight("975");
}else {
basCargoSpaceParam.setCargoHight("1519");
}
BasCargoSpace basCargoSpace = basCargoSpaceService.selectEmptyCargoSpaceByWarehouseId(basCargoSpaceParam);
if (ObjUtil.isNull(basCargoSpace)){
return AjaxResult.error("没有空货位");
}
//修改作业状态为正执行
mydoJob.setCargoSpaceId(basCargoSpace.getCargoSpaceId());
mydoJob.setStatus("3");
mydoJob.setStartTime(DateUtil.formatDateTime(new Date()));
mydoJob.setRoadwayId(requestEnter.getRoadwayId());
mydoJob.setLineId(Convert.toStr(requestEnter.getWeight()));
mydoJobService.updateMydoJob(mydoJob);
//修改货位状态为已分配
basCargoSpace.setStatus("3");
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
}
//返回结果
result.put("jobId", mydoJob.getJobId());
result.put("taskNo", mydoJob.getTaskNo());
result.put("cargoSpaceId", mydoJob.getCargoSpaceId());
result.put("roadwayId", mydoJob.getRoadwayId());
result.put("entranceId", mydoJob.getEntranceId());
result.put("inOrOut", mydoJob.getInOrOut());
return AjaxResult.success(result);
}
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.bas.cargoSpace.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BasCargoSpaceWeight {
private String thePlatoon;
private String weightSum;
}

View File

@@ -2,6 +2,7 @@ package com.ruoyi.bas.cargoSpace.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpaceWeight;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import java.util.List;
@@ -84,4 +85,10 @@ public interface BasCargoSpaceMapper extends BaseMapper<BasCargoSpace>
* @return 库存信息集合
*/
public List<BasCargoSpace> selectBasCargoSpaceListByRoadway(BasCargoSpace basCargoSpace);
/**
* 查询每排重量
* @param basCargoSpaceParam
* @return
*/
Double selectPlatByWeight(BasCargoSpace basCargoSpaceParam);
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.bas.cargoSpace.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
@@ -76,4 +77,10 @@ public interface IBasCargoSpaceService extends IService<BasCargoSpace>
* @return 库存信息集合
*/
public List<BasCargoSpace> selectBasCargoSpaceListByRoadway(BasCargoSpace basCargoSpace);
/**
* 获取要分配的货位
* @param requestEnter
* @return
*/
Long selectPlatByWeight(RequestEnter requestEnter);
}

View File

@@ -1,7 +1,10 @@
package com.ruoyi.bas.cargoSpace.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpaceWeight;
import com.ruoyi.bas.cargoSpace.mapper.BasCargoSpaceMapper;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
@@ -113,4 +116,20 @@ public class BasCargoSpaceServiceImpl extends ServiceImpl<BasCargoSpaceMapper,Ba
return basCargoSpaceMapper.selectBasCargoSpaceListByRoadway(basCargoSpace);
}
@Override
public Long selectPlatByWeight(RequestEnter requestEnter) {
BasCargoSpace param = new BasCargoSpace();
param.setWarehouseId(requestEnter.getWarehouseId());
param.setRoadwayId(requestEnter.getRoadwayId());
param.setThePlatoon(1L);
Double platWeight1 = basCargoSpaceMapper.selectPlatByWeight(param);
param.setThePlatoon(2L);
Double platWeight2 = basCargoSpaceMapper.selectPlatByWeight(param);
if (platWeight1 >= platWeight2){
return 2L;
}else {
return 1L;
}
}
}

View File

@@ -76,5 +76,5 @@ public interface IRequestLogService
* @param remark
* @return
*/
public RequestLog getRequestLog(String param, String remark, AjaxResult ajaxResult);
public RequestLog getRequestLog(String param, String remark, AjaxResult ajaxResult,String sourceSystem);
}

View File

@@ -154,12 +154,12 @@ public class RequestLogServiceImpl implements IRequestLogService
* @return requestLog
*/
@Override
public RequestLog getRequestLog(String param, String remark,AjaxResult ajaxResult) {
public RequestLog getRequestLog(String param, String remark,AjaxResult ajaxResult,String sourceSystem) {
RequestLog requestLog = new RequestLog();
requestLog.setRequestTime(DateUtil.formatDateTime(new Date()));
requestLog.setRequestBody(param);
requestLog.setSourceSystem("wms");
requestLog.setTargetSystem("wcs");
requestLog.setSourceSystem(sourceSystem);
requestLog.setTargetSystem("WMS");
requestLog.setEndpoint(remark);
requestLog.setRequestMethod("post");
requestLog.setResponseTime(DateUtil.formatDateTime(new Date()));

View File

@@ -50,14 +50,6 @@ public class PdaController extends BaseController {
private PdaService pdaService;
/**
* 入库扫码生成作业
*/
@RequestMapping("/addInJob")
@ResponseBody
public AjaxResult addInJob(@RequestBody RequestEnter requestEnter) {
return pdaService.addInJob(requestEnter);
}
@RequestMapping("/selectDetailByTray")
@ResponseBody

View File

@@ -14,7 +14,6 @@ public interface PdaService {
public AjaxResult addInJob(RequestEnter requestEnter);
public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure);

View File

@@ -58,21 +58,7 @@ public class PdaServiceImp implements PdaService {
private BasStockMapper basStockMapper;
@Override
public AjaxResult addInJob(RequestEnter requestEnter) {
if(requestEnter.getEntranceId()!=null && "G1005".equals(requestEnter.getEntranceId())){
MydoJob mydoJob = new MydoJob();
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setStatus("1");
MydoJob mydoJob1 = mydoJobService.selectMydoJobByEntranceId(mydoJob);
if(mydoJob1!=null){
return AjaxResult.error("该入口已有补码作业");
}
}
AjaxResult ajaxResult = iToWmsService.requestEnterByTrayCode(requestEnter);
return ajaxResult;
}
@Override
public AjaxResult selectDetailByTray(TrayCodeMakeSure trayCodeMakeSure) {

View File

@@ -184,6 +184,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and locked = 'N'
and warehouse_id = #{warehouseId}
and roadway_id = #{roadwayId}
and cargo_hight = #{cargoHight}
ORDER BY the_floor,the_column,the_platoon
</select>
<select id="selectBasCargoSpaceListByRoadway" parameterType="BasCargoSpace" resultMap="BasCargoSpaceResult">
@@ -217,4 +218,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare7 != null and spare7 != ''"> and bs.spare7 = #{spare7}</if>
<if test="stockStatus != null and stockStatus != ''"> and bs.stock_status = #{stockStatus}</if>
</select>
<select id="selectPlatByWeight" resultType="java.lang.Double">
select sum(CAST(ISNULL(bs.net_weight, 0) AS FLOAT))
from bas_cargo_space bcs
LEFT join bas_stock bs on bcs.cargo_space_id = bs.cargo_space_id
where bcs.warehouse_id = #{warehouseId}
and bcs.roadway_id = #{roadwayId}
and bcs.the_platoon = #{thePlatoon}
</select>
</mapper>

View File

@@ -104,7 +104,7 @@ public class SecurityConfig
// 静态资源,可匿名访问
.requestMatchers(HttpMethod.GET, "/", "/*.html", "/**.html", "/**.css", "/**.js", "/profile/**").permitAll()
.requestMatchers("/swagger-ui.html", "/v3/api-docs/**", "/swagger-ui/**", "/druid/**").permitAll()
.requestMatchers("/api/**","/api2wms/**","/api2erp/**","/api2mes/**").permitAll()
.requestMatchers("/api/**","/api2wms/**","/api2erp/**","/api2mes/**","/api2wcs/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})