手持机部分

This commit is contained in:
张怡蓉
2025-07-08 14:04:31 +08:00
parent bbc4f1c708
commit 0baf2119e4
14 changed files with 238 additions and 20 deletions

View File

@@ -1,5 +1,6 @@
package com.ruoyi.bas.container.domain;
import com.ruoyi.bas.containerDetails.domain.BasContainerDetails;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -8,6 +9,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 容器管理对象 bas_container
*
@@ -54,4 +57,6 @@ public class BasContainer extends BaseEntity
/** 备用 */
private String spare3;
private List<BasContainerDetails> details;
}

View File

@@ -35,7 +35,15 @@ public class BasProductPort extends BaseEntity
/** 创建人 */
@Excel(name = "创建人")
private String createMan;
private String warehouseId;
public String getWarehouseId() {
return warehouseId;
}
public void setWarehouseId(String warehouseId) {
this.warehouseId = warehouseId;
}
private List<String> productIdList;

View File

@@ -66,6 +66,7 @@ public class CheckDifferenceRecordServiceImpl implements ICheckDifferenceRecordS
@Override
public AjaxResult insertCheckDifferenceRecord(CheckDifferenceRecord checkDifferenceRecord)
{
//1更新3删除2新增
if (checkDifferenceRecord.getRecordType()==1){
String stockId = checkDifferenceRecord.getStockId();
BasStock basStock = basStockService.selectBasStockByStockId(stockId);

View File

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 入库单据对象 in_stockin
*
@@ -101,6 +103,16 @@ public class InStockin extends BaseEntity
private String lotNo;
private String materialDesc;
private List<String> typeData;
public List<String> getTypeData() {
return typeData;
}
public void setTypeData(List<String> typeData) {
this.typeData = typeData;
}
public String getLotNo() {
return lotNo;
}

View File

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 出库主单对象 out_stockout
*
@@ -89,6 +91,16 @@ public class OutStockout extends BaseEntity
private String productName;
private List<String> typeData;
public List<String> getTypeData() {
return typeData;
}
public void setTypeData(List<String> typeData) {
this.typeData = typeData;
}
public String getProductId() {
return productId;
}

View File

@@ -7,6 +7,7 @@ import java.util.HashMap;
import java.util.List;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
@@ -59,6 +60,7 @@ public class OutStockoutServiceImpl implements IOutStockoutService
* @return 出库主单
*/
@Override
@DataScope(warehouseAlias = "bw")
public List<OutStockout> selectOutStockoutList(OutStockout outStockout)
{
return outStockoutMapper.selectOutStockoutList(outStockout);

View File

@@ -3,11 +3,14 @@ package com.ruoyi.pda.controller;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.container.domain.BasContainer;
import com.ruoyi.bas.warehouse.domain.BasWarehouse;
import com.ruoyi.bas.warehouse.service.IBasWarehouseService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
@@ -16,6 +19,8 @@ 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.out.outStockout.domain.OutStockout;
import com.ruoyi.out.outStockout.service.IOutStockoutService;
import com.ruoyi.pda.domain.TrayCodeMakeSure;
import com.ruoyi.pda.domain.TrayCodeMsg;
import com.ruoyi.pda.service.PdaService;
@@ -29,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -54,6 +60,10 @@ public class PdaController extends BaseController {
private IMydoJobService mydoJobService;
@Autowired
private IMydoJobDetailService mydoJobDetailService;
@Autowired
private IInStockinService inStockinService;
@Autowired
private IOutStockoutService outStockoutService;
/**
* 空托盘入库
@@ -63,6 +73,7 @@ public class PdaController extends BaseController {
*/
@RequestMapping("/emptyTrayIn")
@ResponseBody
@Log(title = "空托盘入库", businessType = BusinessType.INSERT)
public AjaxResult emptyTrayIn(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if (basWarehouse == null) {
@@ -127,6 +138,7 @@ public class PdaController extends BaseController {
*/
@RequestMapping("/emptyTrayOut")
@ResponseBody
@Log(title = "空托盘出库", businessType = BusinessType.INSERT)
public AjaxResult emptyTrayOut(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
if (basWarehouse == null) {
@@ -163,6 +175,18 @@ public class PdaController extends BaseController {
// public AjaxResult emptyBoxOut(@RequestBody TrayCodeMsg trayCodeMsg) {
// return pdaService.emptyBoxOut(trayCodeMsg);
// }
/**
* 查询平库入库单
*/
@PreAuthorize("@ss.hasPermi('pda:inoderList:list')")
@RequestMapping("/inorder/list")
@ResponseBody
public List<InStockin> inoderList(@RequestBody InStockin inStockin) {
inStockin.setTypeData(Arrays.asList("3"));
List<InStockin> inStockins = inStockinService.selectInStockinList(inStockin);
return inStockins;
}
/**
* 绑盘查询入库单详情
@@ -185,6 +209,7 @@ public class PdaController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('pda:bindTrayMsg:submit')")
@RequestMapping("/bindTrayMsg")
@Log(title = "手持机绑定物料", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult bindTrayMsg(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.bindTrayMsg(trayCodeMsg);
@@ -207,6 +232,7 @@ public class PdaController extends BaseController {
* 确认入库
*/
@RequestMapping("/addInJob")
@Log(title = "手持机确认入库", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult addInJob(@RequestBody TrayCodeMsg trayCodeMsg) {
BasWarehouse basWarehouse = basWarehouseService.selectBasWarehouseByWarehouseId(trayCodeMsg.getWarehouseId());
@@ -239,6 +265,7 @@ public class PdaController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('pda:out:outMakeSure')")
@PostMapping("/outMakeSure")
@Log(title = "手持机出库确认", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.outMakeSure(trayCodeMakeSure);
@@ -264,6 +291,7 @@ public class PdaController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('pda:check:checkMakeSure')")
@PostMapping("/checkMakeSure")
@Log(title = "手持机盘点出库确认", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult checkMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.checkMakeSure(trayCodeMakeSure);
@@ -288,7 +316,13 @@ public class PdaController extends BaseController {
mydoJob.setWarehouseId(basWarehouse.getWarehouseId());
mydoJob.setCargoSpaceId(trayCodeMsg.getTrayCode());
mydoJob.setInOut(trayCodeMsg.getInOut());
mydoJob.setStatus("1");
if("1".equals(trayCodeMsg.getInOut())){
mydoJob.setStatus("1");
}else{
mydoJob.setStatus("3");
}
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
//将mydoJob添加进mydoJobArrayList
mydoJobArrayList.addAll(mydoJobs);
@@ -331,5 +365,47 @@ public class PdaController extends BaseController {
return AjaxResult.success(mydoJobDetails);
}
/**
* 平库入库
*/
@RequestMapping("/pkIn")
@ResponseBody
public AjaxResult pkIn(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.pkIn(trayCodeMsg);
}
/**
* 查询平库出库单
*/
@PreAuthorize("@ss.hasPermi('pda:outoderList:list')")
@RequestMapping("/outorder/list")
@ResponseBody
public List<OutStockout> outoderList(@RequestBody OutStockout outStockout) {
outStockout.setTypeData(Arrays.asList("3"));
List<OutStockout> outStockouts = outStockoutService.selectOutStockoutList(outStockout);
return outStockouts;
}
/**
* 平库出库
*/
@RequestMapping("/pkout")
@ResponseBody
public AjaxResult pkout(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.pkout(trayCodeMsg);
}
/**
* 调用wcs接口调用agv
*/
@RequestMapping("/agvRequest")
@ResponseBody
public AjaxResult agvRequest(@RequestBody BasContainer basContainer) {
if(basContainer.getDetails().size()==0){
return AjaxResult.error("该料架无物料信息");
}
return pdaService.agvRequest(basContainer);
}
}

View File

@@ -20,5 +20,9 @@ public interface PdaMapper {
void checkMakeSure(HashMap<String, Object> map);
void pkIn(HashMap<String, Object> map);
void pkOut(HashMap<String, Object> map);
void outMakeSureException(HashMap<String, Object> map);
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.pda.service;
import com.ruoyi.bas.container.domain.BasContainer;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.pda.domain.TrayCodeMakeSure;
import com.ruoyi.pda.domain.TrayCodeMsg;
@@ -27,5 +28,11 @@ public interface PdaService {
AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure);
AjaxResult pkIn(TrayCodeMsg trayCodeMsg);
AjaxResult pkout(TrayCodeMsg trayCodeMsg);
AjaxResult outException(TrayCodeMakeSure trayCodeMakeSure);
AjaxResult agvRequest(BasContainer basContainer);
}

View File

@@ -5,8 +5,11 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.container.domain.BasContainer;
import com.ruoyi.bas.containerDetails.domain.BasContainerDetails;
import com.ruoyi.bas.containerDetails.service.IBasContainerDetailsService;
import com.ruoyi.bas.port.domain.BasProductPort;
import com.ruoyi.bas.port.mapper.BasProductPortMapper;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -70,6 +73,8 @@ public class PdaServiceImp implements PdaService {
@Autowired
private IOutStockoutDetailService outStockoutDetailService;
@Autowired
private BasProductPortMapper basProductPortMapper;
@Autowired
private IBasStockService basStockService;
/**
@@ -420,4 +425,64 @@ public class PdaServiceImp implements PdaService {
throw new RuntimeException(map.get("v_resultmsg").toString());
}
}
@Override
public AjaxResult pkIn(TrayCodeMsg trayCodeMsg) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
map.put("v_in_quantity", Integer.parseInt(trayCodeMsg.getInQuantity()));
pdaMapper.pkIn(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@Override
public AjaxResult pkout(TrayCodeMsg trayCodeMsg) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_stockout_detail_id", trayCodeMsg.getStockinDetailId());
pdaMapper.pkOut(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
return AjaxResult.success(map.get("v_resultmsg").toString());
} else {
return AjaxResult.warn(map.get("v_resultmsg").toString());
}
}
@Override
public AjaxResult agvRequest(BasContainer basContainer) {
//缓存站点
String endPoint = "456";
//判断details中的数量是否都为0
if (CollUtil.isNotEmpty(basContainer.getDetails())) {
for (BasContainerDetails detail : basContainer.getDetails()) {
//如果存在数量不为0的
if (detail.getQuantity() != 0) {
if(StrUtil.isEmpty(basContainer.getSpare1())){
return AjaxResult.warn("请选择退料仓库");
}
//去ctu库站点
BasProductPort basProductPort = new BasProductPort();
basProductPort.setWarehouseId(basContainer.getSpare1());
List<BasProductPort> basProductPorts = basProductPortMapper.selectBasProductPortList(basProductPort);
endPoint=basProductPorts.get(0).getId();
}
}
}
//todo 调用agv搬运接口
return null;
}
}

View File

@@ -98,6 +98,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
${params.warehouseDataScope}
</if>
<if test="typeData != null and typeData.size()>0">
and bw.warehouse_type in
<foreach item="item" index="index" collection="typeData" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>

View File

@@ -57,6 +57,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productId != null and productId != ''"> and d.product_id = #{productId}</if>
<if test="productName != null and productName != ''"> and bp.product_name like concat('%', #{productName}, '%')</if>
<if test="customerName != null and customerName != ''"> and bc.customer_name like concat('%', #{customerName}, '%')</if>
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
${params.warehouseDataScope}
</if>
<if test="typeData != null and typeData.size()>0">
and bw.warehouse_type in
<foreach item="item" index="index" collection="typeData" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>

View File

@@ -83,4 +83,21 @@
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
<select id="pkIn" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_pk_in(
#{v_stockin_detail_id,mode=IN,jdbcType=VARCHAR},
#{v_in_quantity,mode=IN,jdbcType=INTEGER},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
<select id="pkOut" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_pk_out(
#{v_stockout_detail_id,mode=IN,jdbcType=VARCHAR},
#{v_result,mode=OUT,jdbcType=INTEGER},
#{v_resultmsg,mode=OUT,jdbcType=VARCHAR}
)}
</select>
</mapper>

View File

@@ -44,7 +44,7 @@
<el-table v-loading="loading" :data="materialList">
<el-table-column :label="$t('addOutStockout.materialCode')" align="left" prop="productId" /><!--物资编号-->
<el-table-column :label="$t('addOutStockout.materialName')" align="left" prop="productName" /><!--物资名称-->
<el-table-column :label="$t('addOutStockout.batchNo')" align="left" prop="lotNo" /><!--批号-->
<!-- <el-table-column :label="$t('addOutStockout.batchNo')" align="left" prop="lotNo" />&lt;!&ndash;批号&ndash;&gt;-->
<el-table-column :label="$t('addOutStockout.quantity')" align="right" prop="quantity"><!--数量-->
<template slot-scope="scope">
<el-input-number v-model="scope.row.quantity" :min="1" size="mini" @change="handleQuantityChange(scope.row)" />
@@ -76,22 +76,8 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('addOutStockout.batchNo')" prop="lotNo"><!--批号-->
<el-input
v-model="queryParams.lotNo"
:placeholder="$t('addOutStockout.inputBatchNo')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('addOutStockout.warehouse')" prop="warehouseId"><!--仓库-->
<el-input
v-model="queryParams.warehouseId"
:placeholder="$t('addOutStockout.inputWarehouse')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{$t('addOutStockout.search')}}<!--搜索--></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{$t('addOutStockout.reset')}}<!--重置--></el-button>
@@ -102,7 +88,7 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="$t('addOutStockout.materialCode')" align="left" prop="productId" /><!--物资编码-->
<el-table-column :label="$t('addOutStockout.materialName')" align="left" prop="productName" /><!--物资名称-->
<el-table-column :label="$t('addOutStockout.batchNo')" align="left" prop="lotNo" /><!--批号-->
<!-- <el-table-column :label="$t('addOutStockout.batchNo')" align="left" prop="lotNo" />&lt;!&ndash;批号&ndash;&gt;-->
<el-table-column :label="$t('addOutStockout.quantity')" align="right" prop="quantity" /><!--数量-->
<el-table-column :label="$t('addOutStockout.warehouse')" align="left" prop="warehouseId" /><!--仓库-->
</el-table>
@@ -175,13 +161,21 @@ export default {
/** 获取仓库选项 */
getWarehouseOptions() {
listWarehouse().then(response => {
listWarehouse({
pageNum: 1,
pageSize: 100
}).then(response => {
this.warehouseOptions = response.rows;
});
},
/** 打开选择物资弹窗 */
handleSelectMaterials() {
if (!this.formData.warehouseId) {
this.$modal.msgError("请先选择仓库");
return;
}
this.materialDialog = true;
this.queryParams.warehouseId = this.formData.warehouseId;
this.getMaterialList();
},
/** 获取物资列表 */