pda盘点确认

This commit is contained in:
liuhanqing
2025-06-19 17:47:52 +08:00
parent b9fc02c01b
commit afb022d365
29 changed files with 1022 additions and 100 deletions

View File

@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
/**
* 库存信息对象 bas_cargo_space
*
*
* @author lsy
* @date 2025-05-20
*/
@@ -26,6 +26,7 @@ public class BasCargoSpace {
/** 仓库id(不允许为空) */
@Excel(name = "仓库id", readConverterExp = "不=允许为空")
private String warehouseId;
private String warehouseName;
/** 巷道id(允许为空) */
@Excel(name = "巷道id", readConverterExp = "允=许为空")

View File

@@ -0,0 +1,104 @@
package com.ruoyi.check.commit.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 盘点数据信息Controller
*
* @author ruoyi
* @date 2025-06-19
*/
@RestController
@RequestMapping("/check/commit")
public class CheckCommitRecordController extends BaseController
{
@Autowired
private ICheckCommitRecordService checkCommitRecordService;
/**
* 查询盘点数据信息列表
*/
@PreAuthorize("@ss.hasPermi('check:commit:list')")
@GetMapping("/list")
public TableDataInfo list(CheckCommitRecord checkCommitRecord)
{
startPage();
List<CheckCommitRecord> list = checkCommitRecordService.selectCheckCommitRecordList(checkCommitRecord);
return getDataTable(list);
}
/**
* 导出盘点数据信息列表
*/
@PreAuthorize("@ss.hasPermi('check:commit:export')")
@Log(title = "盘点数据信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CheckCommitRecord checkCommitRecord)
{
List<CheckCommitRecord> list = checkCommitRecordService.selectCheckCommitRecordList(checkCommitRecord);
ExcelUtil<CheckCommitRecord> util = new ExcelUtil<CheckCommitRecord>(CheckCommitRecord.class);
util.exportExcel(response, list, "盘点数据信息数据");
}
/**
* 获取盘点数据信息详细信息
*/
@PreAuthorize("@ss.hasPermi('check:commit:query')")
@GetMapping(value = "/{pdGuid}")
public AjaxResult getInfo(@PathVariable("pdGuid") Long pdGuid)
{
return success(checkCommitRecordService.selectCheckCommitRecordByPdGuid(pdGuid));
}
/**
* 新增盘点数据信息
*/
@PreAuthorize("@ss.hasPermi('check:commit:add')")
@Log(title = "盘点数据信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody CheckCommitRecord checkCommitRecord)
{
return toAjax(checkCommitRecordService.insertCheckCommitRecord(checkCommitRecord));
}
/**
* 修改盘点数据信息
*/
@PreAuthorize("@ss.hasPermi('check:commit:edit')")
@Log(title = "盘点数据信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody CheckCommitRecord checkCommitRecord)
{
return toAjax(checkCommitRecordService.updateCheckCommitRecord(checkCommitRecord));
}
/**
* 删除盘点数据信息
*/
@PreAuthorize("@ss.hasPermi('check:commit:remove')")
@Log(title = "盘点数据信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{pdGuids}")
public AjaxResult remove(@PathVariable Long[] pdGuids)
{
return toAjax(checkCommitRecordService.deleteCheckCommitRecordByPdGuids(pdGuids));
}
}

View File

@@ -0,0 +1,128 @@
package com.ruoyi.check.commit.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 盘点数据信息对象 check_commit_record
*
* @author ruoyi
* @date 2025-06-19
*/
public class CheckCommitRecord extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 盘点id */
@Excel(name = "盘点id")
private Long pdGuid;
/** 托盘码 */
@Excel(name = "托盘码")
private String trayCode;
/** 库存id */
@Excel(name = "库存id")
private String stockId;
/** 盘点数量 */
@Excel(name = "盘点数量")
private String quantity;
/** 备用1 */
@Excel(name = "备用1")
private String spare1;
/** 备用2 */
@Excel(name = "备用2")
private String spare2;
/** 备用3 */
@Excel(name = "备用3")
private String spare3;
public void setPdGuid(Long pdGuid)
{
this.pdGuid = pdGuid;
}
public Long getPdGuid()
{
return pdGuid;
}
public void setTrayCode(String trayCode)
{
this.trayCode = trayCode;
}
public String getTrayCode()
{
return trayCode;
}
public void setStockId(String stockId)
{
this.stockId = stockId;
}
public String getStockId()
{
return stockId;
}
public void setQuantity(String quantity)
{
this.quantity = quantity;
}
public String getQuantity()
{
return quantity;
}
public void setSpare1(String spare1)
{
this.spare1 = spare1;
}
public String getSpare1()
{
return spare1;
}
public void setSpare2(String spare2)
{
this.spare2 = spare2;
}
public String getSpare2()
{
return spare2;
}
public void setSpare3(String spare3)
{
this.spare3 = spare3;
}
public String getSpare3()
{
return spare3;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("pdGuid", getPdGuid())
.append("trayCode", getTrayCode())
.append("stockId", getStockId())
.append("quantity", getQuantity())
.append("spare1", getSpare1())
.append("spare2", getSpare2())
.append("spare3", getSpare3())
.toString();
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.check.commit.mapper;
import java.util.List;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
/**
* 盘点数据信息Mapper接口
*
* @author ruoyi
* @date 2025-06-19
*/
public interface CheckCommitRecordMapper
{
/**
* 查询盘点数据信息
*
* @param pdGuid 盘点数据信息主键
* @return 盘点数据信息
*/
public CheckCommitRecord selectCheckCommitRecordByPdGuid(Long pdGuid);
/**
* 查询盘点数据信息列表
*
* @param checkCommitRecord 盘点数据信息
* @return 盘点数据信息集合
*/
public List<CheckCommitRecord> selectCheckCommitRecordList(CheckCommitRecord checkCommitRecord);
/**
* 新增盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
public int insertCheckCommitRecord(CheckCommitRecord checkCommitRecord);
/**
* 修改盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
public int updateCheckCommitRecord(CheckCommitRecord checkCommitRecord);
/**
* 删除盘点数据信息
*
* @param pdGuid 盘点数据信息主键
* @return 结果
*/
public int deleteCheckCommitRecordByPdGuid(Long pdGuid);
/**
* 批量删除盘点数据信息
*
* @param pdGuids 需要删除的数据主键集合
* @return 结果
*/
public int deleteCheckCommitRecordByPdGuids(Long[] pdGuids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.check.commit.service;
import java.util.List;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
/**
* 盘点数据信息Service接口
*
* @author ruoyi
* @date 2025-06-19
*/
public interface ICheckCommitRecordService
{
/**
* 查询盘点数据信息
*
* @param pdGuid 盘点数据信息主键
* @return 盘点数据信息
*/
public CheckCommitRecord selectCheckCommitRecordByPdGuid(Long pdGuid);
/**
* 查询盘点数据信息列表
*
* @param checkCommitRecord 盘点数据信息
* @return 盘点数据信息集合
*/
public List<CheckCommitRecord> selectCheckCommitRecordList(CheckCommitRecord checkCommitRecord);
/**
* 新增盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
public int insertCheckCommitRecord(CheckCommitRecord checkCommitRecord);
/**
* 修改盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
public int updateCheckCommitRecord(CheckCommitRecord checkCommitRecord);
/**
* 批量删除盘点数据信息
*
* @param pdGuids 需要删除的盘点数据信息主键集合
* @return 结果
*/
public int deleteCheckCommitRecordByPdGuids(Long[] pdGuids);
/**
* 删除盘点数据信息信息
*
* @param pdGuid 盘点数据信息主键
* @return 结果
*/
public int deleteCheckCommitRecordByPdGuid(Long pdGuid);
}

View File

@@ -0,0 +1,93 @@
package com.ruoyi.check.commit.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.check.commit.mapper.CheckCommitRecordMapper;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
/**
* 盘点数据信息Service业务层处理
*
* @author ruoyi
* @date 2025-06-19
*/
@Service
public class CheckCommitRecordServiceImpl implements ICheckCommitRecordService
{
@Autowired
private CheckCommitRecordMapper checkCommitRecordMapper;
/**
* 查询盘点数据信息
*
* @param pdGuid 盘点数据信息主键
* @return 盘点数据信息
*/
@Override
public CheckCommitRecord selectCheckCommitRecordByPdGuid(Long pdGuid)
{
return checkCommitRecordMapper.selectCheckCommitRecordByPdGuid(pdGuid);
}
/**
* 查询盘点数据信息列表
*
* @param checkCommitRecord 盘点数据信息
* @return 盘点数据信息
*/
@Override
public List<CheckCommitRecord> selectCheckCommitRecordList(CheckCommitRecord checkCommitRecord)
{
return checkCommitRecordMapper.selectCheckCommitRecordList(checkCommitRecord);
}
/**
* 新增盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
@Override
public int insertCheckCommitRecord(CheckCommitRecord checkCommitRecord)
{
return checkCommitRecordMapper.insertCheckCommitRecord(checkCommitRecord);
}
/**
* 修改盘点数据信息
*
* @param checkCommitRecord 盘点数据信息
* @return 结果
*/
@Override
public int updateCheckCommitRecord(CheckCommitRecord checkCommitRecord)
{
return checkCommitRecordMapper.updateCheckCommitRecord(checkCommitRecord);
}
/**
* 批量删除盘点数据信息
*
* @param pdGuids 需要删除的盘点数据信息主键
* @return 结果
*/
@Override
public int deleteCheckCommitRecordByPdGuids(Long[] pdGuids)
{
return checkCommitRecordMapper.deleteCheckCommitRecordByPdGuids(pdGuids);
}
/**
* 删除盘点数据信息信息
*
* @param pdGuid 盘点数据信息主键
* @return 结果
*/
@Override
public int deleteCheckCommitRecordByPdGuid(Long pdGuid)
{
return checkCommitRecordMapper.deleteCheckCommitRecordByPdGuid(pdGuid);
}
}

View File

@@ -123,4 +123,17 @@ public class CheckStockinController extends BaseController
String stockOutId = checkStockinService.saveBill(checkStockVo);
return AjaxResult.success(stockOutId);
}
/**
* 盘点自动分配
* @param checkStockin
* @return
*/
@Log(title = "盘点自动分配", businessType = BusinessType.OTHER)
@PostMapping("/autoAllocation")
@PreAuthorize("@ss.hasPermi('check:stockCheck:autoAllocation')")
@ResponseBody
public AjaxResult autoAllocation(@RequestBody CheckStockin checkStockin) {
return checkStockinService.autoAllocation(checkStockin);
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.check.stockcheck.mapper;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.check.stockcheck.domain.CheckStockin;
@@ -60,4 +61,7 @@ public interface CheckStockinMapper
public int deleteCheckStockinByStockGuids(String[] stockGuids);
void insertCheckStockinHistory(CheckStockin checkStockin);
void autoAllot(HashMap<String, String> map);
}

View File

@@ -64,4 +64,11 @@ public interface ICheckStockinService
public int deleteCheckStockinByStockGuid(String stockGuid);
String saveBill(CheckStockVo outStockoutVo);
/**
* 盘点自动分配
* @param checkStockin
* @return
*/
AjaxResult autoAllocation(CheckStockin checkStockin);
}

View File

@@ -3,7 +3,9 @@ package com.ruoyi.check.stockcheck.service.impl;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
@@ -22,6 +24,8 @@ import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.out.outStockout.domain.OutStockout;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import com.ruoyi.stock.stock.domain.BasStock;
import com.ruoyi.stock.stock.service.IBasStockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
@@ -47,6 +51,8 @@ public class CheckStockinServiceImpl implements ICheckStockinService
private ICheckStockinDetailService checkStockinDetailService;
@Autowired
private IBasProductService productService;
@Autowired
private IBasStockService basStockService;
/**
* 查询盘库单据主信息
@@ -165,6 +171,7 @@ public class CheckStockinServiceImpl implements ICheckStockinService
@Transactional(rollbackFor = Exception.class)
public String saveBill(CheckStockVo checkStockVo) {
CheckStockin checkStockin = checkStockVo.getCheckStockin();
List<CheckStockinDetail> detailList = checkStockVo.getDetailList();
String stockCheckId = basJobIdService.getJobId("PDD");
checkStockin.setStockCheckId(stockCheckId);
@@ -175,18 +182,53 @@ public class CheckStockinServiceImpl implements ICheckStockinService
checkStockin.setStatus("1");
checkStockin.setStockSource("0");
checkStockin.setCheckType(checkStockin.getCheckType());
for (int i = 0; i < detailList.size(); i++) {
CheckStockinDetail checkStockinDetail = detailList.get(i);
checkStockinDetail.setStockCheckDetailId(stockCheckId + "-" + (i + 1));
checkStockinDetail.setStockCheckId(stockCheckId);
BasProduct basProduct = productService.selectBasProductByProductId(checkStockinDetail.getProductId());
checkStockinDetail.setProductGuid(basProduct.getProductGuid());
checkStockinDetail.setStockCheckGuid(checkStockin.getStockGuid());
checkStockinDetail.setScanNum("0");
checkStockinDetail.setAssignNum("0");
checkStockinDetailService.insertCheckStockinDetail(checkStockinDetail);
if ("1".equals(checkStockin.getCheckType())){
//物料盘点
for (int i = 0; i < detailList.size(); i++) {
CheckStockinDetail checkStockinDetail = detailList.get(i);
checkStockinDetail.setStockCheckDetailId(stockCheckId + "-" + (i + 1));
checkStockinDetail.setStockCheckId(stockCheckId);
BasProduct basProduct = productService.selectBasProductByProductId(checkStockinDetail.getProductId());
checkStockinDetail.setProductGuid(basProduct.getProductGuid());
checkStockinDetail.setStockCheckGuid(checkStockin.getStockGuid());
checkStockinDetail.setScanNum("0");
checkStockinDetail.setAssignNum("0");
checkStockinDetailService.insertCheckStockinDetail(checkStockinDetail);
}
}else if ("2".equals(checkStockin.getCheckType())){
//货位盘点
for (int i = 0; i < detailList.size(); i++) {
BasStock param = new BasStock();
param.setCargoSpaceId(detailList.get(i).getSpare1());
List<BasStock> basStocks = basStockService.selectBasStockList(param);
Integer quantity = 0;
for (BasStock basStock : basStocks) {
quantity += Convert.toInt(basStock.getQuantity());
}
CheckStockinDetail checkStockinDetail = detailList.get(i);
checkStockinDetail.setStockCheckDetailId(stockCheckId + "-" + (i + 1));
checkStockinDetail.setStockCheckId(stockCheckId);
checkStockinDetail.setStockCheckGuid(checkStockin.getStockGuid());
checkStockinDetail.setQuantity(quantity.toString());
checkStockinDetail.setScanNum("0");
checkStockinDetail.setAssignNum("0");
checkStockinDetailService.insertCheckStockinDetail(checkStockinDetail);
}
}
checkStockinMapper.insertCheckStockin(checkStockin);
return stockCheckId;
}
@Override
public AjaxResult autoAllocation(CheckStockin checkStockin) {
HashMap<String, String> map = new HashMap<>();
map.put("v_stock_check_id", checkStockin.getStockCheckId());
checkStockinMapper.autoAllot(map);
if ("10".equals(map.get("v_result"))){
return AjaxResult.success("自动分配成功");
}else {
return AjaxResult.warn(map.get("v_resultString"));
}
}
}

View File

@@ -132,9 +132,18 @@ public class CheckStockinDetail extends BaseEntity
private String spare6;
private String status;
private String cargoSpaceName;
private ExtraField extraField;
public String getCargoSpaceName() {
return cargoSpaceName;
}
public void setCargoSpaceName(String cargoSpaceName) {
this.cargoSpaceName = cargoSpaceName;
}
public ExtraField getExtraField() {
return extraField;
}

View File

@@ -182,5 +182,16 @@ public class PdaController extends BaseController {
public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.outMakeSure(trayCodeMakeSure);
}
/**
* 出库确认
* @param trayCodeMakeSure 托盘信息
* @return
*/
@PostMapping("/checkMakeSure")
@ResponseBody
public AjaxResult checkMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.checkMakeSure(trayCodeMakeSure);
}
}

View File

@@ -17,4 +17,6 @@ public interface PdaMapper {
void addInJob(HashMap<String, Object> map);
void outMakeSure(HashMap<String, Object> map);
void checkMakeSure(HashMap<String, Object> map);
}

View File

@@ -24,4 +24,6 @@ public interface PdaService {
AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure);
AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure);
}

View File

@@ -7,6 +7,8 @@ import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
import com.ruoyi.bas.cargoSpace.service.IBasCargoSpaceService;
import com.ruoyi.bas.containerDetails.domain.BasContainerDetails;
import com.ruoyi.bas.containerDetails.service.IBasContainerDetailsService;
import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
@@ -52,6 +54,8 @@ public class PdaServiceImp implements PdaService{
ITrayMsgService trayMsgService;
@Autowired
private IBasContainerDetailsService basContainerDetailsService;
@Autowired
private ICheckCommitRecordService checkCommitRecordService;
/**
* 空托盘入库
@@ -244,4 +248,28 @@ public class PdaServiceImp implements PdaService{
return AjaxResult.warn("拣选完成");
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult checkMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
List<MydoJobDetail> mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList();
if(CollUtil.isNotEmpty(mydoJobDetailList)){
for (MydoJobDetail mydoJobDetail : mydoJobDetailList) {
CheckCommitRecord checkCommitRecord = new CheckCommitRecord();
checkCommitRecord.setQuantity(mydoJobDetail.getInQuantity());
checkCommitRecord.setTrayCode(trayCodeMakeSure.getTrayCode());
checkCommitRecord.setStockId(mydoJobDetail.getStockId());
checkCommitRecordService.insertCheckCommitRecord(checkCommitRecord);
}
}
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
pdaMapper.checkMakeSure(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());
}
}
}

View File

@@ -114,10 +114,22 @@ public class BasStock extends BaseEntity
/** 备用字段6 */
@Excel(name = "备用字段6")
private String spare6;
//额外字段
private ExtraField extraField;
//物料名称
private String productName;
//货位是否锁定
private String cargoSpaceStatus;
//货位库存状态
private String cargoSpaceStockStatus;
public String getCargoSpaceStockStatus() {
return cargoSpaceStockStatus;
}
public void setCargoSpaceStockStatus(String cargoSpaceStockStatus) {
this.cargoSpaceStockStatus = cargoSpaceStockStatus;
}
public String getCargoSpaceName() {
return cargoSpaceName;