入库部分和接口

This commit is contained in:
张怡蓉
2026-01-27 14:17:05 +08:00
parent 4aaf5b9a1e
commit 407b1f08b5
34 changed files with 2238 additions and 221 deletions

View File

@@ -36,12 +36,22 @@ public class ToErpApiController {
/**
* 回传其他出入库单
* 回传其他入库单
*/
// @Scheduled(fixedDelay = 1500)
@RequestMapping("/callbackDeliveryNotice")
@RequestMapping("/callbackInDeliveryNotice")
@ResponseBody
public AjaxResult callbackDeliveryNotice(String billNo) {
return toErpService.callbackDeliveryNotice(billNo);
public void callbackInDeliveryNotice() {
toErpService.callbackInDeliveryNotice();
}
/**
* 回传其他出库单
*/
@RequestMapping("/callbackOutDeliveryNotice")
@ResponseBody
public void callbackDeliveryOutNotice() {
toErpService.callbackoutDeliveryNotice();
}
}

View File

@@ -17,6 +17,8 @@ public class DeliveryNoticeItemVo {
/** 行号 */
private String lineNo;
/** 对应通知行号 */
private String notelineNo;
/** 单据号 */
private String billNo;
/** 存货编码 */

View File

@@ -25,6 +25,8 @@ public class DeliveryNoticeVo {
private String isProjectOut;
/** 单据号 */
private String billNo;
/** 原通知单号 */
private String noteBillNo;
/** 单据时间,格式:yyyy-MM-dd HH:mm:ss */
private String billDate;
/** 审核时间,格式:yyyy-MM-dd HH:mm:ss */

View File

@@ -12,7 +12,9 @@ public interface IToErpService {
AjaxResult receiveDeliveryNotice(DeliveryNoticeVo deliveryNoticeVo);
AjaxResult callbackDeliveryNotice(String billNo);
void callbackInDeliveryNotice();
void callbackoutDeliveryNotice();
AjaxResult createWorkshopInboundOrder(BasProduct basProduct);
}

View File

@@ -12,6 +12,8 @@ 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.stockinback.service.IInStockinBackService;
import com.ruoyi.in.stockindeatilback.service.IInStockinDetailBackService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.in.stockinfinish.domain.InStockinFinish;
@@ -71,6 +73,10 @@ public class ToErpServiceImpl implements IToErpService {
@Autowired
private IInStockinFinishService inStockinFinishService;
@Autowired
private IInStockinBackService inStockinBackService;
@Autowired
private IInStockinDetailBackService inStockinDetailBackService;
private static final String TO_ERP_URL = "http://192.168.1.100:8080/api/";
@@ -293,24 +299,15 @@ public class ToErpServiceImpl implements IToErpService {
@Override
public AjaxResult callbackDeliveryNotice(String billNo) {
public void callbackInDeliveryNotice() {
InStockin inStockin = null;
inStockin = inStockinService.selectInStockinByStockinId(billNo);
if(inStockin==null) {
InStockinFinish inStockinFinish = inStockinFinishService.selectInStockinFinishByStockinId(billNo);
// inStockin = inStockinService.selectInStockinByStockinId(billNo);
if (inStockinFinish == null) {
return AjaxResult.error("单据不存在");
}else{
//将inStockinFinish对象中的所有值赋给inStockin
inStockin = new InStockin();
BeanUtils.copyProperties(inStockinFinish, inStockin);
}
}
String billNo="";
DeliveryNoticeVo deliveryNoticeVo = new DeliveryNoticeVo();
deliveryNoticeVo.setBillNo(inStockin.getStockinId());
deliveryNoticeVo.setNoteBillNo(inStockin.getStockinId());
deliveryNoticeVo.setBillType(inStockin.getInType());
deliveryNoticeVo.setBillDate(inStockin.getCreateDate());
deliveryNoticeVo.setCreateMan(inStockin.getCreateManId());
@@ -333,6 +330,7 @@ public class ToErpServiceImpl implements IToErpService {
for (InStockinDetail detail : inStockinDetails) {
DeliveryNoticeItemVo item = new DeliveryNoticeItemVo();
item.setLineNo(detail.getStockinDetailId());
item.setNotelineNo(detail.getStockinDetailId());
item.setBillNo(detail.getStockinId());
item.setInventoryCode(detail.getProductId());
item.setInventoryName(detail.getProductName());
@@ -349,7 +347,13 @@ public class ToErpServiceImpl implements IToErpService {
}
deliveryNoticeVo.setDetailList(detailList);
return AjaxResult.success(deliveryNoticeVo);
// return AjaxResult.success(deliveryNoticeVo);
}
@Override
public void callbackoutDeliveryNotice() {
}
@Override

View File

@@ -349,7 +349,7 @@ public class ToWmsServiceImpl implements IToWmsService {
if (StrUtil.isEmpty(wmsJobRequest.getTaskNo())) {
return AjaxResult.error("任务号不能为空");
}
if (StrUtil.isEmpty(wmsJobRequest.getJobId())) {
if (StrUtil.isEmpty(wmsJobRequest.getJobId())) {
return AjaxResult.error("任务Id不能为空");
}
//入库

View File

@@ -14,8 +14,14 @@ import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.domain.vo.InstockInVo;
import com.ruoyi.in.stockin.mapper.InStockinMapper;
import com.ruoyi.in.stockin.service.IInStockinService;
import com.ruoyi.in.stockinback.domain.InStockinBack;
import com.ruoyi.in.stockinback.mapper.InStockinBackMapper;
import com.ruoyi.in.stockinback.service.IInStockinBackService;
import com.ruoyi.in.stockindeatilback.mapper.InStockinDetailBackMapper;
import com.ruoyi.in.stockindeatilback.service.IInStockinDetailBackService;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -37,6 +43,10 @@ public class InStockinServiceImpl implements IInStockinService
private IInStockinDetailService iInStockinDetailService;
@Autowired
private IBasJobIdService iBasJobIdService;
@Autowired
private InStockinBackMapper inStockinBackMapper;
@Autowired
private InStockinDetailBackMapper inStockinDetailBackMapper;
/**
* 查询入库单据
@@ -176,7 +186,9 @@ public class InStockinServiceImpl implements IInStockinService
}
inStockin.setFinishDate(DateUtil.formatDateTime(DateUtil.date()));
inStockinMapper.updateInStockin(inStockin);
insertInStockinBack(inStockin);
insertInStockinHistory(inStockin);
}
return AjaxResult.success();
}
@@ -196,6 +208,13 @@ public class InStockinServiceImpl implements IInStockinService
iInStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid());
}
private void insertInStockinBack(InStockin inStockin){
inStockinBackMapper.insertInStockinBackById(inStockin);
inStockinDetailBackMapper.insertInStockinDetailBackById(inStockin);
}
/**
* 批量删除入库单据
*

View File

@@ -0,0 +1,104 @@
package com.ruoyi.in.stockinback.controller;
import java.util.List;
import jakarta.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.in.stockinback.domain.InStockinBack;
import com.ruoyi.in.stockinback.service.IInStockinBackService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库单据主信息Controller
*
* @author ruoyi
* @date 2026-01-27
*/
@RestController
@RequestMapping("/in/stockinback")
public class InStockinBackController extends BaseController
{
@Autowired
private IInStockinBackService inStockinBackService;
/**
* 查询入库单据主信息列表
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:list')")
@GetMapping("/list")
public TableDataInfo list(InStockinBack inStockinBack)
{
startPage();
List<InStockinBack> list = inStockinBackService.selectInStockinBackList(inStockinBack);
return getDataTable(list);
}
/**
* 导出入库单据主信息列表
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:export')")
@Log(title = "入库单据主信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, InStockinBack inStockinBack)
{
List<InStockinBack> list = inStockinBackService.selectInStockinBackList(inStockinBack);
ExcelUtil<InStockinBack> util = new ExcelUtil<InStockinBack>(InStockinBack.class);
util.exportExcel(response, list, "入库单据主信息数据");
}
/**
* 获取入库单据主信息详细信息
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:query')")
@GetMapping(value = "/{stockinGuid}")
public AjaxResult getInfo(@PathVariable("stockinGuid") String stockinGuid)
{
return success(inStockinBackService.selectInStockinBackByStockinGuid(stockinGuid));
}
/**
* 新增入库单据主信息
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:add')")
@Log(title = "入库单据主信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody InStockinBack inStockinBack)
{
return toAjax(inStockinBackService.insertInStockinBack(inStockinBack));
}
/**
* 修改入库单据主信息
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:edit')")
@Log(title = "入库单据主信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody InStockinBack inStockinBack)
{
return toAjax(inStockinBackService.updateInStockinBack(inStockinBack));
}
/**
* 删除入库单据主信息
*/
@PreAuthorize("@ss.hasPermi('in:stockinback:remove')")
@Log(title = "入库单据主信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinGuids}")
public AjaxResult remove(@PathVariable String[] stockinGuids)
{
return toAjax(inStockinBackService.deleteInStockinBackByStockinGuids(stockinGuids));
}
}

View File

@@ -0,0 +1,307 @@
package com.ruoyi.in.stockinback.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;
/**
* 入库单据主信息对象 in_stockin_back
*
* @author ruoyi
* @date 2026-01-27
*/
public class InStockinBack extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** GUID */
private String stockinGuid;
/** 入库订单ID */
@Excel(name = "入库订单ID")
private String stockinId;
/** 入库类型546 */
@Excel(name = "入库类型546")
private String inType;
/** 单据时间546 */
@Excel(name = "单据时间546")
private String createDate;
/** 制单人546 */
@Excel(name = "制单人546")
private String createManId;
/** 单据状态 */
@Excel(name = "单据状态")
private String status;
/** 仓库ID546 */
@Excel(name = "仓库ID546")
private String warehouseId;
/** 备注546 */
@Excel(name = "备注546")
private String spare5;
/** 审核人546 */
@Excel(name = "审核人546")
private String spare4;
/** 审核时间546 */
@Excel(name = "审核时间546")
private String spare3;
/** 完成日期 */
@Excel(name = " 完成日期")
private String finishDate;
/** 销售订单号546 */
@Excel(name = "销售订单号546")
private String spare2;
/** 合同号546 */
@Excel(name = "合同号546")
private String spare1;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String erpBill;
/** 单据来源 */
@Excel(name = "单据来源")
private String stockSource;
/** 项目号546 */
@Excel(name = "项目号546")
private String departmentNo;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customerNo;
/** 供应商名称546 */
@Excel(name = "供应商名称546")
private String classNo;
/** 供应商编码546 */
@Excel(name = "供应商编码546")
private String supplierNo;
public void setStockinGuid(String stockinGuid)
{
this.stockinGuid = stockinGuid;
}
public String getStockinGuid()
{
return stockinGuid;
}
public void setStockinId(String stockinId)
{
this.stockinId = stockinId;
}
public String getStockinId()
{
return stockinId;
}
public void setInType(String inType)
{
this.inType = inType;
}
public String getInType()
{
return inType;
}
public void setCreateDate(String createDate)
{
this.createDate = createDate;
}
public String getCreateDate()
{
return createDate;
}
public void setCreateManId(String createManId)
{
this.createManId = createManId;
}
public String getCreateManId()
{
return createManId;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setWarehouseId(String warehouseId)
{
this.warehouseId = warehouseId;
}
public String getWarehouseId()
{
return warehouseId;
}
public void setSpare5(String spare5)
{
this.spare5 = spare5;
}
public String getSpare5()
{
return spare5;
}
public void setSpare4(String spare4)
{
this.spare4 = spare4;
}
public String getSpare4()
{
return spare4;
}
public void setSpare3(String spare3)
{
this.spare3 = spare3;
}
public String getSpare3()
{
return spare3;
}
public void setFinishDate(String finishDate)
{
this.finishDate = finishDate;
}
public String getFinishDate()
{
return finishDate;
}
public void setSpare2(String spare2)
{
this.spare2 = spare2;
}
public String getSpare2()
{
return spare2;
}
public void setSpare1(String spare1)
{
this.spare1 = spare1;
}
public String getSpare1()
{
return spare1;
}
public void setErpBill(String erpBill)
{
this.erpBill = erpBill;
}
public String getErpBill()
{
return erpBill;
}
public void setStockSource(String stockSource)
{
this.stockSource = stockSource;
}
public String getStockSource()
{
return stockSource;
}
public void setDepartmentNo(String departmentNo)
{
this.departmentNo = departmentNo;
}
public String getDepartmentNo()
{
return departmentNo;
}
public void setCustomerNo(String customerNo)
{
this.customerNo = customerNo;
}
public String getCustomerNo()
{
return customerNo;
}
public void setClassNo(String classNo)
{
this.classNo = classNo;
}
public String getClassNo()
{
return classNo;
}
public void setSupplierNo(String supplierNo)
{
this.supplierNo = supplierNo;
}
public String getSupplierNo()
{
return supplierNo;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("stockinGuid", getStockinGuid())
.append("stockinId", getStockinId())
.append("inType", getInType())
.append("createDate", getCreateDate())
.append("createManId", getCreateManId())
.append("status", getStatus())
.append("warehouseId", getWarehouseId())
.append("spare5", getSpare5())
.append("spare4", getSpare4())
.append("spare3", getSpare3())
.append("finishDate", getFinishDate())
.append("spare2", getSpare2())
.append("spare1", getSpare1())
.append("erpBill", getErpBill())
.append("stockSource", getStockSource())
.append("departmentNo", getDepartmentNo())
.append("customerNo", getCustomerNo())
.append("classNo", getClassNo())
.append("supplierNo", getSupplierNo())
.toString();
}
}

View File

@@ -0,0 +1,65 @@
package com.ruoyi.in.stockinback.mapper;
import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockinback.domain.InStockinBack;
/**
* 入库单据主信息Mapper接口
*
* @author ruoyi
* @date 2026-01-27
*/
public interface InStockinBackMapper
{
/**
* 查询入库单据主信息
*
* @param stockinGuid 入库单据主信息主键
* @return 入库单据主信息
*/
public InStockinBack selectInStockinBackByStockinGuid(String stockinGuid);
/**
* 查询入库单据主信息列表
*
* @param inStockinBack 入库单据主信息
* @return 入库单据主信息集合
*/
public List<InStockinBack> selectInStockinBackList(InStockinBack inStockinBack);
/**
* 新增入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
public int insertInStockinBack(InStockinBack inStockinBack);
public int insertInStockinBackById(InStockin inStockin);
/**
* 修改入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
public int updateInStockinBack(InStockinBack inStockinBack);
/**
* 删除入库单据主信息
*
* @param stockinGuid 入库单据主信息主键
* @return 结果
*/
public int deleteInStockinBackByStockinGuid(String stockinGuid);
/**
* 批量删除入库单据主信息
*
* @param stockinGuids 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinBackByStockinGuids(String[] stockinGuids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.in.stockinback.service;
import java.util.List;
import com.ruoyi.in.stockinback.domain.InStockinBack;
/**
* 入库单据主信息Service接口
*
* @author ruoyi
* @date 2026-01-27
*/
public interface IInStockinBackService
{
/**
* 查询入库单据主信息
*
* @param stockinGuid 入库单据主信息主键
* @return 入库单据主信息
*/
public InStockinBack selectInStockinBackByStockinGuid(String stockinGuid);
/**
* 查询入库单据主信息列表
*
* @param inStockinBack 入库单据主信息
* @return 入库单据主信息集合
*/
public List<InStockinBack> selectInStockinBackList(InStockinBack inStockinBack);
/**
* 新增入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
public int insertInStockinBack(InStockinBack inStockinBack);
/**
* 修改入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
public int updateInStockinBack(InStockinBack inStockinBack);
/**
* 批量删除入库单据主信息
*
* @param stockinGuids 需要删除的入库单据主信息主键集合
* @return 结果
*/
public int deleteInStockinBackByStockinGuids(String[] stockinGuids);
/**
* 删除入库单据主信息信息
*
* @param stockinGuid 入库单据主信息主键
* @return 结果
*/
public int deleteInStockinBackByStockinGuid(String stockinGuid);
}

View File

@@ -0,0 +1,93 @@
package com.ruoyi.in.stockinback.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.in.stockinback.mapper.InStockinBackMapper;
import com.ruoyi.in.stockinback.domain.InStockinBack;
import com.ruoyi.in.stockinback.service.IInStockinBackService;
/**
* 入库单据主信息Service业务层处理
*
* @author ruoyi
* @date 2026-01-27
*/
@Service
public class InStockinBackServiceImpl implements IInStockinBackService
{
@Autowired
private InStockinBackMapper inStockinBackMapper;
/**
* 查询入库单据主信息
*
* @param stockinGuid 入库单据主信息主键
* @return 入库单据主信息
*/
@Override
public InStockinBack selectInStockinBackByStockinGuid(String stockinGuid)
{
return inStockinBackMapper.selectInStockinBackByStockinGuid(stockinGuid);
}
/**
* 查询入库单据主信息列表
*
* @param inStockinBack 入库单据主信息
* @return 入库单据主信息
*/
@Override
public List<InStockinBack> selectInStockinBackList(InStockinBack inStockinBack)
{
return inStockinBackMapper.selectInStockinBackList(inStockinBack);
}
/**
* 新增入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
@Override
public int insertInStockinBack(InStockinBack inStockinBack)
{
return inStockinBackMapper.insertInStockinBack(inStockinBack);
}
/**
* 修改入库单据主信息
*
* @param inStockinBack 入库单据主信息
* @return 结果
*/
@Override
public int updateInStockinBack(InStockinBack inStockinBack)
{
return inStockinBackMapper.updateInStockinBack(inStockinBack);
}
/**
* 批量删除入库单据主信息
*
* @param stockinGuids 需要删除的入库单据主信息主键
* @return 结果
*/
@Override
public int deleteInStockinBackByStockinGuids(String[] stockinGuids)
{
return inStockinBackMapper.deleteInStockinBackByStockinGuids(stockinGuids);
}
/**
* 删除入库单据主信息信息
*
* @param stockinGuid 入库单据主信息主键
* @return 结果
*/
@Override
public int deleteInStockinBackByStockinGuid(String stockinGuid)
{
return inStockinBackMapper.deleteInStockinBackByStockinGuid(stockinGuid);
}
}

View File

@@ -0,0 +1,104 @@
package com.ruoyi.in.stockindeatilback.controller;
import java.util.List;
import jakarta.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.in.stockindeatilback.domain.InStockinDetailBack;
import com.ruoyi.in.stockindeatilback.service.IInStockinDetailBackService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库单据子信息Controller
*
* @author ruoyi
* @date 2026-01-27
*/
@RestController
@RequestMapping("/in/stockindeatilback")
public class InStockinDetailBackController extends BaseController
{
@Autowired
private IInStockinDetailBackService inStockinDetailBackService;
/**
* 查询入库单据子信息列表
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:list')")
@GetMapping("/list")
public TableDataInfo list(InStockinDetailBack inStockinDetailBack)
{
startPage();
List<InStockinDetailBack> list = inStockinDetailBackService.selectInStockinDetailBackList(inStockinDetailBack);
return getDataTable(list);
}
/**
* 导出入库单据子信息列表
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:export')")
@Log(title = "入库单据子信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, InStockinDetailBack inStockinDetailBack)
{
List<InStockinDetailBack> list = inStockinDetailBackService.selectInStockinDetailBackList(inStockinDetailBack);
ExcelUtil<InStockinDetailBack> util = new ExcelUtil<InStockinDetailBack>(InStockinDetailBack.class);
util.exportExcel(response, list, "入库单据子信息数据");
}
/**
* 获取入库单据子信息详细信息
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:query')")
@GetMapping(value = "/{stockinDetailId}")
public AjaxResult getInfo(@PathVariable("stockinDetailId") String stockinDetailId)
{
return success(inStockinDetailBackService.selectInStockinDetailBackByStockinDetailId(stockinDetailId));
}
/**
* 新增入库单据子信息
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:add')")
@Log(title = "入库单据子信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody InStockinDetailBack inStockinDetailBack)
{
return toAjax(inStockinDetailBackService.insertInStockinDetailBack(inStockinDetailBack));
}
/**
* 修改入库单据子信息
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:edit')")
@Log(title = "入库单据子信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody InStockinDetailBack inStockinDetailBack)
{
return toAjax(inStockinDetailBackService.updateInStockinDetailBack(inStockinDetailBack));
}
/**
* 删除入库单据子信息
*/
@PreAuthorize("@ss.hasPermi('in:stockindeatilback:remove')")
@Log(title = "入库单据子信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{stockinDetailIds}")
public AjaxResult remove(@PathVariable String[] stockinDetailIds)
{
return toAjax(inStockinDetailBackService.deleteInStockinDetailBackByStockinDetailIds(stockinDetailIds));
}
}

View File

@@ -0,0 +1,518 @@
package com.ruoyi.in.stockindeatilback.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;
/**
* 入库单据子信息对象 in_stockin_detail_back
*
* @author ruoyi
* @date 2026-01-27
*/
public class InStockinDetailBack extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 子单ID */
private String stockinDetailId;
/** 主单GUID */
@Excel(name = "主单GUID")
private String stockinGuid;
/** 主单ID */
@Excel(name = "主单ID")
private String stockinId;
/** 批次号546 */
@Excel(name = "批次号546")
private String lotNo;
/** 物料ID */
@Excel(name = "物料ID")
private String productGuid;
/** 物料编码 */
@Excel(name = "物料编码")
private String productId;
/** 计划数量 */
@Excel(name = "计划数量")
private String quantity;
/** 计划数量(箱) */
@Excel(name = "计划数量(箱)")
private String quantityX;
/** 计划数量(件) */
@Excel(name = "计划数量(件)")
private String quantityJ;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String price;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String cargoNo;
/** 实际数量 */
@Excel(name = "实际数量")
private String assignNum;
/** 实际数量(箱) */
@Excel(name = "实际数量(箱)")
private String assignNumX;
/** 实际数量(件) */
@Excel(name = "实际数量(件)")
private String assignNumJ;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String printDate;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String stockStatus;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String supplierId;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customerId;
/** 计量单位546 */
@Excel(name = "计量单位546")
private String unit;
/** 规格型号546 */
@Excel(name = "规格型号546")
private String spec;
/** 层级关系546 */
@Excel(name = "层级关系546")
private String spare1;
/** 上层物料546 */
@Excel(name = "上层物料546")
private String spare2;
/** 顶层物料546 */
@Excel(name = "顶层物料546")
private String spare3;
/** 项目号546 */
@Excel(name = "项目号546")
private String spare4;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare5;
/** 行号546 */
@Excel(name = "行号546")
private String spare6;
/** 扫码数量 */
@Excel(name = "扫码数量")
private String scanNum;
/** 扫码数量(箱) */
@Excel(name = "扫码数量(箱)")
private String scanNumX;
/** 扫码数量(件) */
@Excel(name = "扫码数量(件)")
private String scanNumJ;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare7;
/** $column.columnComment */
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String spare8;
/** 货位,托盘加数量按逗号分开 */
@Excel(name = "货位,托盘加数量按逗号分开")
private String spare9;
/** 物料名称546 */
@Excel(name = "物料名称546")
private String productName;
public void setStockinDetailId(String stockinDetailId)
{
this.stockinDetailId = stockinDetailId;
}
public String getStockinDetailId()
{
return stockinDetailId;
}
public void setStockinGuid(String stockinGuid)
{
this.stockinGuid = stockinGuid;
}
public String getStockinGuid()
{
return stockinGuid;
}
public void setStockinId(String stockinId)
{
this.stockinId = stockinId;
}
public String getStockinId()
{
return stockinId;
}
public void setLotNo(String lotNo)
{
this.lotNo = lotNo;
}
public String getLotNo()
{
return lotNo;
}
public void setProductGuid(String productGuid)
{
this.productGuid = productGuid;
}
public String getProductGuid()
{
return productGuid;
}
public void setProductId(String productId)
{
this.productId = productId;
}
public String getProductId()
{
return productId;
}
public void setQuantity(String quantity)
{
this.quantity = quantity;
}
public String getQuantity()
{
return quantity;
}
public void setQuantityX(String quantityX)
{
this.quantityX = quantityX;
}
public String getQuantityX()
{
return quantityX;
}
public void setQuantityJ(String quantityJ)
{
this.quantityJ = quantityJ;
}
public String getQuantityJ()
{
return quantityJ;
}
public void setPrice(String price)
{
this.price = price;
}
public String getPrice()
{
return price;
}
public void setCargoNo(String cargoNo)
{
this.cargoNo = cargoNo;
}
public String getCargoNo()
{
return cargoNo;
}
public void setAssignNum(String assignNum)
{
this.assignNum = assignNum;
}
public String getAssignNum()
{
return assignNum;
}
public void setAssignNumX(String assignNumX)
{
this.assignNumX = assignNumX;
}
public String getAssignNumX()
{
return assignNumX;
}
public void setAssignNumJ(String assignNumJ)
{
this.assignNumJ = assignNumJ;
}
public String getAssignNumJ()
{
return assignNumJ;
}
public void setPrintDate(String printDate)
{
this.printDate = printDate;
}
public String getPrintDate()
{
return printDate;
}
public void setStockStatus(String stockStatus)
{
this.stockStatus = stockStatus;
}
public String getStockStatus()
{
return stockStatus;
}
public void setSupplierId(String supplierId)
{
this.supplierId = supplierId;
}
public String getSupplierId()
{
return supplierId;
}
public void setCustomerId(String customerId)
{
this.customerId = customerId;
}
public String getCustomerId()
{
return customerId;
}
public void setUnit(String unit)
{
this.unit = unit;
}
public String getUnit()
{
return unit;
}
public void setSpec(String spec)
{
this.spec = spec;
}
public String getSpec()
{
return spec;
}
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;
}
public void setSpare4(String spare4)
{
this.spare4 = spare4;
}
public String getSpare4()
{
return spare4;
}
public void setSpare5(String spare5)
{
this.spare5 = spare5;
}
public String getSpare5()
{
return spare5;
}
public void setSpare6(String spare6)
{
this.spare6 = spare6;
}
public String getSpare6()
{
return spare6;
}
public void setScanNum(String scanNum)
{
this.scanNum = scanNum;
}
public String getScanNum()
{
return scanNum;
}
public void setScanNumX(String scanNumX)
{
this.scanNumX = scanNumX;
}
public String getScanNumX()
{
return scanNumX;
}
public void setScanNumJ(String scanNumJ)
{
this.scanNumJ = scanNumJ;
}
public String getScanNumJ()
{
return scanNumJ;
}
public void setSpare7(String spare7)
{
this.spare7 = spare7;
}
public String getSpare7()
{
return spare7;
}
public void setSpare8(String spare8)
{
this.spare8 = spare8;
}
public String getSpare8()
{
return spare8;
}
public void setSpare9(String spare9)
{
this.spare9 = spare9;
}
public String getSpare9()
{
return spare9;
}
public void setProductName(String productName)
{
this.productName = productName;
}
public String getProductName()
{
return productName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("stockinDetailId", getStockinDetailId())
.append("stockinGuid", getStockinGuid())
.append("stockinId", getStockinId())
.append("lotNo", getLotNo())
.append("productGuid", getProductGuid())
.append("productId", getProductId())
.append("quantity", getQuantity())
.append("quantityX", getQuantityX())
.append("quantityJ", getQuantityJ())
.append("price", getPrice())
.append("cargoNo", getCargoNo())
.append("remark", getRemark())
.append("assignNum", getAssignNum())
.append("assignNumX", getAssignNumX())
.append("assignNumJ", getAssignNumJ())
.append("printDate", getPrintDate())
.append("stockStatus", getStockStatus())
.append("supplierId", getSupplierId())
.append("customerId", getCustomerId())
.append("unit", getUnit())
.append("spec", getSpec())
.append("spare1", getSpare1())
.append("spare2", getSpare2())
.append("spare3", getSpare3())
.append("spare4", getSpare4())
.append("spare5", getSpare5())
.append("spare6", getSpare6())
.append("scanNum", getScanNum())
.append("scanNumX", getScanNumX())
.append("scanNumJ", getScanNumJ())
.append("spare7", getSpare7())
.append("spare8", getSpare8())
.append("spare9", getSpare9())
.append("productName", getProductName())
.toString();
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.in.stockindeatilback.mapper;
import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockindeatilback.domain.InStockinDetailBack;
/**
* 入库单据子信息Mapper接口
*
* @author ruoyi
* @date 2026-01-27
*/
public interface InStockinDetailBackMapper
{
/**
* 查询入库单据子信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 入库单据子信息
*/
public InStockinDetailBack selectInStockinDetailBackByStockinDetailId(String stockinDetailId);
/**
* 查询入库单据子信息列表
*
* @param inStockinDetailBack 入库单据子信息
* @return 入库单据子信息集合
*/
public List<InStockinDetailBack> selectInStockinDetailBackList(InStockinDetailBack inStockinDetailBack);
/**
* 新增入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
public int insertInStockinDetailBack(InStockinDetailBack inStockinDetailBack);
public int insertInStockinDetailBackById(InStockin inStockin);
/**
* 修改入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
public int updateInStockinDetailBack(InStockinDetailBack inStockinDetailBack);
/**
* 删除入库单据子信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 结果
*/
public int deleteInStockinDetailBackByStockinDetailId(String stockinDetailId);
/**
* 批量删除入库单据子信息
*
* @param stockinDetailIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinDetailBackByStockinDetailIds(String[] stockinDetailIds);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.in.stockindeatilback.service;
import java.util.List;
import com.ruoyi.in.stockindeatilback.domain.InStockinDetailBack;
/**
* 入库单据子信息Service接口
*
* @author ruoyi
* @date 2026-01-27
*/
public interface IInStockinDetailBackService
{
/**
* 查询入库单据子信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 入库单据子信息
*/
public InStockinDetailBack selectInStockinDetailBackByStockinDetailId(String stockinDetailId);
/**
* 查询入库单据子信息列表
*
* @param inStockinDetailBack 入库单据子信息
* @return 入库单据子信息集合
*/
public List<InStockinDetailBack> selectInStockinDetailBackList(InStockinDetailBack inStockinDetailBack);
/**
* 新增入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
public int insertInStockinDetailBack(InStockinDetailBack inStockinDetailBack);
/**
* 修改入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
public int updateInStockinDetailBack(InStockinDetailBack inStockinDetailBack);
/**
* 批量删除入库单据子信息
*
* @param stockinDetailIds 需要删除的入库单据子信息主键集合
* @return 结果
*/
public int deleteInStockinDetailBackByStockinDetailIds(String[] stockinDetailIds);
/**
* 删除入库单据子信息信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 结果
*/
public int deleteInStockinDetailBackByStockinDetailId(String stockinDetailId);
}

View File

@@ -0,0 +1,93 @@
package com.ruoyi.in.stockindeatilback.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.in.stockindeatilback.mapper.InStockinDetailBackMapper;
import com.ruoyi.in.stockindeatilback.domain.InStockinDetailBack;
import com.ruoyi.in.stockindeatilback.service.IInStockinDetailBackService;
/**
* 入库单据子信息Service业务层处理
*
* @author ruoyi
* @date 2026-01-27
*/
@Service
public class InStockinDetailBackServiceImpl implements IInStockinDetailBackService
{
@Autowired
private InStockinDetailBackMapper inStockinDetailBackMapper;
/**
* 查询入库单据子信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 入库单据子信息
*/
@Override
public InStockinDetailBack selectInStockinDetailBackByStockinDetailId(String stockinDetailId)
{
return inStockinDetailBackMapper.selectInStockinDetailBackByStockinDetailId(stockinDetailId);
}
/**
* 查询入库单据子信息列表
*
* @param inStockinDetailBack 入库单据子信息
* @return 入库单据子信息
*/
@Override
public List<InStockinDetailBack> selectInStockinDetailBackList(InStockinDetailBack inStockinDetailBack)
{
return inStockinDetailBackMapper.selectInStockinDetailBackList(inStockinDetailBack);
}
/**
* 新增入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
@Override
public int insertInStockinDetailBack(InStockinDetailBack inStockinDetailBack)
{
return inStockinDetailBackMapper.insertInStockinDetailBack(inStockinDetailBack);
}
/**
* 修改入库单据子信息
*
* @param inStockinDetailBack 入库单据子信息
* @return 结果
*/
@Override
public int updateInStockinDetailBack(InStockinDetailBack inStockinDetailBack)
{
return inStockinDetailBackMapper.updateInStockinDetailBack(inStockinDetailBack);
}
/**
* 批量删除入库单据子信息
*
* @param stockinDetailIds 需要删除的入库单据子信息主键
* @return 结果
*/
@Override
public int deleteInStockinDetailBackByStockinDetailIds(String[] stockinDetailIds)
{
return inStockinDetailBackMapper.deleteInStockinDetailBackByStockinDetailIds(stockinDetailIds);
}
/**
* 删除入库单据子信息信息
*
* @param stockinDetailId 入库单据子信息主键
* @return 结果
*/
@Override
public int deleteInStockinDetailBackByStockinDetailId(String stockinDetailId)
{
return inStockinDetailBackMapper.deleteInStockinDetailBackByStockinDetailId(stockinDetailId);
}
}

View File

@@ -76,4 +76,6 @@ public interface MydoJobMapper
MydoJob selectMydoJobByEntranceId(MydoJob mydoJob);
List<MydoJob> getInJobBySerial(String trayCode);
void manualCompleted(HashMap<String, Object> map);
}

View File

@@ -73,10 +73,7 @@ public class MydoJobServiceImpl implements IMydoJobService {
private IOutStockoutDetailService outStockoutDetailService;
@Autowired
private IBasCargoSpaceService basCargoSpaceService;
@Autowired
private PdaService pdaService;
@Autowired
private IBasWarehouseService basWarehouseService;
@Autowired
private IToWcsService iToWcsService;
@Autowired
@@ -247,119 +244,129 @@ public class MydoJobServiceImpl implements IMydoJobService {
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult manualCompleted(MydoJob mydoJobParam, int type) {
HashMap<String, Object> map = new HashMap<>();
String jobId = mydoJobParam.getJobId();
MydoJob mydoJob = selectMydoJobByJobId(jobId);
if (mydoJob == null) {
return AjaxResult.warn("任务不存在");
map.put("v_job_id", jobId);
mydoJobMapper.manualCompleted(map);
if (!"10".equals(map.get("v_result").toString())) {
return AjaxResult.error(map.get("v_resultmsg").toString());
}else{
return AjaxResult.success();
}
if ("5".equals(mydoJob.getInOrOut())){
//盘点入库
//入库作业
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
//查询盘点信息中的异常信息
CheckDifferenceRecord checkDifferenceRecordParam = new CheckDifferenceRecord();
checkDifferenceRecordParam.setTrayCode(mydoJob.getTrayCode());
checkDifferenceRecordParam.setWarehouseId(mydoJob.getWarehouseId());
List<CheckDifferenceRecord> checkDifferenceRecords = checkDifferenceRecordService.selectCheckDifferenceRecordList(checkDifferenceRecordParam);
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//如果存在盘点异常信息 根据托盘条码和物料id 筛选异常信息
Optional<CheckDifferenceRecord> first = checkDifferenceRecords.stream().filter(x -> x.getTrayCode().equals(mydoJob.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
if (first.isPresent()) {
//生成盘点待审批库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "2");
stockByInStockinDetail.setSpare7("1");
list.add(stockByInStockinDetail);
//修改异常记录中的库存id
CheckDifferenceRecord checkDifferenceRecord = first.get();
checkDifferenceRecord.setStockId(stockByInStockinDetail.getStockId());
checkDifferenceRecordService.updateCheckDifferenceRecord(checkDifferenceRecord);
} else {
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "1");
stockByInStockinDetail.setSpare7("1");
//正常库存
list.add(stockByInStockinDetail);
}
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(mydoJob.getTrayCode());
basCargoSpace.setCargoSpaceId(mydoJob.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
mydoJob.setFinishTime(DateUtil.formatDateTime(DateUtil.date()));
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
return AjaxResult.success();
} else {
return AjaxResult.warn("不存在子作业");
}
}else {
//正常入库任务
MydoJobDetail param = new MydoJobDetail();
param.setJobId(jobId);
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId());
if (CollUtil.isNotEmpty(mydoJobDetails)) {
List<BasStock> list = new ArrayList<>();
for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
// if ("2".equals(mydoJob.getInOrOut()) || "3".equals(mydoJob.getInOrOut())) {
// //修改单据实际数量 2-退料入库 3-其它入库
// String inOrOutDId = mydoJobDetail.getInOrOutDId();
// InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
// inStockinDetail.setAssignNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getAssignNum()).add(Convert.toBigDecimal(mydoJobDetail.getInQuantity()))));
// inStockinDetailService.updateInStockinDetail(inStockinDetail);
// String jobId = mydoJobParam.getJobId();
// MydoJob mydoJob = selectMydoJobByJobId(jobId);
// if (mydoJob == null) {
// return AjaxResult.warn("任务不存在");
// }
// if ("5".equals(mydoJob.getInOrOut())){
//
// //盘点入库
// //入库作业
// MydoJobDetail param = new MydoJobDetail();
// param.setJobId(jobId);
// List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
// BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId());
// if (CollUtil.isNotEmpty(mydoJobDetails)) {
// List<BasStock> list = new ArrayList<>();
//
//
// //查询盘点信息中的异常信息
// CheckDifferenceRecord checkDifferenceRecordParam = new CheckDifferenceRecord();
// checkDifferenceRecordParam.setTrayCode(mydoJob.getTrayCode());
// checkDifferenceRecordParam.setWarehouseId(mydoJob.getWarehouseId());
// List<CheckDifferenceRecord> checkDifferenceRecords = checkDifferenceRecordService.selectCheckDifferenceRecordList(checkDifferenceRecordParam);
// for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
// //如果存在盘点异常信息 根据托盘条码和物料id 筛选异常信息
// Optional<CheckDifferenceRecord> first = checkDifferenceRecords.stream().filter(x -> x.getTrayCode().equals(mydoJob.getTrayCode()) && x.getProductId().equals(mydoJobDetail.getProductId())).findFirst();
// if (first.isPresent()) {
// //生成盘点待审批库存
// BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "2");
// stockByInStockinDetail.setSpare7("1");
// list.add(stockByInStockinDetail);
// //修改异常记录中的库存id
// CheckDifferenceRecord checkDifferenceRecord = first.get();
// checkDifferenceRecord.setStockId(stockByInStockinDetail.getStockId());
// checkDifferenceRecordService.updateCheckDifferenceRecord(checkDifferenceRecord);
//
// } else {
// BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "1");
// stockByInStockinDetail.setSpare7("1");
// //正常库存
// list.add(stockByInStockinDetail);
// }
//正常库存
BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "1");
stockByInStockinDetail.setSpare7("0");
list.add(stockByInStockinDetail);
}
//修改货位状态
basCargoSpace.setStatus("2");
basCargoSpace.setTrayCode(mydoJob.getTrayCode());
basCargoSpace.setCargoSpaceId(mydoJob.getCargoSpaceId());
basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//插入库存信息
basStockService.insertBasStockList(list);
//结束任务
mydoJob.setStatus("4");
mydoJob.setFinishTime(DateUtil.formatDateTime(DateUtil.date()));
updateMydoJob(mydoJob);
// 插入任务历史表 删除任务
insertHistory(mydoJob.getJobId());
//其他出入库单据回传
TransferBillCallback transferBillCallback = new TransferBillCallback();
transferBillCallback.setJobId(mydoJob.getJobId());
transferBillCallback.setErpBill(mydoJob.getLineId());
transferBillCallback.setType("1");
transferBillCallback.setStatus("0");
transferBillCallbackService.insertTransferBillCallback(transferBillCallback);
return AjaxResult.success();
} else {
return AjaxResult.warn("不存在子作业");
}
}
//
// }
//
// //修改货位状态
// basCargoSpace.setStatus("2");
// basCargoSpace.setTrayCode(mydoJob.getTrayCode());
// basCargoSpace.setCargoSpaceId(mydoJob.getCargoSpaceId());
// basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//
// //插入库存信息
// basStockService.insertBasStockList(list);
//
// //结束任务
// mydoJob.setStatus("4");
// mydoJob.setFinishTime(DateUtil.formatDateTime(DateUtil.date()));
// updateMydoJob(mydoJob);
// // 插入任务历史表 删除任务
// insertHistory(mydoJob.getJobId());
// return AjaxResult.success();
// } else {
// return AjaxResult.warn("不存在子作业");
// }
// }else {
// //正常入库任务
// MydoJobDetail param = new MydoJobDetail();
// param.setJobId(jobId);
// List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(param);
// BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(mydoJob.getCargoSpaceId());
// if (CollUtil.isNotEmpty(mydoJobDetails)) {
// List<BasStock> list = new ArrayList<>();
// for (MydoJobDetail mydoJobDetail : mydoJobDetails) {
//// if ("2".equals(mydoJob.getInOrOut()) || "3".equals(mydoJob.getInOrOut())) {
//// //修改单据实际数量 2-退料入库 3-其它入库
//// String inOrOutDId = mydoJobDetail.getInOrOutDId();
//// InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inOrOutDId);
//// inStockinDetail.setAssignNum(Convert.toStr(Convert.toBigDecimal(inStockinDetail.getAssignNum()).add(Convert.toBigDecimal(mydoJobDetail.getInQuantity()))));
//// inStockinDetailService.updateInStockinDetail(inStockinDetail);
//// }
// //正常库存
// BasStock stockByInStockinDetail = getStockByInStockinDetail(mydoJobDetail, mydoJob, "1");
// stockByInStockinDetail.setSpare7("0");
// list.add(stockByInStockinDetail);
// }
//
// //修改货位状态
// basCargoSpace.setStatus("2");
// basCargoSpace.setTrayCode(mydoJob.getTrayCode());
// basCargoSpace.setCargoSpaceId(mydoJob.getCargoSpaceId());
// basCargoSpaceService.updateBasCargoSpace(basCargoSpace);
//
// //插入库存信息
// basStockService.insertBasStockList(list);
//
// //结束任务
// mydoJob.setStatus("4");
// mydoJob.setFinishTime(DateUtil.formatDateTime(DateUtil.date()));
// updateMydoJob(mydoJob);
// // 插入任务历史表 删除任务
// insertHistory(mydoJob.getJobId());
//
// //其他出入库单据回传
// TransferBillCallback transferBillCallback = new TransferBillCallback();
// transferBillCallback.setJobId(mydoJob.getJobId());
// transferBillCallback.setErpBill(mydoJob.getLineId());
// transferBillCallback.setType("1");
// transferBillCallback.setStatus("0");
// transferBillCallbackService.insertTransferBillCallback(transferBillCallback);
// return AjaxResult.success();
// } else {
// return AjaxResult.warn("不存在子作业");
// }
// }
}
private BasStock getStockByInStockinDetail(MydoJobDetail mydoJobDetail, MydoJob mydoJob, String productStatus) {

View File

@@ -150,6 +150,8 @@ public class MydoJobDetail extends BaseEntity
private String unit;
private String trayCode;
private String stockinDetailId;
}

View File

@@ -38,8 +38,9 @@ public class PdaController extends BaseController {
*/
@RequestMapping("/selectHasHalfTray")
@ResponseBody
public List<BasStock> selectHasHalfTray(String inStockinDetailId) {
return pdaService.selectHasHalfTray(inStockinDetailId);
public AjaxResult selectHasHalfTray(String inStockinDetailId) {
List<BasStock> basStocks = pdaService.selectHasHalfTray(inStockinDetailId);
return AjaxResult.success(basStocks);
}
/**
@@ -49,6 +50,9 @@ public class PdaController extends BaseController {
@ResponseBody
public AjaxResult selectDetailById(String inStockinDetailId) {
InStockinDetail inStockinDetail = iInStockinDetailService.selectInStockinDetailByStockinDetailId(inStockinDetailId);
if(inStockinDetail != null) {
inStockinDetail.setQuantity(String.valueOf(Integer.valueOf(inStockinDetail.getQuantity()) - Integer.valueOf(inStockinDetail.getScanNum())));
}
return AjaxResult.success(inStockinDetail);
}
@@ -58,8 +62,8 @@ public class PdaController extends BaseController {
@RequestMapping("/halfTrayOut")
@ResponseBody
public AjaxResult halfTrayOut(String trayCode) {
return pdaService.halfTrayOut(trayCode);
public AjaxResult halfTrayOut(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.halfTrayOut(trayCodeMsg);
}
@@ -77,19 +81,54 @@ public class PdaController extends BaseController {
*/
@RequestMapping("/bindTray")
@ResponseBody
public AjaxResult bindTray(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.bindTray(trayCodeMsg);
public AjaxResult bindTray(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.bindTray(trayCodeMakeSure);
}
/**
* 确认入库
* 空托盘入库
*/
@RequestMapping("/confirmIn")
@RequestMapping("/tpIn")
@ResponseBody
public AjaxResult confirmIn(String trayCode) {
return pdaService.confirmIn(trayCode);
public AjaxResult tpIn(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.tpIn(trayCodeMsg.getTrayCode());
}
/**
* 空托盘出库
*/
@RequestMapping("/tpOut")
@ResponseBody
public AjaxResult tpOut(@RequestBody TrayCodeMsg trayCodeMsg) {
return pdaService.tpOut(trayCodeMsg);
}
/**
* 出库确认查询子作业信息
* @param trayCodeMsg
* @return
*/
@RequestMapping("/selectJobDetailByTray")
@ResponseBody
public AjaxResult selectJobDetailByTray(@RequestBody TrayCodeMsg trayCodeMsg){
return pdaService.selectJobDetailByTray(trayCodeMsg);
}
/**
* 出库确认
*
* @param trayCodeMakeSure 托盘信息
* @return
*/
@PreAuthorize("@ss.hasPermi('pda:out:outMakeSure')")
@PostMapping("/outMakeSure")
@Log(title = "手持机出库确认", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.outMakeSure(trayCodeMakeSure);
}
@@ -111,19 +150,7 @@ public class PdaController extends BaseController {
}
/**
* 出库确认
*
* @param trayCodeMakeSure 托盘信息
* @return
*/
@PreAuthorize("@ss.hasPermi('pda:out:outMakeSure')")
@PostMapping("/outMakeSure")
@Log(title = "手持机出库确认", businessType = BusinessType.INSERT)
@ResponseBody
public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) {
return pdaService.outMakeSure(trayCodeMakeSure);
}
/**

View File

@@ -21,6 +21,7 @@ public class TrayCodeMakeSure {
private String warehouseId;
private String exitId;
private String isFull;
//拣选详情列表
private List<MydoJobDetail> mydoJobDetailList;
//盘点详情列表

View File

@@ -6,6 +6,11 @@ public interface PdaMapper {
void bindTray(HashMap<String, Object> map);
void tpIn(HashMap<String, Object> map);
void halfTrayOut(HashMap<String, Object> map);
void tpOut(HashMap<String, Object> map);

View File

@@ -22,13 +22,17 @@ public interface PdaService {
*/
List<BasStock> selectHasHalfTray(String inStockinDetailId);
AjaxResult halfTrayOut(String trayCode);
AjaxResult halfTrayOut(TrayCodeMsg trayCodeMsg);
Object selectMsgByTray(TrayCodeMsg trayCodeMsg);
AjaxResult bindTray(TrayCodeMsg trayCodeMsg);
AjaxResult bindTray(TrayCodeMakeSure trayCodeMakeSure);
AjaxResult confirmIn(String trayCode);
AjaxResult tpIn(String trayCode);
AjaxResult tpOut(TrayCodeMsg trayCodeMsg);
AjaxResult selectJobDetailByTray(TrayCodeMsg trayCodeMsg);

View File

@@ -11,6 +11,8 @@ import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.MessageUtils;
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;
@@ -56,20 +58,37 @@ public class PdaServiceImp implements PdaService {
private IToWcsService toWcsService;
@Autowired
private BasStockMapper basStockMapper;
@Autowired
private IInStockinService inStockinService;
@Override
public List<BasStock> selectHasHalfTray(String inStockinDetailId) {
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(inStockinDetailId);
InStockin inStockin = inStockinService.selectInStockinByStockinId(inStockinDetail.getStockinId());
inStockinDetail.setSpare4(inStockin.getDepartmentNo());
List<BasStock> hasHalfTray = basStockMapper.selectHasHalfTray(inStockinDetail);
return hasHalfTray;
}
@Override
public AjaxResult halfTrayOut(String trayCode) {
return null;
public AjaxResult halfTrayOut(TrayCodeMsg trayCodeMsg) {
InStockinDetail inStockinDetail = inStockinDetailService.selectInStockinDetailByStockinDetailId(trayCodeMsg.getStockinDetailId());
InStockin inStockin = inStockinService.selectInStockinByStockinId(inStockinDetail.getStockinId());
inStockinDetail.setSpare4(inStockin.getDepartmentNo());
List<BasStock> hasHalfTray = basStockMapper.selectHasHalfTray(inStockinDetail);
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", hasHalfTray.get(0).getTrayCode());
map.put("v_exit_id",trayCodeMsg.getExitId());
pdaMapper.halfTrayOut(map);
if(!"10".equals(map.get("v_result").toString())){
return AjaxResult.error(map.get("v_resultmsg").toString());
}else{
return AjaxResult.success();
}
}
@Override
@@ -79,70 +98,102 @@ public class PdaServiceImp implements PdaService {
//todo 半盘出库作业类型
mydoJob.setInOrOut("");
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByTrayCode(mydoJob);
if(mydoJobDetails.size()==0){
if (mydoJobDetails.size() == 0) {
TrayMsg trayMsg = new TrayMsg();
trayMsg.setTrayCode(trayCodeMsg.getTrayCode());
List<TrayMsg> trayMsgList = trayMsgService.selectTrayMsgList(trayMsg);
return trayMsgList;
}else{
} else {
return mydoJobDetails;
}
}
@Override
public AjaxResult bindTray(TrayCodeMsg trayCodeMsg) {
@Transactional(rollbackFor = Exception.class)
public AjaxResult bindTray(TrayCodeMakeSure trayCodeMakeSure) {
StringBuilder errorbulider = new StringBuilder();
for (MydoJobDetail mydoJobDetail : trayCodeMakeSure.getMydoJobDetailList()) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
map.put("v_stockin_detail_id", mydoJobDetail.getStockinDetailId());
map.put("v_quantity", Integer.valueOf(mydoJobDetail.getInQuantity()));
pdaMapper.bindTray(map);
if (!"10".equals(map.get("v_result").toString())) {
errorbulider.append(mydoJobDetail.getStockinDetailId() + map.get("v_resultmsg").toString());
return AjaxResult.error(errorbulider.toString());
}
}
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMsg.getTrayCode());
map.put("v_stockin_detail_id", trayCodeMsg.getStockinDetailId());
map.put("v_quantity", Integer.valueOf(trayCodeMsg.getInQuantity()));
pdaMapper.bindTray(map);
if("10".equals(map.get("v_result").toString())){
return AjaxResult.success();
}else{
map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
map.put("v_is_full", trayCodeMakeSure.getIsFull());
pdaMapper.addInJob(map);
if (!"10".equals(map.get("v_result").toString())) {
return AjaxResult.error(errorbulider.toString());
}
return AjaxResult.success();
}
@Override
public AjaxResult tpIn(String trayCode) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCode);
pdaMapper.tpIn(map);
if(!"10".equals(map.get("v_result").toString())){
return AjaxResult.error(map.get("v_resultmsg").toString());
}else{
return AjaxResult.success();
}
}
@Override
public AjaxResult confirmIn(String trayCode) {
//如果有出库作业,修改作业类型改为合盘入库类型,合盘出库放历史表
public AjaxResult tpOut(TrayCodeMsg trayCodeMsg) {
//如果没有出库作业,正常生成入库作业
return null;
HashMap<String, Object> map = new HashMap<>();
map.put("v_exit_id", trayCodeMsg.getExitId());
pdaMapper.tpOut(map);
if(!"10".equals(map.get("v_result").toString())){
return AjaxResult.error(map.get("v_resultmsg").toString());
}else{
return AjaxResult.success();
}
}
@Override
public AjaxResult selectJobDetailByTray(TrayCodeMsg trayCodeMsg) {
MydoJob mydoJob = new MydoJob();
mydoJob.setTrayCode(trayCodeMsg.getTrayCode());
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByTrayCode(mydoJob);
return AjaxResult.success(mydoJobDetails);
}
@Override
public AjaxResult addInJob(RequestEnter requestEnter) {
if(requestEnter.getEntranceId()!=null){
MydoJob mydoJob = new MydoJob();
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setStatus("1");
MydoJob mydoJob1 = mydoJobService.selectMydoJobByEntranceId(mydoJob);
if(mydoJob1!=null){
return AjaxResult.error("该入口已有作业");
}
}else{
return AjaxResult.error("请选择出口");
}
requestEnter.setFlag("1");
if (requestEnter.getEntranceId() != null) {
MydoJob mydoJob = new MydoJob();
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setStatus("1");
MydoJob mydoJob1 = mydoJobService.selectMydoJobByEntranceId(mydoJob);
if (mydoJob1 != null) {
return AjaxResult.error("该入口已有作业");
}
} else {
return AjaxResult.error("请选择出口");
}
requestEnter.setFlag("1");
AjaxResult ajaxResult = iToWmsService.requestEnterByTrayCode(requestEnter);
return ajaxResult;
}
@Override
public AjaxResult selectDetailByPDTray(TrayCodeMakeSure trayCodeMakeSure) {
MydoJob mydoJob = new MydoJob();
@@ -156,25 +207,25 @@ public class PdaServiceImp implements PdaService {
@Override
public AjaxResult outMakeSure(TrayCodeMakeSure trayCodeMakeSure) {
String trayCode = trayCodeMakeSure.getTrayCode();
String[] split = trayCode.split(" ");
String productId = split[8].substring(10);
MydoJob mydoJob = new MydoJob();
mydoJob.setExitId(trayCodeMakeSure.getExitId());
mydoJob.setProductId(productId);
mydoJob.setStatus("3");
mydoJob.setInOrOut("21");
// String[] split = trayCode.split(" ");
// String productId = split[8].substring(10);
// MydoJob mydoJob = new MydoJob();
// mydoJob.setExitId(trayCodeMakeSure.getExitId());
// mydoJob.setProductId(productId);
// mydoJob.setStatus("3");
// mydoJob.setInOrOut("21");
// List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectMydoJobDetailListByExit(mydoJob);
// if(mydoJobDetails.size()==0){
// return AjaxResult.error("该物料没有出库作业,请检查");
// }
HashMap<String, Object> map = new HashMap<>();
// map.put("v_tray_code", mydoJobDetails.get(0).getTrayCode());
map.put("v_tray_code", trayCode);
pdaMapper.outMakeSure(map);
String result = map.get("v_result").toString();
if ("10".equals(result)) {
return AjaxResult.success();
} else {
return AjaxResult.error( map.get("v_resultmsg").toString());
return AjaxResult.error(map.get("v_resultmsg").toString());
}
@@ -190,7 +241,7 @@ public class PdaServiceImp implements PdaService {
mydoJob.setStatus("3");
mydoJob.setInOrOut("26");
List<MydoJobDetail> mydoJobDetails = mydoJobDetailService.selectPdMydoJobDetailListByExit(mydoJob);
if(mydoJobDetails.isEmpty()){
if (mydoJobDetails.isEmpty()) {
return AjaxResult.error("该物料没有盘点出库作业,请检查");
}