入库单据 作废 审核 确认

This commit is contained in:
liuhanqing
2025-05-22 15:38:42 +08:00
parent 6c82b48241
commit feb264a2b3
15 changed files with 565 additions and 883 deletions

View File

@@ -23,7 +23,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
/**
* 入库单据Controller
*
*
* @author ruoyi
* @date 2025-05-20
*/
@@ -88,7 +88,7 @@ public class InStockinController extends BaseController
@PutMapping
public AjaxResult edit(@RequestBody InStockin inStockin)
{
return toAjax(inStockinService.updateInStockin(inStockin));
return inStockinService.updateInStockin(inStockin);
}
/**

View File

@@ -5,15 +5,15 @@ import com.ruoyi.in.stockin.domain.InStockin;
/**
* 入库单据Mapper接口
*
*
* @author ruoyi
* @date 2025-05-20
*/
public interface InStockinMapper
public interface InStockinMapper
{
/**
* 查询入库单据
*
*
* @param stockinGuid 入库单据主键
* @return 入库单据
*/
@@ -21,7 +21,7 @@ public interface InStockinMapper
/**
* 查询入库单据列表
*
*
* @param inStockin 入库单据
* @return 入库单据集合
*/
@@ -29,7 +29,7 @@ public interface InStockinMapper
/**
* 新增入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
@@ -37,7 +37,7 @@ public interface InStockinMapper
/**
* 修改入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
@@ -45,7 +45,7 @@ public interface InStockinMapper
/**
* 删除入库单据
*
*
* @param stockinGuid 入库单据主键
* @return 结果
*/
@@ -53,9 +53,11 @@ public interface InStockinMapper
/**
* 批量删除入库单据
*
*
* @param stockinGuids 需要删除的数据主键集合
* @return 结果
*/
public int deleteInStockinByStockinGuids(String[] stockinGuids);
void insertInStockinHistory(InStockin inStockin);
}

View File

@@ -1,19 +1,21 @@
package com.ruoyi.in.stockin.service;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockin.domain.InStockin;
/**
* 入库单据Service接口
*
*
* @author ruoyi
* @date 2025-05-20
*/
public interface IInStockinService
public interface IInStockinService
{
/**
* 查询入库单据
*
*
* @param stockinGuid 入库单据主键
* @return 入库单据
*/
@@ -21,7 +23,7 @@ public interface IInStockinService
/**
* 查询入库单据列表
*
*
* @param inStockin 入库单据
* @return 入库单据集合
*/
@@ -29,7 +31,7 @@ public interface IInStockinService
/**
* 新增入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
@@ -37,15 +39,15 @@ public interface IInStockinService
/**
* 修改入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
public int updateInStockin(InStockin inStockin);
public AjaxResult updateInStockin(InStockin inStockin);
/**
* 批量删除入库单据
*
*
* @param stockinGuids 需要删除的入库单据主键集合
* @return 结果
*/
@@ -53,7 +55,7 @@ public interface IInStockinService
/**
* 删除入库单据信息
*
*
* @param stockinGuid 入库单据主键
* @return 结果
*/

View File

@@ -1,27 +1,36 @@
package com.ruoyi.in.stockin.service.impl;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import com.ruoyi.in.stockindetail.service.IInStockinDetailService;
import com.ruoyi.receive.stockindetail.domain.ReceiveStockinDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.in.stockin.mapper.InStockinMapper;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService;
import org.springframework.transaction.annotation.Transactional;
/**
* 入库单据Service业务层处理
*
*
* @author ruoyi
* @date 2025-05-20
*/
@Service
public class InStockinServiceImpl implements IInStockinService
public class InStockinServiceImpl implements IInStockinService
{
@Autowired
private InStockinMapper inStockinMapper;
@Autowired
private IInStockinDetailService iInStockinDetailService;
/**
* 查询入库单据
*
*
* @param stockinGuid 入库单据主键
* @return 入库单据
*/
@@ -33,7 +42,7 @@ public class InStockinServiceImpl implements IInStockinService
/**
* 查询入库单据列表
*
*
* @param inStockin 入库单据
* @return 入库单据
*/
@@ -45,7 +54,7 @@ public class InStockinServiceImpl implements IInStockinService
/**
* 新增入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
@@ -57,19 +66,65 @@ public class InStockinServiceImpl implements IInStockinService
/**
* 修改入库单据
*
*
* @param inStockin 入库单据
* @return 结果
*/
@Override
public int updateInStockin(InStockin inStockin)
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateInStockin(InStockin inStockin)
{
return inStockinMapper.updateInStockin(inStockin);
InStockin old = selectInStockinByStockinGuid(inStockin.getStockinGuid());
inStockinMapper.updateInStockin(inStockin);
if ("5".equals(inStockin.getStatus())){
//作废
if (!"1".equals(old.getStatus())){
throw new RuntimeException("单据状态非未执行状态!");
}
//插入历史单据
insertInStockinHistory(inStockin);
}else if ("2".equals(inStockin.getStatus())){
//审核
if (!"1".equals(old.getStatus())){
throw new RuntimeException("单据状态非未执行状态!");
}
}else if ("4".equals(inStockin.getStatus())){
//确认
if (!"3".equals(old.getStatus())){
throw new RuntimeException("单据状态非正执行状态!");
}
//对比扫码数量 与实际入库数量是否一致
InStockinDetail inStockinDetailParam = new InStockinDetail();
inStockinDetailParam.setStockinGuid(inStockin.getStockinGuid());
List<InStockinDetail> list = iInStockinDetailService.selectInStockinDetailList(inStockinDetailParam);
if (CollUtil.isNotEmpty(list)){
boolean b = list.stream().allMatch(x -> x.getAssignNum().equals(x.getScanNum()));
if (!b){
throw new RuntimeException("扫码数量与实际入库数量不一致!");
}
}
insertInStockinHistory(inStockin);
}
return AjaxResult.success();
}
/**
* 插入入库单据 入库子单据历史
* 删除入库单据
* 删除入库单据子单据
* @param inStockin
*/
private void insertInStockinHistory(InStockin inStockin) {
//插入历史单据
inStockinMapper.insertInStockinHistory(inStockin);
iInStockinDetailService.insertInStockinDetailHistory(inStockin);
inStockinMapper.deleteInStockinByStockinGuid(inStockin.getStockinGuid());
iInStockinDetailService.deleteInStockinDetailByStockinGuid(inStockin.getStockinGuid());
}
/**
* 批量删除入库单据
*
*
* @param stockinGuids 需要删除的入库单据主键
* @return 结果
*/
@@ -81,7 +136,7 @@ public class InStockinServiceImpl implements IInStockinService
/**
* 删除入库单据信息
*
*
* @param stockinGuid 入库单据主键
* @return 结果
*/

View File

@@ -1,5 +1,9 @@
package com.ruoyi.in.stockindetail.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
@@ -7,10 +11,14 @@ import com.ruoyi.common.core.domain.BaseEntity;
/**
* 入库单据子表对象 in_stockin_detail
*
*
* @author ruoyi
* @date 2025-05-20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class InStockinDetail extends BaseEntity
{
private static final long serialVersionUID = 1L;
@@ -58,6 +66,13 @@ public class InStockinDetail extends BaseEntity
@Excel(name = "品牌")
private String cargoNo;
@Excel(name = "扫码数量")
private String scanNum;
@Excel(name = "扫码数量(箱)")
private String scanNumX;
@Excel(name = "扫码数量(件)")
private String scanNumJ;
/** 实际数量 */
@Excel(name = "实际数量")
private String assignNum;
@@ -118,296 +133,4 @@ public class InStockinDetail extends BaseEntity
@Excel(name = "备用字段6")
private String spare6;
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;
}
@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())
.toString();
}
}

View File

@@ -1,6 +1,8 @@
package com.ruoyi.in.stockindetail.mapper;
import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import org.apache.ibatis.annotations.Param;
@@ -61,4 +63,8 @@ public interface InStockinDetailMapper
public int deleteInStockinDetailByStockinDetailIds(String[] stockinDetailIds);
void insertInStockinDetailList(@Param("list") List<InStockinDetail> inStockinDetailList);
void insertInStockinDetailHistory(InStockin inStockin);
void deleteInStockinDetailByStockinGuid(String stockinGuid);
}

View File

@@ -1,6 +1,8 @@
package com.ruoyi.in.stockindetail.service;
import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
/**
@@ -64,4 +66,12 @@ public interface IInStockinDetailService
* @param inStockinDetailList
*/
void insertInStockinDetailList(List<InStockinDetail> inStockinDetailList);
/**
* 插入历史数据
* @param inStockin
*/
void insertInStockinDetailHistory(InStockin inStockin);
void deleteInStockinDetailByStockinGuid(String stockinGuid);
}

View File

@@ -1,6 +1,8 @@
package com.ruoyi.in.stockindetail.service.impl;
import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.in.stockindetail.mapper.InStockinDetailMapper;
@@ -95,4 +97,14 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
public void insertInStockinDetailList(List<InStockinDetail> inStockinDetailList) {
inStockinDetailMapper.insertInStockinDetailList(inStockinDetailList);
}
@Override
public void insertInStockinDetailHistory(InStockin inStockin) {
inStockinDetailMapper.insertInStockinDetailHistory(inStockin);
}
@Override
public void deleteInStockinDetailByStockinGuid(String stockinGuid) {
inStockinDetailMapper.deleteInStockinDetailByStockinGuid(stockinGuid);
}
}