Browse Source

2024/09/10

master
qiezi 1 year ago
parent
commit
926120d777
  1. 12
      src/main/java/com/spring/modules/shipment/service/impl/ShipmentRollServiceImpl.java
  2. 474
      src/main/resources/mapper/material/ProductionStockMapper.xml

12
src/main/java/com/spring/modules/shipment/service/impl/ShipmentRollServiceImpl.java

@ -87,22 +87,26 @@ public class ShipmentRollServiceImpl extends ServiceImpl<ShipmentRollMapper, Shi
} }
} }
// 获取到 当前IFS出库单据的单号 // 获取到 当前IFS出库单据的单号
ShipmentDetail shipmentDetail = shipmentDetailService.lambdaQuery()
List<ShipmentDetail> shipmentDetail = shipmentDetailService.lambdaQuery()
.eq(ShipmentDetail::getShipmentId, shipmentRollVo.getShipmentId()) .eq(ShipmentDetail::getShipmentId, shipmentRollVo.getShipmentId())
.eq(ShipmentDetail::getPartNo, rollData.getPartNo()) .eq(ShipmentDetail::getPartNo, rollData.getPartNo())
.eq(ShipmentDetail::getSite, rollData.getSite()) .eq(ShipmentDetail::getSite, rollData.getSite())
.one();
if (Objects.isNull(shipmentDetail)) {
.list();
if (Objects.isNull(shipmentDetail) || shipmentDetail.isEmpty()) {
throw new RuntimeException("IFS出库单据明细不存在,请刷新后重试"); throw new RuntimeException("IFS出库单据明细不存在,请刷新后重试");
} }
// 获取当前物料所需数量 // 获取当前物料所需数量
BigDecimal saleQty = shipmentDetail.getSaleQty();
BigDecimal saleQty = BigDecimal.ZERO;
for (ShipmentDetail detail : shipmentDetail) {
saleQty = saleQty.add(detail.getSaleQty());
}
// 获得 箱子 卷数 // 获得 箱子 卷数
BigDecimal num = saleQty.divide(new BigDecimal(value), 0, RoundingMode.UP); BigDecimal num = saleQty.divide(new BigDecimal(value), 0, RoundingMode.UP);
// 获得该物料已经扫描多少卷 // 获得该物料已经扫描多少卷
Integer count = lambdaQuery() Integer count = lambdaQuery()
.eq(ShipmentRoll::getShipmentId, shipmentRollVo.getShipmentId()) .eq(ShipmentRoll::getShipmentId, shipmentRollVo.getShipmentId())
.eq(ShipmentRoll::getPartNo, rollData.getPartNo()) .eq(ShipmentRoll::getPartNo, rollData.getPartNo())
// .eq(ShipmentRoll::getBoxNo, shipmentRollVo.getBoxNo())
.eq(ShipmentRoll::getSite, shipmentRollVo.getSite()).count(); .eq(ShipmentRoll::getSite, shipmentRollVo.getSite()).count();
BigDecimal needNum = num.subtract(new BigDecimal(count)); BigDecimal needNum = num.subtract(new BigDecimal(count));
if (BigDecimal.ZERO.compareTo(needNum) == 0){ if (BigDecimal.ZERO.compareTo(needNum) == 0){

474
src/main/resources/mapper/material/ProductionStockMapper.xml

@ -1,183 +1,361 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.spring.modules.material.dao.ProductionStockMapper"> <mapper namespace="com.spring.modules.material.dao.ProductionStockMapper">
<select id="searchTransHeader" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT
TransNo,Site,WarehouseID,TransDate,TransType_DB transTypeDb,TransType,UserName,Receiver,TransYear,TransMonth,PartnerID,PartnerName,
PartnerType,AuthorizeFlag,AuthorizeDate,Authorizor,TransferFlag,TransferDate,TransferGuys,VoucherDate,ProjectID,
ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,UserName EnterBy,dbo.get_user_display(UserName) enterName
,dbo.get_user_display(Receiver) ReceiverName
<select id="searchTransHeader" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT TransNo,
Site,
WarehouseID,
TransDate,
TransType_DB transTypeDb,
TransType,
UserName,
Receiver,
TransYear,
TransMonth,
PartnerID,
PartnerName,
PartnerType,
AuthorizeFlag,
AuthorizeDate,
Authorizor,
TransferFlag,
TransferDate,
TransferGuys,
VoucherDate,
ProjectID,
ProjectName,
EnterDate,
Remark,
UseLocation,
OrderRef1,
LinkOrderFlag,
DelAddID,
Status,
UserName EnterBy,
dbo.get_user_display(UserName) enterName
,
dbo.get_user_display(Receiver) ReceiverName
FROM TransHeader FROM TransHeader
<where> <where>
site = #{query.site} site = #{query.site}
<if test = "query.orderRef1 != null and query.orderRef1 != ''">
<if test="query.orderRef1 != null and query.orderRef1 != ''">
AND OrderRef1 like #{query.orderRef1} AND OrderRef1 like #{query.orderRef1}
</if> </if>
<if test = "query.transTypeDb != null and query.transTypeDb != ''">
<if test="query.transTypeDb != null and query.transTypeDb != ''">
AND TransType_DB = #{query.transTypeDb} AND TransType_DB = #{query.transTypeDb}
</if> </if>
<if test = "query.startDate != null and query.startDate != ''">
<if test="query.startDate != null and query.startDate != ''">
AND TransDate >= #{query.startDate} AND TransDate >= #{query.startDate}
</if> </if>
<if test = "query.endDate != null and query.endDate != ''">
AND #{query.endDate}>=TransDate
<if test="query.endDate != null and query.endDate != ''">
AND #{query.endDate} >= TransDate
</if> </if>
</where>
order by TransDate desc
</where>
order by TransDate desc
</select> </select>
<select id="searchTransDetail" parameterType="TransHeaderData" resultType="TransDetailData">
SELECT
TransNo,Site,ItemNo,PartNo,LocationID,TransQty,Direction,BatchNo,OrderRef1,
OrderRef2,Remark,ManufactureDate,ExpiredDate,TransQty2,
wdr_no,enterDate,enterBy,dbo.get_part_desc(Site,PartNo) partDesc,dbo.get_user_display(enterBy) enterName
FROM TransDetail
where site=#{site} and TransNo=#{transNo}
order by enterDate desc
</select>
<select id="searchTransDetailSub" parameterType="TransHeaderData" resultType="TransDetailSubData">
SELECT
a.TransNo,a.Site,a.SeqNo,a.itemNo,a.LocationID,a.BatchNo,a.BoxNo,a.RollNo,a.RollQty,a.orderRef1,a.orderRef2,
a.remark,b.EnterDate,b.enterBy,dbo.get_user_display(b.enterBy) enterName,b.ManufactureDate,b.ExpiredDate
FROM TransDetailsub a left join TransDetail b on a.Site=b.site and a.TransNo=b.TransNo and a.itemNo=b.ItemNo
where a.site=#{site} and a.TransNo=#{transNo}
order by b.EnterDate desc
</select>
<select id="getWareHouseList" parameterType="WareHouseSearchOutData" resultType="WareHouseSearchOutData">
SELECT
site,warehouse_id wareHouseId,warehouse_name wareHouseName
FROM warehouse
where site=#{site} and active='Y'
</select>
<select id="searchTransHeaderData" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT top 1
TransNo,Site,WarehouseID,TransDate,Receiver,PartnerID,PartnerName,
PartnerType,AuthorizeFlag,AuthorizeDate,Authorizor,TransferFlag,TransferDate,TransferGuys,VoucherDate,ProjectID,
ProjectName,EnterDate,Remark,UseLocation,OrderRef1,LinkOrderFlag,DelAddID,Status,dbo.get_user_display(Receiver) receiverName
FROM TransHeader
where site=#{site} and TransNo=#{transNo}
</select>
<select id="searchTransDetailsubCachData" parameterType="TransHeaderData" resultType="TransDetailsubCachData">
SELECT
Site,TransNo,PartNo,RollNo,RollQty,BatchNo,wdrNo,LocationID,ManufactureDate,ExpiredDate,enterBy,enterDate
,id,dbo.get_part_desc(Site,PartNo) partDesc,dbo.get_user_display(enterBy) enterByName
FROM TransDetailsub_cach
where site=#{site} and TransNo=#{transNo}
</select>
<insert id="saveIssureCach" parameterType="TransDetailsubCachData" >
insert into TransDetailsub_cach(Site,TransNo,PartNo,RollNo,RollQty,BatchNo,wdrNo,LocationID,ManufactureDate,
ExpiredDate,enterBy,enterDate)
values(#{site},#{transNo},#{partNo},#{rollNo},#{rollQty},#{batchNo},#{wdrNo},#{locationID},#{manufactureDate},
#{expiredDate},#{enterBy},GetDate())
</insert>
<select id="getDetailDataByCach" resultType="TransDetailData">
SELECT
a.site,a.TransNo,a.PartNo,a.LocationID,sum(a.RollQty) as TransQty,'+' as Direction,a.BatchNo,b.OrderRef1,'N' as VitualPartFlag,a.ManufactureDate,a.ExpiredDate,
0 as StandCost,0 as ActualCost,0 as Price,0 as Freight,0 as Duty,sum(a.RollQty) as TransQty2,enterBy,wdrNo
FROM TransDetailsub_cach a left join TransHeader b on a.Site=b.Site and a.TransNo=b.transNo
WHERE a.site=#{site} and a.TransNo=#{transNo}
GROUP BY a.site,a.TransNo,a.PartNo,a.LocationID,a.BatchNo,b.OrderRef1,a.ManufactureDate,a.ExpiredDate,A.enterBy,a.wdrNo
</select>
<select id="getNextTransHeaderSeqNo" resultType="Double">
select isnull(max(itemNo),0)+1
from TransDetail where TransNo=#{transNo} and site=#{site}
</select>
<insert id="saveTransDetailData" parameterType="TransDetailData" >
insert into TransDetail(TransNo,Site,ItemNo,PartNo,LocationID,TransQty,Direction,BatchNo,StandCost,
ActualCost,Price,Freight,Duty,OrderRef1,VitualPartFlag,ManufactureDate,
ExpiredDate,TransQty2,wdr_no,enterDate,enterBy)
values(#{transNo},#{site},#{itemNo,jdbcType=DOUBLE},#{partNo},#{locationID},#{transQty},#{direction},#{batchNo},#{standCost},
#{actualCost},#{price},#{freight},#{duty},#{orderRef1},#{vitualPartFlag},#{manufactureDate},
#{expiredDate},#{transQty2},#{wdrNo},GetDate(),#{enterBy})
</insert>
<insert id="batchInsertTransDetailSub">
insert into TransDetailsub
(TransNo,Site,SeqNo,itemNo,LocationID,BatchNo,BoxNo,RollNo,RollQty,orderRef1) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.transNo}, #{item.site}, #{item.seqNo}, #{item.itemNo}, #{item.locationID}, #{item.batchNo},#{item.boxNo,jdbcType=VARCHAR}, #{item.rollNo,jdbcType=VARCHAR}, #{item.rollQty}, #{item.orderRef1})
</foreach>
</insert>
<delete id="deleteTransCach">
delete from TransDetailsub_cach where TransNo=#{transNo} and site=#{site}
</delete>
<select id="deleteSubCach" >
delete from TransDetailsub_cach where id=#{id}
</select>
<delete id="deleteTransHeaderData">
delete from transHeader where site=#{site} and transNo=#{transNo}
</delete>
<update id="updateTransHeader">
update transHeader set WarehouseID=#{warehouseID} ,PartnerID=#{partnerID},Receiver=#{receiver},orderRef1=#{orderRef1},transDate=#{transDate} where site=#{site} and transNo=#{transNo}
</update>
<select id="checkTransDetailSubIsScan" resultType="TransDetailSubData">
select site,transNo from TransDetailsub_cach where site=#{site} and RollNo=#{rollNo}
</select>
<select id="getFinalRoll" resultType="SoFinalRollOutData">
select id,site,order_no,part_no,seq_no,final_roll_no,roll_qty,status_code,status,created_by,created_date,label_date,manufacture_date,expired_date
from so_final_roll where site=#{site} and final_roll_no=#{rollNo}
</select>
<update id="updateFinalRollStatus">
update so_final_roll set status_code=#{statusCode,jdbcType=INTEGER},status=#{status}
where site=#{site} and final_roll_no=#{rollNo}
</update>
<select id="soFinalRollSearch" parameterType="SoFinalRollOutData" resultType="SoFinalRollOutData">
SELECT
id,site,order_no,part_no,seq_no,final_roll_no,roll_qty,status_code,status,created_by,created_date,label_date,fqc_date,
fqc_by,manufacture_date,rm_roll_no,dbo.get_part_desc(site,part_no) partDesc,dbo.get_user_display(created_by) createdByName
<select id="searchTransDetail" parameterType="TransHeaderData" resultType="TransDetailData">
SELECT TransNo,
Site,
ItemNo,
PartNo,
LocationID,
TransQty,
Direction,
BatchNo,
OrderRef1,
OrderRef2,
Remark,
ManufactureDate,
ExpiredDate,
TransQty2,
wdr_no,
enterDate,
enterBy,
dbo.get_part_desc(Site, PartNo) partDesc,
dbo.get_user_display(enterBy) enterName
FROM TransDetail
where site = #{site}
and TransNo = #{transNo}
order by enterDate desc
</select>
<select id="searchTransDetailSub" parameterType="TransHeaderData" resultType="TransDetailSubData">
SELECT a.TransNo,
a.Site,
a.SeqNo,
a.itemNo,
a.LocationID,
a.BatchNo,
a.BoxNo,
a.RollNo,
a.RollQty,
a.orderRef1,
a.orderRef2,
a.remark,
b.EnterDate,
b.enterBy,
dbo.get_user_display(b.enterBy) enterName,
b.ManufactureDate,
b.ExpiredDate
FROM TransDetailsub a
left join TransDetail b on a.Site = b.site and a.TransNo = b.TransNo and a.itemNo = b.ItemNo
where a.site = #{site}
and a.TransNo = #{transNo}
order by b.EnterDate desc
</select>
<select id="getWareHouseList" parameterType="WareHouseSearchOutData" resultType="WareHouseSearchOutData">
SELECT site,
warehouse_id wareHouseId,
warehouse_name wareHouseName
FROM warehouse
where site = #{site}
and active = 'Y'
</select>
<select id="searchTransHeaderData" parameterType="TransHeaderData" resultType="TransHeaderData">
SELECT top 1 TransNo,
Site,
WarehouseID,
TransDate,
Receiver,
PartnerID,
PartnerName,
PartnerType,
AuthorizeFlag,
AuthorizeDate,
Authorizor,
TransferFlag,
TransferDate,
TransferGuys,
VoucherDate,
ProjectID,
ProjectName,
EnterDate,
Remark,
UseLocation,
OrderRef1,
LinkOrderFlag,
DelAddID,
Status,
dbo.get_user_display(Receiver) receiverName
FROM TransHeader
where site = #{site}
and TransNo = #{transNo}
</select>
<select id="searchTransDetailsubCachData" parameterType="TransHeaderData" resultType="TransDetailsubCachData">
SELECT Site
, TransNo
, PartNo
, RollNo
, RollQty
, BatchNo
, wdrNo
, LocationID
, ManufactureDate
, ExpiredDate
, enterBy
, enterDate
, id
, dbo.get_part_desc(Site, PartNo) partDesc
, dbo.get_user_display(enterBy) enterByName
FROM TransDetailsub_cach
where site = #{site}
and TransNo = #{transNo}
</select>
<insert id="saveIssureCach" parameterType="TransDetailsubCachData">
insert into TransDetailsub_cach(Site, TransNo, PartNo, RollNo, RollQty, BatchNo, wdrNo, LocationID,
ManufactureDate,
ExpiredDate, enterBy, enterDate)
values (#{site}, #{transNo}, #{partNo}, #{rollNo}, #{rollQty}, #{batchNo}, #{wdrNo}, #{locationID},
#{manufactureDate},
#{expiredDate}, #{enterBy}, GetDate())
</insert>
<select id="getDetailDataByCach" resultType="TransDetailData">
SELECT a.site,
a.TransNo,
a.PartNo,
a.LocationID,
sum(a.RollQty) as TransQty,
'+' as Direction,
a.BatchNo,
b.OrderRef1,
'N' as VitualPartFlag,
a.ManufactureDate,
a.ExpiredDate,
0 as StandCost,
0 as ActualCost,
0 as Price,
0 as Freight,
0 as Duty,
sum(a.RollQty) as TransQty2,
enterBy,
wdrNo
FROM TransDetailsub_cach a
left join TransHeader b on a.Site = b.Site and a.TransNo = b.transNo
WHERE a.site = #{site}
and a.TransNo = #{transNo}
GROUP BY a.site, a.TransNo, a.PartNo, a.LocationID, a.BatchNo, b.OrderRef1, a.ManufactureDate, a.ExpiredDate,
A.enterBy, a.wdrNo
</select>
<select id="getNextTransHeaderSeqNo" resultType="Double">
select isnull(max(itemNo), 0) + 1
from TransDetail
where TransNo = #{transNo}
and site = #{site}
</select>
<insert id="saveTransDetailData" parameterType="TransDetailData">
insert into TransDetail(TransNo, Site, ItemNo, PartNo, LocationID, TransQty, Direction, BatchNo, StandCost,
ActualCost, Price, Freight, Duty, OrderRef1, VitualPartFlag, ManufactureDate,
ExpiredDate, TransQty2, wdr_no, enterDate, enterBy)
values (#{transNo}, #{site}, #{itemNo,jdbcType=DOUBLE}, #{partNo}, #{locationID}, #{transQty}, #{direction},
#{batchNo}, #{standCost},
#{actualCost}, #{price}, #{freight}, #{duty}, #{orderRef1}, #{vitualPartFlag}, #{manufactureDate},
#{expiredDate}, #{transQty2}, #{wdrNo}, GetDate(), #{enterBy})
</insert>
<insert id="batchInsertTransDetailSub">
insert into TransDetailsub
(TransNo, Site, SeqNo, itemNo, LocationID, BatchNo, BoxNo, RollNo, RollQty, orderRef1) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.transNo}, #{item.site}, #{item.seqNo}, #{item.itemNo}, #{item.locationID}, #{item.batchNo},
#{item.boxNo,jdbcType=VARCHAR}, #{item.rollNo,jdbcType=VARCHAR}, #{item.rollQty}, #{item.orderRef1})
</foreach>
</insert>
<delete id="deleteTransCach">
delete
from TransDetailsub_cach
where TransNo = #{transNo}
and site = #{site}
</delete>
<select id="deleteSubCach">
delete
from TransDetailsub_cach
where id = #{id}
</select>
<delete id="deleteTransHeaderData">
delete
from transHeader
where site = #{site}
and transNo = #{transNo}
</delete>
<update id="updateTransHeader">
update transHeader
set WarehouseID=#{warehouseID},
PartnerID=#{partnerID},
Receiver=#{receiver},
orderRef1=#{orderRef1},
transDate=#{transDate}
where site = #{site}
and transNo = #{transNo}
</update>
<select id="checkTransDetailSubIsScan" resultType="TransDetailSubData">
select site, transNo
from TransDetailsub_cach
where site = #{site}
and RollNo = #{rollNo}
</select>
<select id="getFinalRoll" resultType="SoFinalRollOutData">
select id,
site,
order_no,
part_no,
seq_no,
final_roll_no,
roll_qty,
status_code,
status,
created_by,
created_date,
label_date,
manufacture_date,
expired_date
from so_final_roll
where site = #{site}
and final_roll_no = #{rollNo}
</select>
<update id="updateFinalRollStatus">
update so_final_roll
set status_code=#{statusCode,jdbcType=INTEGER},
status=#{status}
where site = #{site}
and final_roll_no = #{rollNo}
</update>
<select id="soFinalRollSearch" parameterType="SoFinalRollOutData" resultType="SoFinalRollOutData">
SELECT id,
site,
order_no,
part_no,
seq_no,
final_roll_no,
roll_qty,
status_code,
status,
created_by,
created_date,
label_date,
fqc_date,
fqc_by,
manufacture_date,
rm_roll_no,
dbo.get_part_desc(site, part_no) partDesc,
dbo.get_user_display(created_by) createdByName
FROM so_final_roll FROM so_final_roll
<where> <where>
site = #{query.site} site = #{query.site}
<if test = "query.partNo != null and query.partNo != ''">
<if test="query.partNo != null and query.partNo != ''">
AND part_no like #{query.partNo} AND part_no like #{query.partNo}
</if> </if>
<if test = "query.seqNo != null and query.seqNo != ''">
<if test="query.seqNo != null and query.seqNo != ''">
AND seq_no like #{query.seqNo} AND seq_no like #{query.seqNo}
</if> </if>
<if test = "query.orderNo != null and query.orderNo != ''">
<if test="query.orderNo != null and query.orderNo != ''">
AND order_no like #{query.orderNo} AND order_no like #{query.orderNo}
</if> </if>
<if test = "query.finalRollNo != null and query.finalRollNo != ''">
<if test="query.finalRollNo != null and query.finalRollNo != ''">
AND final_roll_no like #{query.finalRollNo} AND final_roll_no like #{query.finalRollNo}
</if> </if>
<if test = "query.statusCode != null ">
<if test="query.statusCode != null">
AND status_code = #{query.statusCode} AND status_code = #{query.statusCode}
</if> </if>
<if test = "query.startDate != null and query.startDate != ''">
<if test="query.startDate != null and query.startDate != ''">
AND manufacture_date >= #{query.startDate} AND manufacture_date >= #{query.startDate}
</if> </if>
<if test = "query.endDate != null and query.endDate != ''">
AND #{query.endDate}>=manufacture_date
<if test="query.endDate != null and query.endDate != ''">
AND #{query.endDate} >= manufacture_date
</if> </if>
</where>
</where>
</select> </select>
<select id="getRollBySysBatch" resultType="SoFinalRollOutData">
select site,order_no,part_no,roll_qty,status_code,created_date,final_roll_no,manufacture_date,status from so_final_roll
where site=#{site} and system_batch_no=#{systemBatchNo}
</select>
<select id="getRollBySysBatch" resultType="SoFinalRollOutData">
select site,
order_no,
part_no,
roll_qty,
status_code,
created_date,
final_roll_no,
manufacture_date,
status
from so_final_roll
where site = #{site}
and system_batch_no = #{systemBatchNo}
</select>
</mapper> </mapper>
Loading…
Cancel
Save