Ver Fonte

入库明细报表和调整单作废

songyang há 2 anos atrás
pai
commit
928c7f6ab6

+ 12 - 4
src/main/java/com/dk/mdm/controller/ivt/TransferController.java

@@ -9,11 +9,8 @@ import com.dk.mdm.model.response.ivt.TransferResponse;
 import com.dk.mdm.model.vo.ivt.CheckVO;
 import com.dk.mdm.model.vo.ivt.TransferVO;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RestController;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.ivt.TransferService;
 
@@ -50,4 +47,15 @@ public class TransferController{
     public ResponseResultVO<?> insert(@RequestBody TransferVO transferVO) {
         return transferService.insert(transferVO);
     }
+
+    /**
+     * @desc   : 作废
+     * @author : 宋扬
+     * @date   : 2024/4/15 16:27
+     */
+    @ApiOperation(value = "作废", notes = "作废")
+    @PostMapping({"invalid/{id}"})
+    public ResponseResultVO<?> invalid(@PathVariable String id) {
+        return transferService.invalid(id);
+    }
 }

+ 213 - 1
src/main/java/com/dk/mdm/mapper/report/ReportMapper.xml

@@ -383,6 +383,116 @@
         </where>
     </sql>
 
+    <!-- 入库明细报表明细条件列 -->
+    <sql id="Condition_IntoboundDetailReport">
+        <where>
+            <if test="cpId != null">
+                AND t.cp_id = #{cpId}
+            </if>
+            <if test="outNo != null and outNo != ''">
+                AND t.out_no LIKE concat('%',my_ex.likequery(#{outNo}),'%')
+            </if>
+            <if test="supIdlist != null and supIdlist.size()>0">
+                AND t.sup_id = any(#{supIdlist,typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="contactPhone != null and contactPhone != ''">
+                AND t.contact_phone LIKE concat('%',my_ex.likequery(#{contactPhone}),'%')
+            </if>
+            <if test="outTypeList != null and outTypeList.size()>0">
+                AND t.out_type =any(#{outTypeList,typeHandler=StringListTypeHandler})
+            </if>
+            <if test="fromNo != null and fromNo != ''">
+                AND t.from_no LIKE concat('%',my_ex.likequery(#{fromNo}),'%')
+            </if>
+            <if test="cusName != null and cusName != ''">
+                AND tmc.cus_name LIKE concat('%',my_ex.likequery(#{cusName}),'%')
+            </if>
+            <if test="orgIdList != null and orgIdList.size() > 0">
+                AND t.org_id  =any(#{orgIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="staffIdList != null and staffIdList.size() > 0">
+                AND t.staff_id  =any(#{staffIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="outStatusList != null and outStatusList.size() > 0">
+                AND t.out_status  =any(#{outStatusList, typeHandler=StringListTypeHandler})
+            </if>
+            <if test="outDateStart != null and outDateEnd != null">
+                AND t.out_date &gt;= #{outDateStart}::timestamp with time zone
+                AND t.out_date &lt; #{outDateEnd}::timestamp with time zone + interval '1 day'
+            </if>
+            <if test="makeTimeStart != null and makeTimeEnd != null">
+                AND t.make_time &gt;= #{makeTimeStart}::timestamp with time zone
+                AND t.make_time &lt; #{makeTimeEnd}::timestamp with time zone + interval '1 day'
+            </if>
+            <if test="goodsSeriesList != null  and goodsSeriesList.size()>0">
+                AND tmgs.series_id =
+                any(#{goodsSeriesList,typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="goodsCategoryList != null  and goodsCategoryList.size()>0">
+                AND tmgs.category_id =
+                any(#{goodsCategoryList,typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="goodsBrandList != null  and goodsBrandList.size()>0">
+                AND tmgs.brand_id =
+                any(#{goodsBrandList,typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="skuName != null and skuName != ''">
+                AND tmgs.sku_name like concat('%', my_ex.likequery(#{skuName}) , '%')
+            </if>
+            <if test="skuModel != null and skuModel != ''">
+                AND tmgs.sku_model like concat('%', my_ex.likequery(#{skuModel}) , '%')
+            </if>
+            <if test="whList != null  and whList.size()>0">
+                AND tpi.wh_id =
+                any(#{whList,typeHandler=UuidListTypeHandler})
+            </if>
+        </where>
+    </sql>
+
+    <!-- 入库明细报表主表条件列 -->
+    <sql id="Condition_IntoboundReport">
+        <where>
+            <if test="cpId != null">
+                AND t.cp_id = #{cpId}
+            </if>
+            <if test="outNo != null and outNo != ''">
+                AND t.out_no LIKE concat('%',my_ex.likequery(#{outNo}),'%')
+            </if>
+            <if test="supIdlist != null and supIdlist.size()>0">
+                AND t.sup_id = any(#{supIdlist,typeHandler=UuidListTypeHandler})
+            </if>
+            <if test="contactPhone != null and contactPhone != ''">
+                AND t.contact_phone LIKE concat('%',my_ex.likequery(#{contactPhone}),'%')
+            </if>
+            <if test="outTypeList != null and outTypeList.size()>0">
+                AND t.out_type =any(#{outTypeList,typeHandler=StringListTypeHandler})
+            </if>
+            <if test="fromNo != null and fromNo != ''">
+                AND t.from_no LIKE concat('%',my_ex.likequery(#{fromNo}),'%')
+            </if>
+            <if test="cusName != null and cusName != ''">
+                AND tmc.cus_name LIKE concat('%',my_ex.likequery(#{cusName}),'%')
+            </if>
+            <if test="orgIdList != null and orgIdList.size() > 0">
+                AND t.org_id  =any(#{orgIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="staffIdList != null and staffIdList.size() > 0">
+                AND t.staff_id  =any(#{staffIdList, typeHandler=uuidListTypeHandler})
+            </if>
+            <if test="outStatusList != null and outStatusList.size() > 0">
+                AND t.out_status  =any(#{outStatusList, typeHandler=StringListTypeHandler})
+            </if>
+            <if test="outDateStart != null and outDateEnd != null">
+                AND t.out_date &gt;= #{outDateStart}::timestamp with time zone
+                AND t.out_date &lt; #{outDateEnd}::timestamp with time zone + interval '1 day'
+            </if>
+            <if test="makeTimeStart != null and makeTimeEnd != null">
+                AND t.make_time &gt;= #{makeTimeStart}::timestamp with time zone
+                AND t.make_time &lt; #{makeTimeEnd}::timestamp with time zone + interval '1 day'
+            </if>
+        </where>
+    </sql>
+
     <!-- 采购明细报表主表 -->
     <select id="getPurReport" resultType="java.util.Map">
         select
@@ -686,7 +796,109 @@
         left join dkic_b.t_mst_goods_series as series on series.series_id = tmgs.series_id
         left join dkic_b.t_psi_inventory as tpi on tpi.inv_id = tpoi.inv_id
         left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
-        <include refid="Condition_OrdDetailReport"/>
+        <include refid="Condition_OutboundDetailReport"/>
+        order by  tpoi.op_create_time desc
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 入库明细报表主表 -->
+    <select id="getInboundlReport" resultType="java.util.Map">
+        SELECT
+        t.into_no                                           as "intoNo",
+        t.from_no                                            as "fromNo",
+        tmo.org_name                                        as "orgName",
+        tms.staff_name                                      as "staffName",
+        tmc.cus_name                                        as "cusName",
+        tmc.cus_phone                                        as "cusPhone",
+        tmc.cus_from                                        as "cusFrom",
+        tmc.contact_phone                                   as "contactPhone",
+        tmc.address_full                                     as "addressFull",
+        tmdd.data_value                                      as cus_from_name,
+        tmp.sup_name                                         as "supplierName",
+        sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n})   as "intoStatusName",
+        sys.f_get_name_i18n(tdktype.kind_name_i18n, #{i18n}) as  "intoTypeName",
+        t.intoing_qty                                        as "intoingQtySum",
+        t.intoing_amt                                        as "intoingAmtSum",
+        t.into_qty                                          as "intoQtySum",
+        t.into_amt                                           as "intoAmtSum",
+        t.return_qty                                        as "returnintoQtySum",
+        t.return_amt                                        as "returnintoAmtSum",
+        t.into_date                                         as "intoDate",
+        tmw.wh_name                                        as "whName",
+        t.remarks,
+        makestaff.staff_name                                as "makeStaffName"
+        FROM dkic_b.t_psi_inbound as t
+        left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = t.sup_id
+        left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
+        left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
+        left join dkic_b.t_mst_customer tmc on tmc.cus_id = t.cus_id
+        left join dkic_b.t_mst_dictionary_data tmdd on tmdd.data_id = tmc.cus_from
+        left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.into_status
+        left join sys.t_data_kind tdktype   ON tdktype.kind_code = t.into_type
+        left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = t.wh_id
+        <include refid="Condition_IntoboundReport"/>
+        order by  t.op_create_time desc
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 入库明细报表明细 -->
+    <select id="getInboundDetailReport" resultType="java.util.Map">
+        select
+        t.into_no                                           as "intoNo"
+        ,t.from_no                                            as "fromNo"
+        ,tmo.org_name                                        as "orgName"
+        ,tms.staff_name                                      as "staffName"
+        ,tmc.cus_name                                        as "cusName"
+        ,tmc.cus_phone                                        as "cusPhone"
+        ,tmc.cus_from                                        as "cusFrom"
+        ,tmc.contact_phone                                   as "contactPhone"
+        ,tmc.address_full                                     as "addressFull"
+        ,tmdd.data_value                                      as cus_from_name
+        ,tmp.sup_name                                         as "supplierName"
+        ,sys.f_get_name_i18n(tdk1.kind_name_i18n, #{i18n})   as "intoStatusName"
+        ,sys.f_get_name_i18n(tdktype.kind_name_i18n, #{i18n}) as  "intoTypeName"
+        ,t.intoing_qty                                        as "intoingQtySum"
+        ,t.intoing_amt                                        as "intoingAmtSum"
+        ,t.into_qty                                          as "intoQtySum"
+        ,t.into_amt                                           as "intoAmtSum"
+        ,t.return_qty                                        as "returnInQtySum"
+        ,t.return_amt                                        as "returnInAmtSum"
+        ,t.into_date                                         as "intoDate"
+        ,t.remarks
+        ,makestaff.staff_name                               as "makeStaffName"
+        ,tmgs.sku_name                                      as "skuName"
+        ,tmgs.sku_model                                     as "skuModel"
+        ,tpi.non_std_code                                   as "nonStdCode"
+        ,tmgb.short_name                                    as "shortName"
+        ,tmgc.cat_name                                      as "catName"
+        ,series.series_name                                 as "seriesName"
+        ,tpoi.intoing_qty                                    as "intoingQty"
+        ,tpoi.intoing_amt                                    as "intoingAmt"
+        ,tpoi.into_qty                                       as "intoQty"
+        ,tpoi.into_amt                                       as "intoAmt"
+        ,tpoi.return_qty                                    as "returnQty"
+        ,tpoi.return_amt                                    as "returnAmt"
+        FROM dkic_b.t_psi_inbound as t
+        left join dkic_b.t_mst_org tmo on tmo.org_id = t.org_id
+        Left join dkic_b.t_mst_supplier tmp on tmp.sup_id = t.sup_id
+        left join dkic_b.t_mst_staff tms on tms.staff_id = t.staff_id
+        left join dkic_b.t_mst_staff as makestaff on makestaff.staff_id = t.make_staff
+        left join dkic_b.t_mst_customer tmc on tmc.cus_id = t.cus_id
+        left join dkic_b.t_mst_dictionary_data tmdd on tmdd.data_id = tmc.cus_from
+        left join sys.t_data_kind as tdk1 on tdk1.kind_code = t.into_status
+        LEFT JOIN sys.t_data_kind tdktype   ON tdktype.kind_code = t.into_type
+        left join dkic_b.t_psi_inbound_item as tpoi on tpoi.into_id = t.into_id
+        left join dkic_b.t_mst_goods_sku as tmgs on tmgs.sku_id = tpoi.sku_id
+        left join dkic_b.t_mst_goods_brand as tmgb on tmgb.brand_id = tmgs.brand_id
+        left join dkic_b.t_mst_goods_category as tmgc on tmgc.cat_id = tmgs.category_id
+        left join dkic_b.t_mst_goods_series as series on series.series_id = tmgs.series_id
+        left join dkic_b.t_psi_inventory as tpi on tpi.inv_id = tpoi.inv_id
+        <include refid="Condition_IntoboundDetailReport"/>
         order by  tpoi.op_create_time desc
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}

+ 36 - 6
src/main/java/com/dk/mdm/service/ivt/TransferService.java

@@ -1,8 +1,12 @@
 package com.dk.mdm.service.ivt;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.ivt.TransferConvert;
@@ -16,6 +20,9 @@ import com.dk.mdm.mapper.ivt.TransferMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.ivt.TransferItem;
+import com.dk.mdm.model.pojo.mac.RecPay;
+import com.dk.mdm.model.pojo.mac.RecPayItem;
+import com.dk.mdm.model.pojo.sale.Order;
 import com.dk.mdm.model.query.ivt.TransferQuery;
 import com.dk.mdm.model.response.ivt.InboundItemResponse;
 import com.dk.mdm.model.response.ivt.TransferResponse;
@@ -134,8 +141,8 @@ public class TransferService extends BaseService<Transfer> {
 				BigDecimal transferQtySum = transferVO.getItemList().stream().map(TransferItemVO::getTransferQty).reduce(BigDecimal.ZERO, BigDecimal::add)
 						.setScale(6, BigDecimal.ROUND_HALF_UP);
 				// 计算总入库金额
-				BigDecimal intoingAmtSum = transferVO.getItemList().stream().map(TransferItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
-						.setScale(6, BigDecimal.ROUND_HALF_UP);
+				/*BigDecimal intoingAmtSum = transferVO.getItemList().stream().map(TransferItemVO::getIntoingAmt).reduce(BigDecimal.ZERO, BigDecimal::add)
+						.setScale(6, BigDecimal.ROUND_HALF_UP);*/
 				// 获取入库表实体
 				InboundVO inboundVO = new InboundVO();
 				List<InboundItem> inboundItemList=new ArrayList<>();
@@ -149,7 +156,7 @@ public class TransferService extends BaseService<Transfer> {
 							.setMakeStaff(transferVO.getMakeStaff()).setIntoingQty(transferQtySum)
 							.setFromId(transfer.getTransferId()).setFromNo(transfer.getTransferNo())
 							.setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(transferVO.getWhId())
-							.setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum)
+							.setFlgAutoHandle(true).setIntoingAmt(BigDecimal.ZERO)
 							.setIntoType(Constant.IntoType.REMOVE.getName());
 					// 赋值出库实体
 					outboundVO.setOrgId(transferVO.getOrgId()).setStaffId(transferVO.getStaffId())
@@ -162,7 +169,7 @@ public class TransferService extends BaseService<Transfer> {
 						// 赋值入库明细实体
 						InboundItem inboundItem=new InboundItem();
 						inboundItem.setIntoingQty(transferItemVO.getTransferQty()).setFromId(transfer.getTransferId())
-								.setIntoingAmt(transferItemVO.getIntoingAmt()).setPriceInto(transferItemVO.getPriceInto())
+								.setIntoingAmt(BigDecimal.ZERO).setPriceInto(BigDecimal.ZERO).setIntoId(transferItemVO.getInvId())
 								.setWhId(transferItemVO.getWhId()).setSkuId(transferItemVO.getSkuId())
 								.setNonStdCode(transferItemVO.getONonStdCode()).setItemIndex(transferItemVO.getItemIndex());
 						inboundItemList.add(inboundItem);
@@ -213,7 +220,7 @@ public class TransferService extends BaseService<Transfer> {
 							.setMakeStaff(transferVO.getMakeStaff()).setIntoingQty(transferQtySum)
 							.setFromId(transfer.getTransferId()).setFromNo(transfer.getTransferNo())
 							.setMakeTime(LocalDateTime.now()).setIntoDate(LocalDate.now()).setWhId(transferVO.getOWhId())
-							.setFlgAutoHandle(true).setIntoingAmt(intoingAmtSum)
+							.setFlgAutoHandle(true).setIntoingAmt(BigDecimal.ZERO)
 							.setIntoStatus(Constant.InventoryDocCode.MOVE.getTableName());
 					// 赋值出库实体
 					outboundVO.setOrgId(transferVO.getOrgId()).setStaffId(transferVO.getStaffId())
@@ -226,7 +233,7 @@ public class TransferService extends BaseService<Transfer> {
 						// 赋值入库明细实体
 						InboundItem inboundItem=new InboundItem();
 						inboundItem.setIntoingQty(transferItemVO.getTransferQty()).setFromId(transfer.getTransferId())
-								.setIntoingAmt(transferItemVO.getIntoingAmt()).setPriceInto(transferItemVO.getPriceInto())
+								.setIntoingAmt(BigDecimal.ZERO).setPriceInto(BigDecimal.ZERO).setIntoId(transferItemVO.getInvId())
 								.setWhId(transferItemVO.getOWhId()).setSkuId(transferItemVO.getSkuId())
 								.setNonStdCode(transferItemVO.getNonStdCode()).setItemIndex(transferItemVO.getItemIndex());
 						inboundItemList.add(inboundItem);
@@ -279,4 +286,27 @@ public class TransferService extends BaseService<Transfer> {
 
 	}
 
+	/**
+	 * @desc   : 作废
+	 * @author : 宋扬
+	 * @date   : 2024/4/15 16:28
+	 */
+	public ResponseResultVO<?> invalid(String id) {
+		Transfer transferForUpdate = transferMapper.selectByIdForUpdate(id);
+		// 并发校验
+		if (!transferForUpdate.getFlgValid()) {
+			throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
+		}
+
+		// 作废
+		Transfer transferUpdate = new Transfer();
+		transferUpdate.setFlgValid(false).setTransferId(id);
+		super.updateByUuid(transferUpdate);
+
+		// 调用入库作废接口
+
+		// 调用出库作废接口
+
+		return ResponseResultUtil.success();
+	}
 }