Merge remote-tracking branch 'origin/master'

This commit is contained in:
lsymicc
2025-05-22 15:41:22 +08:00
15 changed files with 565 additions and 883 deletions

View File

@@ -88,7 +88,7 @@ public class InStockinController extends BaseController
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody InStockin inStockin) public AjaxResult edit(@RequestBody InStockin inStockin)
{ {
return toAjax(inStockinService.updateInStockin(inStockin)); return inStockinService.updateInStockin(inStockin);
} }
/** /**

View File

@@ -58,4 +58,6 @@ public interface InStockinMapper
* @return 结果 * @return 结果
*/ */
public int deleteInStockinByStockinGuids(String[] stockinGuids); public int deleteInStockinByStockinGuids(String[] stockinGuids);
void insertInStockinHistory(InStockin inStockin);
} }

View File

@@ -1,6 +1,8 @@
package com.ruoyi.in.stockin.service; package com.ruoyi.in.stockin.service;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.in.stockin.domain.InStockin; import com.ruoyi.in.stockin.domain.InStockin;
/** /**
@@ -41,7 +43,7 @@ public interface IInStockinService
* @param inStockin 入库单据 * @param inStockin 入库单据
* @return 结果 * @return 结果
*/ */
public int updateInStockin(InStockin inStockin); public AjaxResult updateInStockin(InStockin inStockin);
/** /**
* 批量删除入库单据 * 批量删除入库单据

View File

@@ -1,11 +1,18 @@
package com.ruoyi.in.stockin.service.impl; package com.ruoyi.in.stockin.service.impl;
import java.util.List; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.in.stockin.mapper.InStockinMapper; import com.ruoyi.in.stockin.mapper.InStockinMapper;
import com.ruoyi.in.stockin.domain.InStockin; import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockin.service.IInStockinService; import com.ruoyi.in.stockin.service.IInStockinService;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 入库单据Service业务层处理 * 入库单据Service业务层处理
@@ -18,6 +25,8 @@ public class InStockinServiceImpl implements IInStockinService
{ {
@Autowired @Autowired
private InStockinMapper inStockinMapper; private InStockinMapper inStockinMapper;
@Autowired
private IInStockinDetailService iInStockinDetailService;
/** /**
* 查询入库单据 * 查询入库单据
@@ -62,9 +71,55 @@ public class InStockinServiceImpl implements IInStockinService
* @return 结果 * @return 结果
*/ */
@Override @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());
} }
/** /**

View File

@@ -1,5 +1,9 @@
package com.ruoyi.in.stockindetail.domain; 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.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@@ -11,6 +15,10 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi * @author ruoyi
* @date 2025-05-20 * @date 2025-05-20
*/ */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class InStockinDetail extends BaseEntity public class InStockinDetail extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -58,6 +66,13 @@ public class InStockinDetail extends BaseEntity
@Excel(name = "品牌") @Excel(name = "品牌")
private String cargoNo; private String cargoNo;
@Excel(name = "扫码数量")
private String scanNum;
@Excel(name = "扫码数量(箱)")
private String scanNumX;
@Excel(name = "扫码数量(件)")
private String scanNumJ;
/** 实际数量 */ /** 实际数量 */
@Excel(name = "实际数量") @Excel(name = "实际数量")
private String assignNum; private String assignNum;
@@ -118,296 +133,4 @@ public class InStockinDetail extends BaseEntity
@Excel(name = "备用字段6") @Excel(name = "备用字段6")
private String spare6; 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; package com.ruoyi.in.stockindetail.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.domain.InStockinDetail;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -61,4 +63,8 @@ public interface InStockinDetailMapper
public int deleteInStockinDetailByStockinDetailIds(String[] stockinDetailIds); public int deleteInStockinDetailByStockinDetailIds(String[] stockinDetailIds);
void insertInStockinDetailList(@Param("list") List<InStockinDetail> inStockinDetailList); 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; package com.ruoyi.in.stockindetail.service;
import java.util.List; import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.domain.InStockinDetail;
/** /**
@@ -64,4 +66,12 @@ public interface IInStockinDetailService
* @param inStockinDetailList * @param inStockinDetailList
*/ */
void insertInStockinDetailList(List<InStockinDetail> 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; package com.ruoyi.in.stockindetail.service.impl;
import java.util.List; import java.util.List;
import com.ruoyi.in.stockin.domain.InStockin;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.in.stockindetail.mapper.InStockinDetailMapper; import com.ruoyi.in.stockindetail.mapper.InStockinDetailMapper;
@@ -95,4 +97,14 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
public void insertInStockinDetailList(List<InStockinDetail> inStockinDetailList) { public void insertInStockinDetailList(List<InStockinDetail> inStockinDetailList) {
inStockinDetailMapper.insertInStockinDetailList(inStockinDetailList); inStockinDetailMapper.insertInStockinDetailList(inStockinDetailList);
} }
@Override
public void insertInStockinDetailHistory(InStockin inStockin) {
inStockinDetailMapper.insertInStockinDetailHistory(inStockin);
}
@Override
public void deleteInStockinDetailByStockinGuid(String stockinGuid) {
inStockinDetailMapper.deleteInStockinDetailByStockinGuid(stockinGuid);
}
} }

View File

@@ -262,6 +262,8 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService
inStockinDetail.setStockinDetailId(inStockin.getStockinId()+"-"+i++); inStockinDetail.setStockinDetailId(inStockin.getStockinId()+"-"+i++);
inStockinDetail.setStockinId(inStockin.getStockinId()); inStockinDetail.setStockinId(inStockin.getStockinId());
inStockinDetail.setStockStatus("0"); inStockinDetail.setStockStatus("0");
inStockinDetail.setAssignNum("0");
inStockinDetail.setScanNum("0");
inStockinDetailList.add(inStockinDetail); inStockinDetailList.add(inStockinDetail);
} }
return inStockinDetailList; return inStockinDetailList;

View File

@@ -1,5 +1,9 @@
package com.ruoyi.receive.stockindetail.domain; package com.ruoyi.receive.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.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@@ -11,6 +15,10 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi * @author ruoyi
* @date 2025-05-20 * @date 2025-05-20
*/ */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ReceiveStockinDetail extends BaseEntity public class ReceiveStockinDetail extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -118,296 +126,5 @@ public class ReceiveStockinDetail extends BaseEntity
@Excel(name = "备用字段6") @Excel(name = "备用字段6")
private String spare6; 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

@@ -32,10 +32,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="spare4" column="spare4" /> <result property="spare4" column="spare4" />
<result property="spare5" column="spare5" /> <result property="spare5" column="spare5" />
<result property="spare6" column="spare6" /> <result property="spare6" column="spare6" />
<result property="scanNum" column="scan_num" />
<result property="scanNumX" column="scan_num_x" />
<result property="scanNumJ" column="scan_num_j" />
</resultMap> </resultMap>
<sql id="selectInStockinDetailVo"> <sql id="selectInStockinDetailVo">
select stockin_detail_id, stockin_guid, stockin_id, lot_no, product_guid, product_id, quantity, quantity_x, quantity_j, price, cargo_no, remark, assign_num, assign_num_x, assign_num_j, print_date, stock_status, supplier_id, customer_id, unit, spec, spare1, spare2, spare3, spare4, spare5, spare6 from in_stockin_detail select stockin_detail_id, stockin_guid, stockin_id, lot_no, product_guid, product_id, quantity, quantity_x, quantity_j, price, cargo_no, remark, assign_num, assign_num_x, assign_num_j, print_date, stock_status, supplier_id, customer_id, unit, spec, spare1, spare2, spare3, spare4, spare5, spare6, scan_num, scan_num_x, scan_num_j from in_stockin_detail
</sql> </sql>
<select id="selectInStockinDetailList" parameterType="InStockinDetail" resultMap="InStockinDetailResult"> <select id="selectInStockinDetailList" parameterType="InStockinDetail" resultMap="InStockinDetailResult">
@@ -66,6 +69,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare4 != null and spare4 != ''"> and spare4 = #{spare4}</if> <if test="spare4 != null and spare4 != ''"> and spare4 = #{spare4}</if>
<if test="spare5 != null and spare5 != ''"> and spare5 = #{spare5}</if> <if test="spare5 != null and spare5 != ''"> and spare5 = #{spare5}</if>
<if test="spare6 != null and spare6 != ''"> and spare6 = #{spare6}</if> <if test="spare6 != null and spare6 != ''"> and spare6 = #{spare6}</if>
<if test="scanNum != null and scanNum != ''"> and scan_num = #{scanNum}</if>
<if test="scanNumX != null and scanNumX != ''"> and scan_num_x = #{scanNumX}</if>
<if test="scanNumJ != null and scanNumJ != ''"> and scan_num_j = #{scanNumJ}</if>
</where> </where>
</select> </select>
@@ -104,6 +110,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare4 != null">spare4,</if> <if test="spare4 != null">spare4,</if>
<if test="spare5 != null">spare5,</if> <if test="spare5 != null">spare5,</if>
<if test="spare6 != null">spare6,</if> <if test="spare6 != null">spare6,</if>
<if test="scanNum != null">scan_num,</if>
<if test="scanNumX != null">scan_num_x,</if>
<if test="scanNumJ != null">scan_num_j,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="stockinDetailId != null">#{stockinDetailId},</if> <if test="stockinDetailId != null">#{stockinDetailId},</if>
@@ -133,6 +142,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare4 != null">#{spare4},</if> <if test="spare4 != null">#{spare4},</if>
<if test="spare5 != null">#{spare5},</if> <if test="spare5 != null">#{spare5},</if>
<if test="spare6 != null">#{spare6},</if> <if test="spare6 != null">#{spare6},</if>
<if test="scanNum != null">#{scanNum},</if>
<if test="scanNumX != null">#{scanNumX},</if>
<if test="scanNumJ != null">#{scanNumJ},</if>
</trim> </trim>
</insert> </insert>
<insert id="insertInStockinDetailList"> <insert id="insertInStockinDetailList">
@@ -166,6 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="list[0].spare4 != null">spare4,</if> <if test="list[0].spare4 != null">spare4,</if>
<if test="list[0].spare5 != null">spare5,</if> <if test="list[0].spare5 != null">spare5,</if>
<if test="list[0].spare6 != null">spare6,</if> <if test="list[0].spare6 != null">spare6,</if>
<if test="list[0].scanNum != null">scan_num,</if>
<if test="list[0].scanNumX != null">scan_num_x,</if>
<if test="list[0].scanNumJ != null">scan_num_j,</if>
</trim> </trim>
<!-- values 部分:遍历列表插入多行 --> <!-- values 部分:遍历列表插入多行 -->
@@ -199,9 +214,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="item.spare4 != null">#{item.spare4},</if> <if test="item.spare4 != null">#{item.spare4},</if>
<if test="item.spare5 != null">#{item.spare5},</if> <if test="item.spare5 != null">#{item.spare5},</if>
<if test="item.spare6 != null">#{item.spare6},</if> <if test="item.spare6 != null">#{item.spare6},</if>
<if test="item.scanNum != null">#{item.scanNum},</if>
<if test="item.scanNumX != null">#{item.scanNumX},</if>
<if test="item.scanNumJ != null">#{item.scanNumJ},</if>
</trim> </trim>
</foreach> </foreach>
</insert> </insert>
<insert id="insertInStockinDetailHistory">
insert into in_stockin_detail_finish
select * from in_stockin_detail where stockin_guid = #{stockinGuid}
</insert>
<update id="updateInStockinDetail" parameterType="InStockinDetail"> <update id="updateInStockinDetail" parameterType="InStockinDetail">
update in_stockin_detail update in_stockin_detail
@@ -232,6 +254,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare4 != null">spare4 = #{spare4},</if> <if test="spare4 != null">spare4 = #{spare4},</if>
<if test="spare5 != null">spare5 = #{spare5},</if> <if test="spare5 != null">spare5 = #{spare5},</if>
<if test="spare6 != null">spare6 = #{spare6},</if> <if test="spare6 != null">spare6 = #{spare6},</if>
<if test="scanNum != null">scan_num = #{scanNum},</if>
<if test="scanNumX != null">scan_num_x = #{scanNumX},</if>
<if test="scanNumJ != null">scan_num_j = #{scanNumJ},</if>
</trim> </trim>
where stockin_detail_id = #{stockinDetailId} where stockin_detail_id = #{stockinDetailId}
</update> </update>
@@ -246,4 +271,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{stockinDetailId} #{stockinDetailId}
</foreach> </foreach>
</delete> </delete>
<delete id="deleteInStockinDetailByStockinGuid">
delete from in_stockin_detail where stockin_guid = #{stockinGuid}
</delete>
</mapper> </mapper>

View File

@@ -104,6 +104,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="spare5 != null">#{spare5},</if> <if test="spare5 != null">#{spare5},</if>
</trim> </trim>
</insert> </insert>
<insert id="insertInStockinHistory">
insert into in_stockin_finish
select * from in_stockin where stockin_guid = #{stockinGuid}
</insert>
<update id="updateInStockin" parameterType="InStockin"> <update id="updateInStockin" parameterType="InStockin">
update in_stockin update in_stockin

View File

@@ -42,3 +42,29 @@ export function delStockIn(stockinGuid) {
method: 'delete' method: 'delete'
}) })
} }
// 作废入库单据
export function invalidatedStockIn(data) {
return request({
url: '/in/stockIn',
method: 'put',
data: data
})
}
// 审核入库单据
export function reviewStockIn(data) {
return request({
url: '/in/stockIn',
method: 'put',
data: data
})
}
// 确认入库单据
export function confirmationStockIn(data) {
return request({
url: '/in/stockIn',
method: 'put',
data: data
})
}

View File

@@ -150,15 +150,29 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5"> <el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="single"
@click="handleInvalidated"
v-hasPermi="['in:stockIn:edit']"
>单据作废
</el-button>
</el-col>
<el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
plain plain
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" :disabled="single"
v-hasPermi="['in:stockIn:add']" @click="handleReview"
>新增</el-button> v-hasPermi="['in:stockIn:edit']"
>单据审核
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@@ -167,21 +181,11 @@
icon="el-icon-edit" icon="el-icon-edit"
size="mini" size="mini"
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleConfirmation"
v-hasPermi="['in:stockIn:edit']" v-hasPermi="['in:stockIn:edit']"
>修改</el-button> >单据确认
</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['in:stockIn:remove']"
>删除</el-button>
</el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
@@ -190,12 +194,25 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['in:stockIn:export']" v-hasPermi="['in:stockIn:export']"
>导出</el-button> >单据导出
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-download"
size="mini"
@click="handleBarcodePrinting"
v-hasPermi="['in:stockIn:barcodePrinting']"
>打印条码
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="stockInList" @selection-change="handleSelectionChange" @row-click="handleRowClick"> <el-table v-loading="loading" :data="stockInList" @selection-change="handleSelectionChange"
@row-click="handleRowClick">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="GUID" align="center" prop="stockinGuid" v-if="false"/> <el-table-column label="GUID" align="center" prop="stockinGuid" v-if="false"/>
<el-table-column label="入库订单ID" align="center" prop="stockinId"/> <el-table-column label="入库订单ID" align="center" prop="stockinId"/>
@@ -256,29 +273,32 @@
@pagination="getList" @pagination="getList"
/> />
<el-table v-loading="detailLoading" :data="stockInDetailList" @selection-change="handleSelectionChange" > <el-table v-loading="detailLoading" :data="stockInDetailList">
<el-table-column type="selection" width="55" align="center" /> <!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="子单ID" align="center" prop="stockinDetailId"/> <el-table-column label="子单ID" align="center" prop="stockinDetailId"/>
<!-- <el-table-column label="主单GUID" align="center" prop="stockinGuid" />--> <!-- <el-table-column label="主单GUID" align="center" prop="stockinGuid" />-->
<el-table-column label="主单ID" align="center" prop="stockinId"/> <el-table-column label="主单ID" align="center" prop="stockinId"/>
<el-table-column label="批次号" align="center" prop="lotNo"/> <el-table-column label="批次号" align="center" prop="lotNo"/>
<el-table-column label="物料ID" align="center" prop="productGuid"/> <el-table-column label="物料ID" align="center" prop="productGuid"/>
<el-table-column label="物料编码" align="center" prop="productId"/> <el-table-column label="物料编码" align="center" prop="productId"/>
<el-table-column label="计划数量" align="center" prop="quantity" />
<el-table-column label="计划数量(箱)" align="center" prop="quantityX" /> <!-- <el-table-column label="计划数量(箱)" align="center" prop="quantityX" />
<el-table-column label="计划数量(件)" align="center" prop="quantityJ" /> <el-table-column label="计划数量(件)" align="center" prop="quantityJ" />-->
<el-table-column label="参考单价" align="center" prop="price"/> <el-table-column label="参考单价" align="center" prop="price"/>
<el-table-column label="品牌" align="center" prop="cargoNo"/> <el-table-column label="品牌" align="center" prop="cargoNo"/>
<el-table-column label="描述" align="center" prop="remark"/> <el-table-column label="描述" align="center" prop="remark"/>
<el-table-column label="实际数量" align="center" prop="assignNum" />
<el-table-column label="实际数量(箱)" align="center" prop="assignNumX" /> <!-- <el-table-column label="实际数量(箱)" align="center" prop="assignNumX" />
<el-table-column label="实际数量(件)" align="center" prop="assignNumJ" /> <el-table-column label="实际数量(件)" align="center" prop="assignNumJ" />-->
<el-table-column label="入库日期" align="center" prop="printDate"/> <el-table-column label="入库日期" align="center" prop="printDate"/>
<el-table-column label="单据状态" align="center" prop="stockStatus" /> <!-- <el-table-column label="单据状态" align="center" prop="stockStatus" />-->
<!-- <el-table-column label="供应商编码" align="center" prop="supplierId" /> <!-- <el-table-column label="供应商编码" align="center" prop="supplierId" />
<el-table-column label="客户编码" align="center" prop="customerId" />--> <el-table-column label="客户编码" align="center" prop="customerId" />-->
<el-table-column label="单位" align="center" prop="unit"/> <el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="规格" align="center" prop="spec"/> <el-table-column label="规格" align="center" prop="spec"/>
<el-table-column label="计划数量" align="center" prop="quantity"/>
<el-table-column label="扫码数量" align="center" prop="scanNum"/>
<el-table-column label="实际数量" align="center" prop="assignNum"/>
<!-- <el-table-column label="备用字段1" align="center" prop="spare1" /> <!-- <el-table-column label="备用字段1" align="center" prop="spare1" />
<el-table-column label="备用字段2" align="center" prop="spare2" /> <el-table-column label="备用字段2" align="center" prop="spare2" />
<el-table-column label="备用字段3" align="center" prop="spare3" /> <el-table-column label="备用字段3" align="center" prop="spare3" />
@@ -305,18 +325,27 @@
</el-table-column>--> </el-table-column>-->
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="detailTotal>0"
:total="total" :total="detailTotal"
:page.sync="queryParams.pageNum" :page.sync="queryDetailParams.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryDetailParams.pageSize"
@pagination="getList" @pagination="getDetailList"
/> />
</div> </div>
</template> </template>
<script> <script>
import { listStockIn, getStockIn, delStockIn, addStockIn, updateStockIn } from "@/api/in/stockIn" import {
import { listStockInDetail } from "@/api/in/stockInDetail" listStockIn,
getStockIn,
delStockIn,
addStockIn,
updateStockIn,
invalidatedStockIn,
reviewStockIn,
confirmationStockIn
} from "@/api/in/stockIn"
import {listStockInDetail, barcodePrinting} from "@/api/in/stockInDetail"
export default { export default {
@@ -329,6 +358,8 @@ export default {
detailLoading: true, detailLoading: true,
// 选中数组 // 选中数组
ids: [], ids: [],
// 主表选中的数据
stockInListSelected: [],
// 非单个禁用 // 非单个禁用
single: true, single: true,
// 非多个禁用 // 非多个禁用
@@ -458,6 +489,7 @@ export default {
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.stockinGuid) this.ids = selection.map(item => item.stockinGuid)
this.stockInListSelected = selection
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
@@ -477,6 +509,67 @@ export default {
this.title = "修改入库单据" this.title = "修改入库单据"
}) })
}, },
/** 作废单据按钮操作 */
handleInvalidated(row){
let stockIn = this.stockInListSelected[0];
if (stockIn.status === "1") {
console.log(1)
let data = {
"stockinGuid": stockIn.stockinGuid,
"status":"5"
}
invalidatedStockIn(data).then(response => {
this.$modal.msgSuccess("作废成功")
this.getList()
})
}else {
this.$modal.msgError("操作失败")
}
},
/** 审核单据按钮操作 */
handleReview(row){
let stockIn = this.stockInListSelected[0];
if (stockIn.status === "2") {
this.$modal.msgError("单据已审核,请勿重复审核")
return
}
if (stockIn.status === "1") {
let data = {
"stockinGuid": stockIn.stockinGuid,
"status":"2"
}
reviewStockIn(data).then(response => {
this.$modal.msgSuccess("审核成功")
this.getList()
})
}else {
this.$modal.msgError("操作失败")
}
},
/**确认单据按钮操作 */
handleConfirmation(row){
let stockIn = this.stockInListSelected[0];
if (stockIn.status === "3"){
let data = {
"stockinGuid": stockIn.stockinGuid,
"status":"4"
}
confirmationStockIn(data).then(response => {
this.$modal.msgSuccess("确认成功")
this.getList()
})
}else {
this.$modal.msgError("操作失败")
}
},
/** 打印条码按钮操作 */
handleBarcodePrinting(row){
barcodePrinting(row.stockinGuid).then(response => {
this.$modal.msgSuccess("打印成功")
this.getList()
})
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
@@ -505,7 +598,9 @@ export default {
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
}).catch(() => {}) }).catch(() => {
this.$modal.msgSuccess("删除失败")
})
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {

View File

@@ -200,13 +200,13 @@
<!-- <el-table-column label="备用字段5" align="center" prop="spare5" /> <!-- <el-table-column label="备用字段5" align="center" prop="spare5" />
<el-table-column label="备用字段4" align="center" prop="spare4" /> <el-table-column label="备用字段4" align="center" prop="spare4" />
<el-table-column label="备用字段3" align="center" prop="spare3" />--> <el-table-column label="备用字段3" align="center" prop="spare3" />-->
<el-table-column label=" 完成日期" align="center" prop="finishDate"/> <!-- <el-table-column label=" 完成日期" align="center" prop="finishDate"/>-->
<!-- <el-table-column label="备用字段2" align="center" prop="spare2" /> <!-- <el-table-column label="备用字段2" align="center" prop="spare2" />
<el-table-column label="备用字段1" align="center" prop="spare1" />--> <el-table-column label="备用字段1" align="center" prop="spare1" />-->
<el-table-column label="erp单号" align="center" prop="erpBill"/> <el-table-column label="erp单号" align="center" prop="erpBill"/>
<el-table-column label="单据来源" align="center" prop="stockSource"/> <el-table-column label="单据来源" align="center" prop="stockSource"/>
<el-table-column label="部门编码" align="center" prop="departmentNo"/> <el-table-column label="部门编码" align="center" prop="departmentNo"/>
<el-table-column label="客户编码" align="center" prop="customerNo"/> <!-- <el-table-column label="客户编码" align="center" prop="customerNo"/>-->
<el-table-column label="班组编码" align="center" prop="classNo"/> <el-table-column label="班组编码" align="center" prop="classNo"/>
<el-table-column label="供应商编码" align="center" prop="supplierNo"/> <el-table-column label="供应商编码" align="center" prop="supplierNo"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -288,10 +288,10 @@
<!-- <el-table-column label="实际数量" align="center" prop="assignNum" /> <!-- <el-table-column label="实际数量" align="center" prop="assignNum" />
<el-table-column label="实际数量(箱)" align="center" prop="assignNumX" /> <el-table-column label="实际数量(箱)" align="center" prop="assignNumX" />
<el-table-column label="实际数量(件)" align="center" prop="assignNumJ" />--> <el-table-column label="实际数量(件)" align="center" prop="assignNumJ" />-->
<el-table-column label="入库日期" align="center" prop="printDate"/> <!-- <el-table-column label="入库日期" align="center" prop="printDate"/>-->
<el-table-column label="单据状态" align="center" prop="stockStatus"/> <el-table-column label="单据状态" align="center" prop="stockStatus"/>
<el-table-column label="供应商编码" align="center" prop="supplierId"/> <!-- <el-table-column label="供应商编码" align="center" prop="supplierId"/>-->
<el-table-column label="客户编码" align="center" prop="customerId"/> <!-- <el-table-column label="客户编码" align="center" prop="customerId"/>-->
<el-table-column label="单位" align="center" prop="unit"/> <el-table-column label="单位" align="center" prop="unit"/>
<el-table-column label="规格" align="center" prop="spec"/> <el-table-column label="规格" align="center" prop="spec"/>
<!-- <el-table-column label="备用字段1" align="center" prop="spare1" /> <!-- <el-table-column label="备用字段1" align="center" prop="spare1" />
@@ -553,7 +553,7 @@ export default {
let data = { let data = {
stockinGuidList: stockinGuid stockinGuidList: stockinGuid
} }
console.log(data) //console.log(data)
createStockin(data).then(response => { createStockin(data).then(response => {
this.getList() this.getList()
}) })
@@ -643,7 +643,7 @@ export default {
list: selectedDetails, list: selectedDetails,
stockinId: selectedDetails[0].stockinId stockinId: selectedDetails[0].stockinId
}; };
console.log(data); //console.log(data);
qualityInspection(data).then(response => { qualityInspection(data).then(response => {
this.getDetailList(data.stockinId) this.getDetailList(data.stockinId)
this.$modal.msgSuccess("质检成功"); this.$modal.msgSuccess("质检成功");