10月22日现场最新版本

This commit is contained in:
杨学谦 2025-10-22 11:39:18 +08:00
parent 204bda118b
commit 7e201dd001
16 changed files with 9730 additions and 2847 deletions

View File

@ -1,8 +1,8 @@
import axios from 'axios' import axios from 'axios'
const request = axios.create({ const request = axios.create({
//baseURL: 'http://172.18.222.253:12315/wms', baseURL: 'http://172.18.222.253:12315/wms',
baseURL: 'http://localhost:12315/wms', //baseURL: 'http://localhost:12315/wms',
timeout: 5000 timeout: 5000
}) })
// 172.18.222.253 // 172.18.222.253

View File

@ -2,59 +2,59 @@
<el-config-provider :locale="zhCn"> <el-config-provider :locale="zhCn">
<el-container class="content"> <el-container class="content">
<div class="work-area"> <div class="work-area">
<fieldset class="search-area"> <!-- <fieldset class="search-area">-->
<el-form ref="outTaskRef" :model="outTaskEntity" :label-position="labelPosition" label-width="158px" <!-- <el-form ref="outTaskRef" :model="outTaskEntity" :label-position="labelPosition" label-width="158px"-->
style="max-width: 100%" :rules="requestRules" status-icon> <!-- style="max-width: 100%" :rules="requestRules" status-icon>-->
<div style="display: flex; justify-content: space-between;"> <!-- <div style="display: flex; justify-content: space-between;">-->
<el-row> <!-- <el-row>-->
<!-- <el-form-item label="出库类型" prop="outType"> <!-- &lt;!&ndash; <el-form-item label="出库类型" prop="outType">-->
<el-select-v2 style="width: 196px" v-model="outTaskEntity.outType" placeholder="请选择入库类型" <!-- <el-select-v2 style="width: 196px" v-model="outTaskEntity.outType" placeholder="请选择入库类型"-->
:options="outTypeOptions"></el-select-v2> <!-- :options="outTypeOptions"></el-select-v2>-->
</el-form-item> --> <!-- </el-form-item> &ndash;&gt;-->
<el-form-item label="料号" prop="goodsId"> <!-- <el-form-item label="料号" prop="goodsId">-->
<el-input v-model="outTaskEntity.goodsId" @blur="getLackQty()" clearable/> <!-- <el-input v-model="outTaskEntity.goodsId" @blur="getLackQty()" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="数量" prop="needNum"> <!-- <el-form-item label="数量" prop="needNum">-->
<el-input-number style="width: 196px" v-model.number="outTaskEntity.needNum" <!-- <el-input-number style="width: 196px" v-model.number="outTaskEntity.needNum"-->
controls-position="right" :min="1" clearable/> <!-- controls-position="right" :min="1" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="箱号" prop="vehicleId"> <!-- <el-form-item label="箱号" prop="vehicleId">-->
<el-input v-model="outTaskEntity.vehicleId" clearable/> <!-- <el-input v-model="outTaskEntity.vehicleId" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="特殊库存" prop="specialStock"> <!-- <el-form-item label="特殊库存" prop="specialStock">-->
<el-input v-model="outTaskEntity.specialStock" ref="specialStock" clearable/> <!-- <el-input v-model="outTaskEntity.specialStock" ref="specialStock" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="特殊库存号" prop="specialStockNo"> <!-- <el-form-item label="特殊库存号" prop="specialStockNo">-->
<el-input v-model="outTaskEntity.specialStockNo" ref="specialStockNo" clearable/> <!-- <el-input v-model="outTaskEntity.specialStockNo" ref="specialStockNo" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="特殊库存item号" prop="specialStockItemNo"> <!-- <el-form-item label="特殊库存item号" prop="specialStockItemNo">-->
<el-input v-model="outTaskEntity.specialStockItemNo" ref="specialStockItemNo" clearable/> <!-- <el-input v-model="outTaskEntity.specialStockItemNo" ref="specialStockItemNo" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="批次号" prop="batchNo"> <!-- <el-form-item label="批次号" prop="batchNo">-->
<el-input v-model="outTaskEntity.batchNo" ref="batchNo" clearable/> <!-- <el-input v-model="outTaskEntity.batchNo" ref="batchNo" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
<!-- <el-form-item label="原因" prop="reason" v-if="outTaskEntity.outType === 9"> <!-- &lt;!&ndash; <el-form-item label="原因" prop="reason" v-if="outTaskEntity.outType === 9">-->
<el-select-v2 style="width: 196px" v-model="outTaskEntity.reason" placeholder="请选择紧急出库原因" <!-- <el-select-v2 style="width: 196px" v-model="outTaskEntity.reason" placeholder="请选择紧急出库原因"-->
:options="reasonOptions"></el-select-v2> <!-- :options="reasonOptions"></el-select-v2>-->
</el-form-item> --> <!-- </el-form-item> &ndash;&gt;-->
<el-form-item label="工单" prop="workOrder" v-if="outTaskEntity.reason === '缺料'"> <!-- <el-form-item label="工单" prop="workOrder" v-if="outTaskEntity.reason === '缺料'">-->
<el-input v-model="outTaskEntity.workOrder" @blur="getLackQty()" clearable/> <!-- <el-input v-model="outTaskEntity.workOrder" @blur="getLackQty()" clearable/>-->
</el-form-item> <!-- </el-form-item>-->
</el-row> <!-- </el-row>-->
<el-row> <!-- <el-row>-->
<el-button type="primary" <!-- <el-button type="primary"-->
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;" <!-- style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"-->
@click="confirmOut()">确认出库 <!-- @click="confirmOut()">确认出库-->
</el-button> <!-- </el-button>-->
<el-button type="warning" <!-- <el-button type="warning"-->
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;" <!-- style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"-->
@click="clearInput()">清除输入 <!-- @click="clearInput()">清除输入-->
</el-button> <!-- </el-button>-->
</el-row> <!-- </el-row>-->
</div> <!-- </div>-->
</el-form> <!-- </el-form>-->
</fieldset> <!-- </fieldset>-->
<!-- 修改confirm-area为竖直布局表单项两两一排 --> <!-- 修改confirm-area为竖直布局表单项两两一排 -->
<!-- 修改confirm-area为竖直布局表单项两两一排 --> <!-- 修改confirm-area为竖直布局表单项两两一排 -->
<div style="display: flex; margin-top: 10px;"> <div style="display: flex; margin-top: 10px;">

View File

@ -17,6 +17,11 @@
<el-input class="form-input large-center-input" v-model="bindingData.goodsId" clearable readonly/> <el-input class="form-input large-center-input" v-model="bindingData.goodsId" clearable readonly/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="22" :offset="1">
<el-form-item label="跟单信息:" required>
<el-input class="form-input large-center-input" v-model="bindingData.remark" clearable readonly/>
</el-form-item>
</el-col>
<el-col :span="22" :offset="1"> <el-col :span="22" :offset="1">
<el-form-item label="本次实际拣选:" required> <el-form-item label="本次实际拣选:" required>
<el-input class="form-input large-center-input" v-model="bindingData.planPickQty" clearable/> <el-input class="form-input large-center-input" v-model="bindingData.planPickQty" clearable/>
@ -110,7 +115,8 @@ export default {
putArea: '', putArea: '',
warningQty: null, warningQty: null,
containerNo: '', containerNo: '',
standId: '' standId: '',
remark: ''
}, },
transferList: [], transferList: [],
inventoryList: [], inventoryList: [],
@ -210,7 +216,7 @@ export default {
const responseData = res.data; const responseData = res.data;
if (responseData.code === 0) { if (responseData.code === 0) {
if (responseData.message === "继续拣选"){ if (responseData.message === "继续拣选"){
ElMessageBox.alert('请继续拣选操作', '提示', { ElMessageBox.alert('该料箱还有任务,请继续拣选!', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
type: 'info' type: 'info'
}); });
@ -249,7 +255,7 @@ export default {
this.bindingData.planPickQty = ''; this.bindingData.planPickQty = '';
this.bindingData.realRemainQty = ''; this.bindingData.realRemainQty = '';
this.bindingData.containerNo = ''; this.bindingData.containerNo = '';
this.bindingData.remark = '';
// //
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.sourceBoxInput.focus(); this.$refs.sourceBoxInput.focus();
@ -299,6 +305,7 @@ export default {
this.bindingData.isOut = result.stockConfirm.isOut this.bindingData.isOut = result.stockConfirm.isOut
this.bindingData.putArea = result.stockConfirm.putArea || '' this.bindingData.putArea = result.stockConfirm.putArea || ''
this.bindingData.warningQty = result.stockConfirm.warningQty this.bindingData.warningQty = result.stockConfirm.warningQty
this.bindingData.remark = result.stockConfirm.remark
} }
console.log(this.bindingData) console.log(this.bindingData)
} else { } else {

View File

@ -37,7 +37,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importBaseGoods") //@PostMapping("/importBaseGoods")
public BaseWmsApiResponse importBaseGoods(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importBaseGoods(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportBaseGoods(file, fileVo); return importExcelEasyPoi.doImportBaseGoods(file, fileVo);
} }
@ -49,7 +49,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importInventoryRequest") //@PostMapping("/importInventoryRequest")
public BaseWmsApiResponse importInventoryRequest(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importInventoryRequest(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportInventoryRequest(file, fileVo); return importExcelEasyPoi.doImportInventoryRequest(file, fileVo);
} }
@ -61,7 +61,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importKanban") //@PostMapping("/importKanban")
public BaseWmsApiResponse importKanban(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importKanban(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportKanban(file, fileVo); return importExcelEasyPoi.doImportKanban(file, fileVo);
} }
@ -73,7 +73,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importDbs") //@PostMapping("/importDbs")
public BaseWmsApiResponse importDbs(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importDbs(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportDbs(file, fileVo); return importExcelEasyPoi.doImportDbs(file, fileVo);
} }
@ -85,7 +85,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importProduct") //@PostMapping("/importProduct")
public BaseWmsApiResponse importProduct(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importProduct(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportProduct(file, fileVo); return importExcelEasyPoi.doImportProduct(file, fileVo);
} }
@ -97,7 +97,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importServiceProduct") //@PostMapping("/importServiceProduct")
public BaseWmsApiResponse importServiceProduct(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importServiceProduct(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportServiceProduct(file, fileVo); return importExcelEasyPoi.doImportServiceProduct(file, fileVo);
} }
@ -109,7 +109,7 @@ public class ExcelController {
* @return 导入结果 * @return 导入结果
* @throws Exception 异常 * @throws Exception 异常
*/ */
@PostMapping("/importProductExtend") //@PostMapping("/importProductExtend")
public BaseWmsApiResponse importProductExtend(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception { public BaseWmsApiResponse importProductExtend(@RequestPart("file") MultipartFile file, @RequestPart("fileVo") FileVo fileVo) throws Exception {
return importExcelEasyPoi.doImportProductExtend(file, fileVo); return importExcelEasyPoi.doImportProductExtend(file, fileVo);
} }
@ -118,7 +118,7 @@ public class ExcelController {
* 导出DBS * 导出DBS
* @param dbsQuery 请求 * @param dbsQuery 请求
*/ */
@PostMapping("/exportDbsWithExcel") //@PostMapping("/exportDbsWithExcel")
public void exportDbsWithExcel(@RequestBody DbsQuery dbsQuery, HttpServletResponse response) throws IOException { public void exportDbsWithExcel(@RequestBody DbsQuery dbsQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportDbs(dbsQuery, response); exportExcelEasyPoi.doExportDbs(dbsQuery, response);
} }
@ -127,7 +127,7 @@ public class ExcelController {
* 导出配料单 * 导出配料单
* @param kittingBomQuery 请求 * @param kittingBomQuery 请求
*/ */
@PostMapping("/exportKittingBomWithExcel") //@PostMapping("/exportKittingBomWithExcel")
public void exportKittingBomWithExcel(@RequestBody KittingBomQuery kittingBomQuery, HttpServletResponse response) throws IOException { public void exportKittingBomWithExcel(@RequestBody KittingBomQuery kittingBomQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportKittingBom(kittingBomQuery, response); exportExcelEasyPoi.doExportKittingBom(kittingBomQuery, response);
} }
@ -136,7 +136,7 @@ public class ExcelController {
* 导出配对关系 * 导出配对关系
* @param kittingBomRelationQuery 请求 * @param kittingBomRelationQuery 请求
*/ */
@PostMapping("/exportKittingBomRelationWithExcel") //@PostMapping("/exportKittingBomRelationWithExcel")
public void exportKittingBomRelationWithExcel(@RequestBody KittingBomRelationQuery kittingBomRelationQuery, HttpServletResponse response) throws IOException { public void exportKittingBomRelationWithExcel(@RequestBody KittingBomRelationQuery kittingBomRelationQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportKittingBomRelations(kittingBomRelationQuery, response); exportExcelEasyPoi.doExportKittingBomRelations(kittingBomRelationQuery, response);
} }
@ -154,7 +154,7 @@ public class ExcelController {
* 导出物料基础信息 * 导出物料基础信息
* @param goodsQuery 请求 * @param goodsQuery 请求
*/ */
@PostMapping("/exportGoodsExcel") //@PostMapping("/exportGoodsExcel")
public void exportGoodsExcel(@RequestBody GoodsQuery goodsQuery, HttpServletResponse response) throws IOException { public void exportGoodsExcel(@RequestBody GoodsQuery goodsQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportGoods(goodsQuery, response); exportExcelEasyPoi.doExportGoods(goodsQuery, response);
} }
@ -172,7 +172,7 @@ public class ExcelController {
* 导出工作详情信息 * 导出工作详情信息
* @param workSummaryQuery 请求 * @param workSummaryQuery 请求
*/ */
@PostMapping("/exportWorkSummaryExcel") //@PostMapping("/exportWorkSummaryExcel")
public void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException { public void exportWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportWorkSummaryExcel(workSummaryQuery, response); exportExcelEasyPoi.doExportWorkSummaryExcel(workSummaryQuery, response);
} }
@ -181,7 +181,7 @@ public class ExcelController {
* 导出看板需求 * 导出看板需求
* @param kanbanQuery 请求 * @param kanbanQuery 请求
*/ */
@PostMapping("/exportKanbanExcel") //@PostMapping("/exportKanbanExcel")
public void exportKanbanExcel(@RequestBody KanbanQuery kanbanQuery, HttpServletResponse response) throws IOException { public void exportKanbanExcel(@RequestBody KanbanQuery kanbanQuery, HttpServletResponse response) throws IOException {
exportExcelEasyPoi.doExportKanbanExcel(kanbanQuery, response); exportExcelEasyPoi.doExportKanbanExcel(kanbanQuery, response);
} }

View File

@ -48,7 +48,7 @@ public class TaskController {
* @param stockInRequest 请求信息 * @param stockInRequest 请求信息
* @return 处理结果 * @return 处理结果
*/ */
@PostMapping("/requireStockIn") //@PostMapping("/requireStockIn")
public BaseWmsApiResponse requireStockIn(@RequestBody StockInRequest stockInRequest) { public BaseWmsApiResponse requireStockIn(@RequestBody StockInRequest stockInRequest) {
return taskControllerService.requireStockIn(stockInRequest); return taskControllerService.requireStockIn(stockInRequest);
} }
@ -58,7 +58,7 @@ public class TaskController {
* @param stockOutRequest 请求信息 * @param stockOutRequest 请求信息
* @return 处理结果 * @return 处理结果
*/ */
@PostMapping("/requireStockOut") //@PostMapping("/requireStockOut")
public BaseWmsApiResponse requireStockOut(@RequestBody StockOutRequest stockOutRequest) { public BaseWmsApiResponse requireStockOut(@RequestBody StockOutRequest stockOutRequest) {
return taskControllerService.requireStockOut(stockOutRequest); return taskControllerService.requireStockOut(stockOutRequest);
} }
@ -103,10 +103,10 @@ public class TaskController {
* @param voiRequest 请求信息 * @param voiRequest 请求信息
* @return 处理结果 * @return 处理结果
*/ */
@PostMapping("/requireVehiclesForIn") // @PostMapping("/requireVehiclesForIn")
public BaseWmsApiResponse requireVehiclesForIn(@RequestBody VehicleOutForInRequest voiRequest) { // public BaseWmsApiResponse requireVehiclesForIn(@RequestBody VehicleOutForInRequest voiRequest) {
return taskControllerService.requireVehiclesForIn(voiRequest); // return taskControllerService.requireVehiclesForIn(voiRequest);
} // }
/** /**
* 接收wcs反馈任务状态 * 接收wcs反馈任务状态

View File

@ -52,7 +52,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportDbs(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportDbs(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams dbsImportparams = new ImportParams(); ImportParams dbsImportparams = new ImportParams();
@ -129,7 +129,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportProduct(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportProduct(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams productImportparams = new ImportParams(); ImportParams productImportparams = new ImportParams();
@ -208,7 +208,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportServiceProduct(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportServiceProduct(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams productImportparams = new ImportParams(); ImportParams productImportparams = new ImportParams();
@ -311,7 +311,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportProductExtend(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportProductExtend(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams productImportparams = new ImportParams(); ImportParams productImportparams = new ImportParams();
@ -358,7 +358,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @return 导入结果 * @return 导入结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportBaseGoods(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportBaseGoods(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams baseGoodsImportparams = new ImportParams(); ImportParams baseGoodsImportparams = new ImportParams();
@ -422,7 +422,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportKanban(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportKanban(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams kanbanImportparams = new ImportParams(); ImportParams kanbanImportparams = new ImportParams();
@ -474,7 +474,7 @@ public class ImportExcelEasyPoi extends BaseImportExcelEasyPoi implements IImpor
* @throws Exception 异常 * @throws Exception 异常
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse doImportInventoryRequest(MultipartFile file, FileVo fileVo) throws Exception { public BaseWmsApiResponse doImportInventoryRequest(MultipartFile file, FileVo fileVo) throws Exception {
// 设置解析条件 // 设置解析条件
ImportParams inventoryRequestImportparams = new ImportParams(); ImportParams inventoryRequestImportparams = new ImportParams();

View File

@ -53,6 +53,12 @@ public class StockConfirmEntity {
@JsonProperty("warningQty") @JsonProperty("warningQty")
private Integer warningQty; private Integer warningQty;
/**
* 备注
*/
@JsonProperty("remark")
private String remark;
// /** // /**
// * 库存总剩余数量 // * 库存总剩余数量
// */ // */

View File

@ -417,7 +417,7 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
null, null,
null, null,
null, null,
null null,null
); );
resultVo = new WorkConfirmVo(orderConfirmVo, stockConfirmVo); resultVo = new WorkConfirmVo(orderConfirmVo, stockConfirmVo);
break; break;
@ -509,11 +509,13 @@ public class ConveyTaskServiceImpl implements IConveyTaskService {
0, 0,
"ASRS", "ASRS",
stockDataService.getWarningQty(), stockDataService.getWarningQty(),
thisOuts.getWorkOrder(),
thisOuts.getSpecialStock() , thisOuts.getSpecialStock() ,
thisOuts.getBatchNo(), thisOuts.getBatchNo(),
thisOuts.getSpecialStockNo(), thisOuts.getSpecialStockNo(),
thisOuts.getSpecialStockItemNo() thisOuts.getSpecialStockItemNo()
); );
resultVo = new TaskConfirmVo(thisPickTask.getPickStand(),false,taskConfirmVo, stockConfirmVo); resultVo = new TaskConfirmVo(thisPickTask.getPickStand(),false,taskConfirmVo, stockConfirmVo);
break; break;

View File

@ -567,6 +567,27 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseInCompleted(request); EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseInCompleted(request);
if (!Objects.equals(ewmApiBackResponse.getState(), "successfully")) { if (!Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
log.error("调用EWM系统接口异常请求参数: {}", request); log.error("调用EWM系统接口异常请求参数: {}", request);
// 需要将料箱下架生成一个出库任务
// 生成出库任务
TAppTask outTask = new TAppTask(
UUIDUtils.getNewUUID(),
WmsTaskTypeEnums.OUT.getCode(),
0,
9,
vehicleId,
emptyVehicle.getLocationId(),
null,
null,
LocalDateTime.now(),
null,
AppConstant.EMPTY_GOODS_ID,
0,
0,
appOuts.getUserName(),
"",
appOuts.getDestination(),
""
);
}else { }else {
log.info("调用EWM系统接口成功请求参数: {}", request); log.info("调用EWM系统接口成功请求参数: {}", request);
} }
@ -581,7 +602,7 @@ public class StackerTaskServiceImpl implements IStackerTaskService {
* @param stackerInTasks 已完成的入库任务 * @param stackerInTasks 已完成的入库任务
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public void finishStackerInTasksMergeSameGoods(List<TAppTask> stackerInTasks) { public void finishStackerInTasksMergeSameGoods(List<TAppTask> stackerInTasks) {
// 入库任务完成需要做以下几件事情 // 入库任务完成需要做以下几件事情
// 1. 生成库存如果是已有库存则更新库存状态数量库位这些信息 // 1. 生成库存如果是已有库存则更新库存状态数量库位这些信息

View File

@ -122,12 +122,12 @@ public class StockDataServiceImpl implements IStockDataService {
// 回告EWM系统 // 回告EWM系统
SendEwmVehicleForInRequest request = new SendEwmVehicleForInRequest(); SendEwmVehicleForInRequest request = new SendEwmVehicleForInRequest();
request.setContainerNo(stockConfirm.getVehicleId()); request.setContainerNo(stockConfirm.getVehicleId());
// EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendContainerEmpty(request); EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendContainerEmpty(request);
// if (!Objects.equals(ewmApiBackResponse.getState(), "successful")) { if (!Objects.equals(ewmApiBackResponse.getState(), "successful")) {
// log.error("容器置空调用EWM系统接口异常请求参数: {}", request); log.error("容器置空调用EWM系统接口异常请求参数: {}", request);
// }else { }else {
// log.info("容器置空调用EWM系统接口成功请求参数: {}", request); log.info("容器置空调用EWM系统接口成功请求参数: {}", request);
// } }
} }
// 更新库存数量 // 更新库存数量
if (!updateStocks.isEmpty()) { if (!updateStocks.isEmpty()) {

View File

@ -120,7 +120,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 初始化任务响应信息 * @return 初始化任务响应信息
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse initWorks(InitKateWorkRequest initKateWorkRequest) { public BaseWmsApiResponse initWorks(InitKateWorkRequest initKateWorkRequest) {
if (initKateWorkRequest == null) { if (initKateWorkRequest == null) {
return BaseWmsApiResponse.error("请求信息为空,无法创建工作。"); return BaseWmsApiResponse.error("请求信息为空,无法创建工作。");
@ -281,7 +281,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 查询结果 * @return 查询结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public WmsApiResponse<WorkConfirmVo> getCurrentWorks(KateWorksQuery kateWorksQuery) { public WmsApiResponse<WorkConfirmVo> getCurrentWorks(KateWorksQuery kateWorksQuery) {
if (kateWorksQuery == null || StringUtils.isEmpty(kateWorksQuery.getStandId())) { if (kateWorksQuery == null || StringUtils.isEmpty(kateWorksQuery.getStandId())) {
return WmsApiResponse.error("请求缺少信息,请输入站台号。", null); return WmsApiResponse.error("请求缺少信息,请输入站台号。", null);
@ -318,7 +318,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
stockDataService.getWarningQty(),null, stockDataService.getWarningQty(),null,
null, null,
null, null,
null) null,null)
)); ));
} }
@ -377,7 +377,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 确认结果 * @return 确认结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse confirmCurrentWork(ConfirmWorkRequest confirmWorkRequest) { public BaseWmsApiResponse confirmCurrentWork(ConfirmWorkRequest confirmWorkRequest) {
if (confirmWorkRequest == null || StringUtils.isEmpty(confirmWorkRequest.getStandId())) { if (confirmWorkRequest == null || StringUtils.isEmpty(confirmWorkRequest.getStandId())) {
return BaseWmsApiResponse.error("请求缺少信息,请输入站台号。"); return BaseWmsApiResponse.error("请求缺少信息,请输入站台号。");
@ -505,7 +505,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 显示信息 * @return 显示信息
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public WmsApiResponse<BoxDetailVo> getBoxesAndLacks(BaseWmsRequest request) { public WmsApiResponse<BoxDetailVo> getBoxesAndLacks(BaseWmsRequest request) {
if (StringUtils.isEmpty(request.getStandId())) { if (StringUtils.isEmpty(request.getStandId())) {
// 站台号不能为空 // 站台号不能为空
@ -680,7 +680,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 生成结果 * @return 生成结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public WmsApiResponse<List<KanbanLackDetail>> genClcKanbanRequirement(GenKanbanRequirementRequest genRequest) { public WmsApiResponse<List<KanbanLackDetail>> genClcKanbanRequirement(GenKanbanRequirementRequest genRequest) {
// 判断工单列表是否为空 // 判断工单列表是否为空
if (genRequest == null) { if (genRequest == null) {
@ -1316,7 +1316,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 删除结果 * @return 删除结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse deleteDbsPlan(DbsRequest dbsRequest) { public BaseWmsApiResponse deleteDbsPlan(DbsRequest dbsRequest) {
if (dbsRequest == null) { if (dbsRequest == null) {
// 请求为空 // 请求为空
@ -1348,7 +1348,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
* @return 删除结果 * @return 删除结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse deleteKittingBom(KittingBomRequest kittingBomRequest) { public BaseWmsApiResponse deleteKittingBom(KittingBomRequest kittingBomRequest) {
if (kittingBomRequest == null) { if (kittingBomRequest == null) {
// 请求为NULL // 请求为NULL
@ -1579,7 +1579,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
null, null,
null, null,
null, null,
null null,null
); );
return new WorkConfirmVo(orderConfirmVo, stockConfirmVo); return new WorkConfirmVo(orderConfirmVo, stockConfirmVo);
} }

View File

@ -34,7 +34,7 @@ public class LocationControllerServiceImpl implements ILocationControllerService
* @return 处理结果 * @return 处理结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse genLocations(LocationQuery locationQuery) { public BaseWmsApiResponse genLocations(LocationQuery locationQuery) {
List<TAppLocation> locationList = appLocationService.list(); List<TAppLocation> locationList = appLocationService.list();
List<TAppLocation> newLocationList = new ArrayList<>(); List<TAppLocation> newLocationList = new ArrayList<>();

View File

@ -90,7 +90,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
* @return 响应结果 * @return 响应结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse requireStockIn(StockInRequest stockInRequest) { public BaseWmsApiResponse requireStockIn(StockInRequest stockInRequest) {
// 判断请求信息的正确性 // 判断请求信息的正确性
if (stockInRequest == null || StringUtils.isEmpty(stockInRequest.getVehicleId())) { if (stockInRequest == null || StringUtils.isEmpty(stockInRequest.getVehicleId())) {
@ -250,7 +250,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
* @return 处理结果 * @return 处理结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse requireStockOut(StockOutRequest stockOutRequest) { public BaseWmsApiResponse requireStockOut(StockOutRequest stockOutRequest) {
// 保存 // 保存
if (stockOutRequest == null || stockOutRequest.getNeedNum() == null if (stockOutRequest == null || stockOutRequest.getNeedNum() == null
@ -561,7 +561,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
"EWM", "EWM",
"SYSTEM", "SYSTEM",
LocalDateTime.now(), LocalDateTime.now(),
null, task.getRemark(),
task.getOrderNo(), task.getOrderNo(),
task.getSpecialStock(), task.getSpecialStock(),
task.getSpecialStockNo(), task.getSpecialStockNo(),
@ -821,7 +821,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
* @return 处理结果 * @return 处理结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public BaseWmsApiResponse requireVehiclesForIn(VehicleOutForInRequest voiRequest) { public BaseWmsApiResponse requireVehiclesForIn(VehicleOutForInRequest voiRequest) {
// 验证请求正确性 // 验证请求正确性
if (voiRequest == null || voiRequest.getGoodsIds() == null || voiRequest.getGoodsIds().isEmpty()) { if (voiRequest == null || voiRequest.getGoodsIds() == null || voiRequest.getGoodsIds().isEmpty()) {
@ -1316,6 +1316,16 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
} }
} }
// 无事务的查询方法
public TAppPickTask findPickTask(String vehicleNo) {
return appPickTaskService.getOne(new LambdaQueryWrapper<TAppPickTask>()
.eq(TAppPickTask::getVehicleId, vehicleNo)
.eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.SEND.getCode())
.orderByDesc(TAppPickTask::getCreateTime)
.last("LIMIT 1"));
}
/** /**
* 实现 * 实现
* *
@ -1331,11 +1341,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|| StringUtils.isEmpty(boxArriveRequest.getLocation())) { || StringUtils.isEmpty(boxArriveRequest.getLocation())) {
return BaseWcsApiResponse.error("请求信息不完整,缺少载具号或者点位。"); return BaseWcsApiResponse.error("请求信息不完整,缺少载具号或者点位。");
} }
TAppPickTask pickTask = appPickTaskService.getOne(new LambdaQueryWrapper<TAppPickTask>() TAppPickTask pickTask = findPickTask(boxArriveRequest.getVehicleNo());
.eq(TAppPickTask::getVehicleId, boxArriveRequest.getVehicleNo())
.eq(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.SEND.getCode())
.orderByDesc(TAppPickTask::getCreateTime) // 按创建时间倒序
.last("LIMIT 1")); // 限制只返回一条记录
if (pickTask == null) { if (pickTask == null) {
return BaseWcsApiResponse.error("没有找到当前载具的拣选任务。"); return BaseWcsApiResponse.error("没有找到当前载具的拣选任务。");
@ -1366,14 +1372,14 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
.gt(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.WAIT.getCode()) .gt(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.WAIT.getCode())
.ne(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.FOR_IN.getCode())); .ne(TAppPickTask::getPickStatus, WmsPickTaskStatusEnum.FOR_IN.getCode()));
// // 更新拣选PLAN // 更新拣选PLAN
// boolean isUpdatePlanSuccess = appPickPlanService.update(new LambdaUpdateWrapper<TAppPickPlan>() boolean isUpdatePlanSuccess = appPickPlanService.update(new LambdaUpdateWrapper<TAppPickPlan>()
// .set(TAppPickPlan::getStandId, boxArriveRequest.getLocation()) .set(TAppPickPlan::getStandId, boxArriveRequest.getLocation())
// .eq(TAppPickPlan::getVehicleId, boxArriveRequest.getVehicleNo()) .eq(TAppPickPlan::getVehicleId, boxArriveRequest.getVehicleNo())
// .eq(TAppPickPlan::getStandId, pickStand) .eq(TAppPickPlan::getStandId, pickStand)
// .last("LIMIT 1")); .last("LIMIT 1"));
boolean isUpdatePlanSuccess = updatePickPlanInNewTransaction(boxArriveRequest, pickStand); //boolean isUpdatePlanSuccess = updatePickPlanInNewTransaction(boxArriveRequest, pickStand);
if (isUpdateSuccess && isUpdatePlanSuccess) { if (isUpdateSuccess && isUpdatePlanSuccess) {
// 更新成功返回成功 // 更新成功返回成功
@ -1384,15 +1390,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
} }
} }
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public boolean updatePickPlanInNewTransaction(WcsBoxArriveRequest boxArriveRequest, String pickStand) {
return appPickPlanService.update(new LambdaUpdateWrapper<TAppPickPlan>()
.set(TAppPickPlan::getStandId, boxArriveRequest.getLocation())
.eq(TAppPickPlan::getVehicleId, boxArriveRequest.getVehicleNo())
.eq(TAppPickPlan::getStandId, pickStand)
.last("LIMIT 1"));
}
/** /**
* 取消拣选任务实现 * 取消拣选任务实现
@ -1431,7 +1428,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
* @return 获取结果 * @return 获取结果
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) //@Transactional(rollbackFor = Exception.class)
public WmsApiResponse<List<TaskConfirmVo>> getCurrentTask(BaseWmsRequest wmsRequest) { public WmsApiResponse<List<TaskConfirmVo>> getCurrentTask(BaseWmsRequest wmsRequest) {
if (wmsRequest == null || StringUtils.isEmpty(wmsRequest.getStandId())) { if (wmsRequest == null || StringUtils.isEmpty(wmsRequest.getStandId())) {
// 缺少站台号 // 缺少站台号
@ -1556,26 +1553,26 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
return BaseWmsApiResponse.error("当前任务不存在或已经拣选完毕,请刷新后重试。"); return BaseWmsApiResponse.error("当前任务不存在或已经拣选完毕,请刷新后重试。");
} }
// // 调用EWM系统检验箱子 // 调用EWM系统检验箱子
// SendEwmCheckContainerNo request = new SendEwmCheckContainerNo(); SendEwmCheckContainerNo request = new SendEwmCheckContainerNo();
// request.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo()); request.setContainerNo(confirmTaskRequest.getTaskConfirm().getContainerNo());
// request.setType(thisOut.getPickingType()); request.setType(thisOut.getPickingType());
// request.setFirstOrSecond(false); request.setFirstOrSecond(false);
// request.setCheckKey(thisOut.getSecondPickingCode()); request.setCheckKey(thisOut.getSecondPickingCode());
// EwmApiBackResponse ewmResponse = ewmApiService.sendEwmCheckContainerNo(request); EwmApiBackResponse ewmResponse = ewmApiService.sendEwmCheckContainerNo(request);
// // 检查 EWM 系统返回结果 // 检查 EWM 系统返回结果
// if (ewmResponse == null) { if (ewmResponse == null) {
// return BaseWmsApiResponse.error("EWM系统无响应请检查网络连接。"); return BaseWmsApiResponse.error("EWM系统无响应请检查网络连接。");
// } }
// // 检查返回内容是否为空 // 检查返回内容是否为空
// if (ewmResponse.getContent() == null) { if (ewmResponse.getContent() == null) {
// // 根据 state 状态处理 // 根据 state 状态处理
// if ("successfully".equals(ewmResponse.getState())) { if ("successfully".equals(ewmResponse.getState())) {
// return BaseWmsApiResponse.success("操作成功,但无返回内容。"); return BaseWmsApiResponse.success("操作成功,但无返回内容。");
// } else { } else {
// return BaseWmsApiResponse.error("EWM系统返回异常" + (ewmResponse.getMessage() != null ? ewmResponse.getMessage() : "未知错误")); return BaseWmsApiResponse.error("EWM系统返回异常" + (ewmResponse.getMessage() != null ? ewmResponse.getMessage() : "未知错误"));
// } }
// } }
// 检测目标箱号是否存在别的物料以颗粒度为第一优先级如果颗粒度为空则使用工单号 // 检测目标箱号是否存在别的物料以颗粒度为第一优先级如果颗粒度为空则使用工单号
List<TAppOutsCheck> thisOutsChecks = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>() List<TAppOutsCheck> thisOutsChecks = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>()
@ -2140,19 +2137,20 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
request.setPickingDetail(pickingDetails); request.setPickingDetail(pickingDetails);
request.setWaveNo(outs.getWaveNo()); request.setWaveNo(outs.getWaveNo());
request.setPickingType(outs.getPickingType()); request.setPickingType(outs.getPickingType());
// EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseOutCompleted(request); EwmApiBackResponse ewmApiBackResponse = ewmApiService.sendWarehouseOutCompleted(request);
// if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) { if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
// log.info("调用EWM系统接口成功请求参数: {}", request); log.info("调用EWM系统接口成功请求参数: {}", request);
// appOutsCheckService.remove(new LambdaQueryWrapper<TAppOutsCheck>() appOutsCheckService.remove(new LambdaQueryWrapper<TAppOutsCheck>()
// .eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId())); .eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId())
// }else { );
// log.error("调用EWM系统接口异常请求参数: {}", request); }else {
// // 触发事务回滚 log.error("调用EWM系统接口异常请求参数: {}", request);
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // 触发事务回滚
// // 返回错误信息 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return ewmApiBackResponse.toString(); // 返回错误信息
// return ewmApiBackResponse.toString();
// }
}
// 生成记录 // 生成记录
TAppOutsRecord record = new TAppOutsRecord( TAppOutsRecord record = new TAppOutsRecord(

View File

@ -2,6 +2,7 @@ package com.wms_main.service.quartz_job.serviceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms_main.app.AppCommon; import com.wms_main.app.AppCommon;
import com.wms_main.constant.AppConstant; import com.wms_main.constant.AppConstant;
import com.wms_main.constant.enums.wms.*; import com.wms_main.constant.enums.wms.*;
@ -43,6 +44,7 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
private final ITAppInventoryService appInventoryService;// 盘点任务服务 private final ITAppInventoryService appInventoryService;// 盘点任务服务
private final AppCommon appCommon;// 应用共通数据 private final AppCommon appCommon;// 应用共通数据
/** /**
* 解析出库单 实现 * 解析出库单 实现
*/ */
@ -53,15 +55,22 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
// 查询到对应的出库单 // 查询到对应的出库单
// List<TAppOuts> appOutsList = appOutsService.list( // List<TAppOuts> appOutsList = appOutsService.list(
// new LambdaQueryWrapper<TAppOuts>().orderByDesc(TAppOuts::getOutType) // new LambdaQueryWrapper<TAppOuts>().orderByDesc(TAppOuts::getOutType)
// );
// List<TAppOuts> appOutsList = appOutsService.list(
// new LambdaQueryWrapper<TAppOuts>()
// .le(TAppOuts::getPickingDate, LocalDate.now())
// .orderByDesc(TAppOuts::getOutType)
// ); // );
List<TAppOuts> appOutsList = appOutsService.list( List<TAppOuts> appOutsList = appOutsService.list(
new LambdaQueryWrapper<TAppOuts>() new LambdaQueryWrapper<TAppOuts>()
.le(TAppOuts::getPickingDate, LocalDate.now()) .le(TAppOuts::getPickingDate, LocalDate.now())
// .orderByDesc(TAppOuts::getOutType) .orderByDesc(TAppOuts::getOutType)
); .last("LIMIT 15") // 限制只查询15条记录
).stream()
.filter(appOuts -> appOuts.getDistributeNum() < appOuts.getNeedNum())
.toList();
if (appOutsList.isEmpty()) {
if (appOutsList == null || appOutsList.isEmpty()) {
return; return;
} }
// 需要保存的信息 // 需要保存的信息
@ -72,15 +81,30 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
// 拣选任务 // 拣选任务
List<TAppPickTask> pickTasks = appPickTaskService.list(); List<TAppPickTask> pickTasks = appPickTaskService.list();
// 查询库存条件剩余数量>0回库中锁定以外的库存状态 // 查询库存条件剩余数量>0回库中锁定以外的库存状态
List<TAppStock> allStocks = appStockService.list(new LambdaQueryWrapper<TAppStock>() // List<TAppStock> allStocks = appStockService.list(new LambdaQueryWrapper<TAppStock>()
.le(TAppStock::getStockStatus, WmsStockStatusEnums.OUTED.getCode()) // .le(TAppStock::getStockStatus, WmsStockStatusEnums.OUTED.getCode())
.gt(TAppStock::getRemainNum, 0) // .gt(TAppStock::getRemainNum, 0)
.orderByAsc(TAppStock::getFirstInTime)); // .orderByAsc(TAppStock::getFirstInTime));
List<TAppVehicle> emptyVehicles = appVehicleService.list(new LambdaQueryWrapper<TAppVehicle>()
.eq(TAppVehicle::getIsEmpty, 1) Set<String> requiredGoodsIds = appOutsList.stream()
.eq(TAppVehicle::getVehicleStatus, WmsVehicleStatusEnums.ON.getCode()) .map(TAppOuts::getGoodsId)
.orderByAsc(TAppVehicle::getLastInTime)); // 先进先出 .filter(StringUtils::isNotEmpty)
// 获取可用堆垛机 .collect(Collectors.toSet());
List<TAppStock> allStocks = new ArrayList<>();
if (!requiredGoodsIds.isEmpty()) {
allStocks = appStockService.list(new LambdaQueryWrapper<TAppStock>()
.in(TAppStock::getGoodsId, requiredGoodsIds)
.le(TAppStock::getStockStatus, WmsStockStatusEnums.OUTED.getCode())
.gt(TAppStock::getRemainNum, 0)
.orderByAsc(TAppStock::getFirstInTime));
}
// List<TAppVehicle> emptyVehicles = appVehicleService.list(new LambdaQueryWrapper<TAppVehicle>()
// .eq(TAppVehicle::getIsEmpty, 1)
// .eq(TAppVehicle::getVehicleStatus, WmsVehicleStatusEnums.ON.getCode())
// .orderByAsc(TAppVehicle::getLastInTime)); // 先进先出
// // 获取可用堆垛机
List<TAppEquipment> usableStackers = appEquipmentService.list(new LambdaQueryWrapper<TAppEquipment>() List<TAppEquipment> usableStackers = appEquipmentService.list(new LambdaQueryWrapper<TAppEquipment>()
.eq(TAppEquipment::getEquipmentType, 1) .eq(TAppEquipment::getEquipmentType, 1)
.eq(TAppEquipment::getEquipmentStatus, WmsUsableStatusEnums.USABLE.getCode())); .eq(TAppEquipment::getEquipmentStatus, WmsUsableStatusEnums.USABLE.getCode()));
@ -90,15 +114,15 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
if (appOuts.getDistributeNum() >= appOuts.getNeedNum()) { if (appOuts.getDistributeNum() >= appOuts.getNeedNum()) {
continue; continue;
} }
// 判断目前是否是空箱任务 // // 判断目前是否是空箱任务
if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.EMPTY.getCode())) { // if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.EMPTY.getCode())) {
solveEmpty(appOuts, emptyVehicles, equipVehicleMap, newOutWmsTasks, thisTimeOutVehicleIds); // solveEmpty(appOuts, emptyVehicles, equipVehicleMap, newOutWmsTasks, thisTimeOutVehicleIds);
} else if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.FOR_IN.getCode())) { // } else if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.FOR_IN.getCode())) {
solveOutForIn(equipVehicleMap, appOuts, allStocks, pickTasks, newOutWmsTasks, newPickTasks, thisTimeOutVehicleIds); // solveOutForIn(equipVehicleMap, appOuts, allStocks, pickTasks, newOutWmsTasks, newPickTasks, thisTimeOutVehicleIds);
} else if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.EMERGE.getCode())) { // } else if (Objects.equals(appOuts.getOutType(), WmsOutTypeEnums.EMERGE.getCode())) {
// 紧急出库 // 紧急出库
solveEmerge(equipVehicleMap, appOuts, allStocks, pickTasks, newOutWmsTasks, newPickTasks, thisTimeOutVehicleIds, newPickPlans); solveEmerge(equipVehicleMap, appOuts, allStocks, pickTasks, newOutWmsTasks, newPickTasks, thisTimeOutVehicleIds, newPickPlans);
} //}
} }
// 保存出库单---只更新分配数量 // 保存出库单---只更新分配数量
List<TAppOuts> onlyDistributeNumOuts = appOutsList.stream().map(outs -> { List<TAppOuts> onlyDistributeNumOuts = appOutsList.stream().map(outs -> {

View File

@ -10,6 +10,8 @@ spring:
# password: developer # password: developer
# 本地 # 本地
url: jdbc:mysql://localhost:3306/wms_fengshang_yangzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true url: jdbc:mysql://localhost:3306/wms_fengshang_yangzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: wms
# password: Admin123
username: root username: root
password: 123456 password: 123456
#在线 #在线

File diff suppressed because it is too large Load Diff