Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

dongke 1 rok pred
rodič
commit
b89675e15f

+ 5 - 0
pom.xml

@@ -116,6 +116,11 @@
             <artifactId>weixin-java-miniapp</artifactId>
             <version>4.4.0</version>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.4.3</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 0 - 60
src/main/java/com/dk/mdm/config/XxlJobConfig.java

@@ -1,60 +0,0 @@
-package com.dk.mdm.config;
-
-import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @desc   : xxl-job config
- * @author : 洪旭东
- * @date   : 2022-05-13 15:44
- */
-@Configuration
-public class XxlJobConfig {
-    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
-
-    @Value("${xxl.job.admin.addresses}")
-    private String adminAddresses;
-
-    @Value("${xxl.job.accessToken}")
-    private String accessToken;
-
-    @Value("${xxl.job.executor.appname}")
-    private String appname;
-
-    @Value("${xxl.job.executor.address}")
-    private String address;
-
-    @Value("${xxl.job.executor.ip}")
-    private String ip;
-
-    @Value("${xxl.job.executor.port}")
-    private int port;
-
-    @Value("${xxl.job.executor.logpath}")
-    private String logPath;
-
-    @Value("${xxl.job.executor.logretentiondays}")
-    private int logRetentionDays;
-
-
-    @Bean
-    public XxlJobSpringExecutor xxlJobExecutor() {
-        logger.info(">>>>>>>>>>> xxl-job config init.");
-        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
-        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
-        xxlJobSpringExecutor.setAppname(appname);
-        xxlJobSpringExecutor.setAddress(address);
-        xxlJobSpringExecutor.setIp(ip);
-        xxlJobSpringExecutor.setPort(port);
-        xxlJobSpringExecutor.setAccessToken(accessToken);
-        xxlJobSpringExecutor.setLogPath(logPath);
-        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
-
-        return xxlJobSpringExecutor;
-    }
-
-}

+ 15 - 0
src/main/java/com/dk/mdm/controller/mst/CusFollowController.java

@@ -19,7 +19,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import com.dk.mdm.service.mst.CusFollowService;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.Map;
 
@@ -132,4 +138,13 @@ public class CusFollowController{
     public ResponseResultVO<?> testPush() {
         return cusFollowService.customerReminder();
     }
+
+
+    @ApiOperation(value = "小程序消息推送测试", notes = "小程序消息推送测试")
+    @GetMapping("wx_message_test")
+    @ResponseBody
+    public void wxMessageTest(HttpServletRequest request, HttpServletResponse response){
+        cusFollowService.wxMessageTest(request, response);
+    }
+
 }

+ 11 - 0
src/main/java/com/dk/mdm/controller/mst/StaffController.java

@@ -121,6 +121,17 @@ public class StaffController {
     }
 
     /**
+     * @desc : 更新员工的登录标识
+     * @author : 姜永辉
+     * @date : 2023/1/9 10:48
+     */
+    @ApiOperation(value = "更新员工的登录标识", notes = "更新员工的登录标识")
+    @PostMapping({"update_feign_staff_flg_can_login"})
+    public ResponseResultVO<?> updateFeignStaffFlgCanLogin(@RequestBody List<String> list) {
+        return staffService.updateFeignStaffFlgCanLogin(list);
+    }
+
+    /**
      * @desc : 注册商户时候插入  角色 基础资料(仓库 渠道 收入 支出 入库 出库 账户 来源 盈亏原因) 计量单位 种类  打印票据  等等。
      *         返回角色的数据
      * @author : 姜永辉

+ 1 - 1
src/main/java/com/dk/mdm/controller/report/ReportController.java

@@ -41,7 +41,7 @@ public class ReportController  {
             notes = "获取库存"
     )
     @PostMapping("get_ivt_detail_report")
-    public ResponseResultVO<List<Map<String, Object>>> getIvtDetailReport(@RequestBody Map<String, Object> param) {
+    public ResponseResultVO<PageList<Map<String, Object>>> getIvtDetailReport(@RequestBody Map<String, Object> param) {
         return reportService.getIvtDetailReport(param);
     }
 

+ 7 - 0
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.java

@@ -75,6 +75,13 @@ public interface StaffMapper extends BaseMapper<Staff>{
     boolean updateFlgInit(Map<String, Object> params);
 
     /**
+     * @desc : 更新员工的登录标识
+     * @author : 姜永辉
+     * @date : 2024/6/21 10:21
+     */
+    int updateFeignStaffFlgCanLogin(List<String> list);
+
+    /**
      * @desc : 通过用户id更新负责人
      * @author : 刘尧
      * @date : 2024/6/21 10:43

+ 5 - 0
src/main/java/com/dk/mdm/mapper/mst/StaffMapper.xml

@@ -263,6 +263,11 @@
         UPDATE dkic_b.t_mst_staff SET flg_init = false
         WHERE cp_id = #{cpId}
     </update>
+    <!--更新员工的登录标识 '登录系统(1:PC端,2:移动端,3:PC+移动端, 4:无) -->
+    <update id="updateFeignStaffFlgCanLogin">
+        UPDATE dkic_b.t_mst_staff SET flg_can_login = false ,login_type = 4
+        WHERE staff_id = any(#{list,typeHandler= UuidListTypeHandler})
+    </update>
     <!--通过用户id更新负责人-->
     <update id="updateFlgInitById">
         UPDATE dkic_b.t_mst_staff SET flg_init = true

+ 21 - 18
src/main/java/com/dk/mdm/mapper/mst/StaffRightMapper.xml

@@ -147,28 +147,31 @@
 
     <!-- 获取功能权限 -->
     <select id="getStaffRight" resultType="java.util.Map">
-        SELECT menu.menu_uuid                                                 AS "menuUuid",
-               menu.menu_uuid                                                 AS "id",
-               menu.menu_name                                                 AS "menuName",
-               menu.app_code                                                  AS "appCode",
-               menu.parent_uuid                                               AS "parentId",
-               menu.flg_menu                                                  AS "flgMenu",
-               staffRight.staff_id                                            AS "staffId",
-               menu.fun_uuid                                                  AS "funUuid",
-               CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END AS "checked"
+        SELECT menu.menu_uuid AS "menuUuid",
+        menu.menu_uuid AS "id",
+        menu.menu_name AS "menuName",
+        menu.app_code AS "appCode",
+        menu.parent_uuid AS "parentId",
+        menu.flg_menu AS "flgMenu",
+        staffRight.staff_id AS "staffId",
+        menu.fun_uuid AS "funUuid",
+        CASE WHEN staffRight.staff_id IS NULL THEN FALSE ELSE TRUE END AS "checked"
         FROM sys.t_app_menu menu
-            left JOIN dkic_b.t_mst_staff_right staffRight
+        left JOIN dkic_b.t_mst_staff_right staffRight
         ON menu.fun_uuid = staffRight.fun_uuid and staffRight.staff_id = #{staffId}::uuid
 
         WHERE menu.flg_valid
-          AND menu.flg_right
-          AND menu.object_code != 'home'
-            <if test="appCode != null">
-                AND menu.app_code = #{appCode}
-            </if>
-            <if test="searchText != null">
-                AND menu.menu_name  LIKE concat('%',my_ex.likequery(#{searchText}),'%')
-            </if>
+        AND menu.flg_right
+        AND menu.object_code != 'home'
+        <if test="appCode != null">
+            AND menu.app_code = #{appCode}
+        </if>
+        <if test="searchText != null">
+            AND menu.menu_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
+        </if>
+        <if test="gradeCode != null">
+            AND (menu.grade_codes is null OR #{gradeCode} = any(menu.grade_codes))
+        </if>
         ORDER BY menu.level_code;
     </select>
 

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

@@ -23,7 +23,7 @@ public interface ReportMapper extends BaseMapper<JSONObject> {
      * @date   : 2024/4/11 8:52
      */
     List<Map<String, Object>> getIvtDetailReport(Map param);
-
+    Long getIvtDetailReportCount(Map<String, Object> param);
 
     /**
      * @desc   : 采购明细表(主表)

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

@@ -63,6 +63,41 @@
         <if test="whId != null">
             AND tpi.wh_id = #{whId} ::uuid
         </if>
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+    <!--库存查询count-->
+    <select id="getIvtDetailReportCount" resultType="java.lang.Long">
+        SELECT count(1)
+        from dkic_b.t_psi_inventory as tpi
+        inner join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
+        inner join dkic_b.t_mst_goods_sku as tmgs on tmgs.sku_id = tpi.sku_id
+        left join dkic_b.t_mst_goods_brand as tmgb on tmgs.brand_id = tmgb.brand_id
+        left join dkic_b.t_mst_goods_category as tmgc on tmgs.category_id = tmgc.cat_id
+        left join dkic_b.t_mst_goods_series as tmgseries on tmgs.series_id = tmgseries.series_id
+        left join dkic_b.t_mst_unit as tmgu on tmgs.unit_id = tmgu.unit_id
+        where tpi.flg_valid
+        AND tpi.cp_id = #{cpId}
+        AND tpi.inv_qty != 0
+        <if test="skuId != null">
+            AND tpi.sku_id = #{skuId} ::uuid
+        </if>
+        <if test="nonStdCode != null">
+            AND tpi.non_std_code = #{nonStdCode}
+        </if>
+        <if test="skuCode != null">
+            AND tmgs.sku_code LIKE concat('%',my_ex.likequery(#{skuCode}),'%')
+        </if>
+        <if test="skuName != null">
+            AND tmgs.sku_name LIKE concat('%',my_ex.likequery(#{skuName}),'%')
+        </if>
+        <if test="whName != null">
+            AND tmgs.wh_name LIKE concat('%',my_ex.likequery(#{whName}),'%')
+        </if>
+        <if test="whId != null">
+            AND tpi.wh_id = #{whId} ::uuid
+        </if>
     </select>
     <!-- 采购明细报表明细条件列 -->
     <sql id="Condition_PurDetailReport">
@@ -2643,7 +2678,7 @@
     <!-- 资金日记账-->
     <select id="getFundReport" resultType="java.util.Map">
         SELECT *
-        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize},#{macId}::uuid)
+        FROM dkic_b.f_get_fund_report(#{accDateStart}::date,#{accDateEnd}::date,#{cpId},#{currentPage},#{pageSize},#{macIds, typeHandler=UuidListTypeHandler}::uuid[])
     </select>
 
     <!-- 销售简报-->

+ 1 - 0
src/main/java/com/dk/mdm/service/common/CommonService.java

@@ -746,6 +746,7 @@ public class CommonService extends BaseService<Map<String, Object>> {
         }
         //部门
         if (dataSourceCode.equals("org")) {
+            map.put("flgBusiness", param.get("flgBusiness"));
             list = commonMapper.getOrg(map);
         }
         //品牌

+ 5 - 4
src/main/java/com/dk/mdm/service/ivt/inbound/InboundOtherService.java

@@ -305,8 +305,8 @@ public class InboundOtherService extends BaseService<Inbound> {
                         inboundItemVO.setInventoryType(Constant.InventoryType.INBOUND.getName());
                         inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.OTHER_INBOUND.getValue());
                         //编辑之前的数
-                        inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty());
-                        inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt());
+                        inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty().subtract(inboundItemResponse.getReturnQty()));
+                        inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt().subtract(inboundItemResponse.getReturnAmt()));
                         //编辑之后的数
                         inboundItemVO.setIntoQty(inboundItemVO.getIntoingQty());
                         inboundItemVO.setIntoAmt(inboundItemVO.getIntoingAmt());
@@ -624,9 +624,10 @@ public class InboundOtherService extends BaseService<Inbound> {
                 inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.OTHER_INBOUND.getValue());
                 //编辑之前的数
                 if (inboundItemResponse.getIntoQty().compareTo(BigDecimal.ZERO) > 0) {
-                    inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty());
-                    inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt());
+                    inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty().subtract(inboundItemResponse.getReturnQty()));
+                    inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt().subtract(inboundItemResponse.getReturnAmt()));
                 }
+
                 inboundItemVO.setAddOrEditFlag(true);
                 //endregion
             }

+ 2 - 0
src/main/java/com/dk/mdm/service/ivt/inbound/InboundPurchaseReturnService.java

@@ -188,6 +188,7 @@ public class InboundPurchaseReturnService extends BaseService<Inbound> {
                     ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getMessage());
         }
         for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
+
             //region 将库存需要的参数赋值
             inboundItemVO.setInventoryType(Constant.InventoryType.INBOUND.getName());
             inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.PURCHASE_RETURN.getValue());
@@ -351,6 +352,7 @@ public class InboundPurchaseReturnService extends BaseService<Inbound> {
                 if (inboundVO.getDeleteItemList() != null && inboundVO.getDeleteItemList().size() > 0) {
                     for (InboundItemVO inboundItemVO : inboundVO.getDeleteItemList()) {
                         if (inboundItemVO.getItemId() != null) {
+
                             //region 将库存需要的参数赋值
                             inboundItemVO.setInventoryType(Constant.InventoryType.INBOUND.getName());
                             inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.PURCHASE_RETURN.getValue());

+ 5 - 5
src/main/java/com/dk/mdm/service/ivt/inbound/InboundPurchaseService.java

@@ -472,8 +472,8 @@ public class InboundPurchaseService extends BaseService<Inbound> {
                         inboundItemVO.setInventoryType(Constant.InventoryType.INBOUND.getName());
                         inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.PURCHASE_ORDER.getValue());
                         //编辑之前的数
-                        inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty());
-                        inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt());
+                        inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty().subtract(inboundItemResponse.getReturnQty()));
+                        inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt().subtract(inboundItemResponse.getReturnAmt()));
                         //编辑之后的数
                         inboundItemVO.setIntoQty(inboundItemVO.getIntoingQty());
                         inboundItemVO.setIntoAmt(inboundItemVO.getIntoingAmt());
@@ -773,7 +773,7 @@ public class InboundPurchaseService extends BaseService<Inbound> {
         for (String fromId : purchaseIntoItemVOListMap.keySet()) {
             //有需要删除的修改数据
             if(delPurchaseIntoItemVOListMap!=null  && delPurchaseIntoItemVOListMap.keySet().size()>0){
-                //库明细删除汇总循环
+                //库明细删除汇总循环
                 for (String delFromId : delPurchaseIntoItemVOListMap.keySet()) {
                     //新建入库明细来源Id = 删除入库明细来源Id
                     if (fromId.equals(delFromId)) {
@@ -1201,8 +1201,8 @@ public class InboundPurchaseService extends BaseService<Inbound> {
                 inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.PURCHASE_ORDER.getValue());
                 //编辑之前的数
                 if (inboundItemResponse.getIntoQty().compareTo(BigDecimal.ZERO) > 0) {
-                    inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty());
-                    inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt());
+                    inboundItemVO.setQtyBeforeUpdate(inboundItemResponse.getIntoQty().subtract(inboundItemResponse.getReturnQty()));
+                    inboundItemVO.setAmtBeforeUpdate(inboundItemResponse.getIntoAmt().subtract(inboundItemResponse.getReturnAmt()));
                 }
                 inboundItemVO.setAddOrEditFlag(true);
                 //endregion

+ 82 - 51
src/main/java/com/dk/mdm/service/ivt/inventory/InventoryService.java

@@ -144,6 +144,16 @@ public class InventoryService extends BaseService<Inventory> {
             inOutRecordVO.setAccDate(LocalDate.now());
             //可以输入负数标识  入库没有限制 所以这里给true 为了下面的校验库存
             inOutRecordVO.setCanNegativeFlag(true);
+            //重新赋值入库数量和入库金额要考虑到退货的情况
+            if (Constant.InventoryType.INBOUND.getName().equals(inOutRecordVO.getInventoryType()) &&
+                    !Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())
+            ) {
+                InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inOutRecordVO.getItemId());
+                if (inboundItemResponse != null && inboundItemResponse.getReturnQty() != null) {
+                    inOutRecordVO.setIntoQty(inOutRecordVO.getIntoQty().subtract(inboundItemResponse.getReturnQty()));
+                    inOutRecordVO.setIntoAmt(inOutRecordVO.getIntoAmt().subtract(inboundItemResponse.getReturnAmt()));
+                }
+            }
         }
         //region 校验是否传库存需要的数据
         this.checkInventory(inOutRecordVOList);
@@ -410,7 +420,7 @@ public class InventoryService extends BaseService<Inventory> {
                 if (delOutList.size() > 0) {
                     delOutList = delOutDetail.toJavaList(InOutRecordVO.class);
                     //赋值并校验库存流水数据
-                    delOutList = this.setInOutRecordMessageByInto(delOutList);
+                    delOutList = this.setInOutRecordMessageByOut(delOutList);
                     //库存相关反写
                     this.warehouseAdjustmentDelOut(delOutList);
                 } else {
@@ -912,6 +922,7 @@ public class InventoryService extends BaseService<Inventory> {
             //实体转换
             InOutRecord inOutRecordNeg = inOutRecordConvert.convertToPo(inOutRecordVO);
             //新建
+            inOutRecordNeg.setRecordId(null);
             inOutRecordMapper.insert(inOutRecordNeg);
 
             //新建正数流水
@@ -925,6 +936,7 @@ public class InventoryService extends BaseService<Inventory> {
             //业务单明细Id
             inOutRecord.setBiznisItemId(inOutRecordVO.getIntoItemId());
             //新建
+            inOutRecord.setRecordId(null);
             inOutRecordMapper.insert(inOutRecord);
 
         }
@@ -935,12 +947,20 @@ public class InventoryService extends BaseService<Inventory> {
                     (!Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode()) &&
                             Constant.InventoryType.INBOUND.getName().equals(inOutRecordVO.getInventoryType()))
             ) {
+                BigDecimal sumReturnQtyItem = BigDecimal.ZERO;
+                BigDecimal sumReturnAmtItem = BigDecimal.ZERO;
+                if (!Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())  &&
+                        !Constant.InventoryDocCode.SALE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode()) ) {
+                    InboundItemResponse inboundItemResponse = inboundItemMapper.selectById(inOutRecordVO.getBiznisItemId());
+                    sumReturnQtyItem = inboundItemResponse.getReturnQty();
+                    sumReturnAmtItem = inboundItemResponse.getReturnAmt();
+                }
                 //入库价
                 inOutRecordVO.setPriceInto(inOutRecordVO.getPriceInto().abs());
                 //入库数量
-                inOutRecordVO.setIntoQty(inOutRecordVO.getIntoQty().abs());
+                inOutRecordVO.setIntoQty(inOutRecordVO.getIntoQty().abs().add(sumReturnQtyItem));
                 //入库金额
-                inOutRecordVO.setIntoAmt(inOutRecordVO.getIntoAmt().abs());
+                inOutRecordVO.setIntoAmt(inOutRecordVO.getIntoAmt().abs().add(sumReturnAmtItem));
             }
             //endregion
 
@@ -950,7 +970,7 @@ public class InventoryService extends BaseService<Inventory> {
                             Constant.InventoryType.OUTBOUND.getName().equals(inOutRecordVO.getInventoryType()))
             ) {
                 //入库价
-                inOutRecordVO.setPriceInto(inOutRecordVO.getPriceInto().abs().negate());
+                inOutRecordVO.setPriceInto(inOutRecordVO.getPriceInto().abs());
                 //入库数量
                 inOutRecordVO.setIntoQty(inOutRecordVO.getIntoQty().abs().negate());
                 //入库金额
@@ -959,6 +979,7 @@ public class InventoryService extends BaseService<Inventory> {
             //endregion
             //实体转换
             InOutRecord inOutRecord = inOutRecordConvert.convertToPo(inOutRecordVO);
+            inOutRecord.setRecordId(null);
             //新建
             inOutRecordMapper.insert(inOutRecord);
         }
@@ -1078,16 +1099,16 @@ public class InventoryService extends BaseService<Inventory> {
             //采购退货入库  把传入的负数转成正数
             if (Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVO.getInventoryDocCode())) {
                 //出库数量
-                outboundItemCost.setOutQty(inOutRecordVO.getIntoQty().abs());
-                //出库单价
-                outboundItemCost.setCostPrice(inOutRecordVO.getPriceInto().abs());
+                outboundItemCost.setOutQty(qty);
                 //出库成本
-                outboundItemCost.setCostAmt(inOutRecordVO.getIntoAmt().abs());
+                outboundItemCost.setCostAmt(amount != null && amount.compareTo(BigDecimal.ZERO) > 0 ? amount : inOutRecordVO.getIntoAmt());
+                //出库单价
+                outboundItemCost.setCostPrice(amount != null && amount.compareTo(BigDecimal.ZERO) > 0 ? amount.divide(qty, 2, BigDecimal.ROUND_HALF_UP) : inOutRecordVO.getPriceInto());
             } else {
                 //出库数量
                 outboundItemCost.setOutQty(qty);
                 //出库成本
-                outboundItemCost.setCostAmt(amount != null && amount.compareTo(BigDecimal.ZERO) > 0 ? amount : inOutRecordVO.getPriceInto());
+                outboundItemCost.setCostAmt(amount != null && amount.compareTo(BigDecimal.ZERO) > 0 ? amount : inOutRecordVO.getIntoAmt());
                 //出库单价
                 outboundItemCost.setCostPrice(amount != null && amount.compareTo(BigDecimal.ZERO) > 0 ? amount.divide(qty, 2, BigDecimal.ROUND_HALF_UP) : inOutRecordVO.getPriceInto());
             }
@@ -1128,11 +1149,10 @@ public class InventoryService extends BaseService<Inventory> {
                     //清零标识
                     inventoryBatchVO.setZeroFlag(true);
                     inventoryBatchMapper.updateAmountAndQuantity(inventoryBatchVO);
-                    //单价
-                    inOutRecordVO.setPriceInto(inventoryBatchResponse.getCostPrice());
-                    //金额
-                    inOutRecordVO.setIntoAmt(inOutRecordVO.getIntoQty().multiply(inventoryBatchResponse.getCostPrice()));
-
+                    //存货单价
+                    inOutRecordVO.setCostPrice(inventoryBatchResponse.getCostPrice());
+                    //存货总额
+                    inOutRecordVO.setCostAmt(inventoryBatchResponse.getCostAmt());
                     //region  出库成本 todo  2024年5月20日15:46:01  库存批次有几条出库成本就有几条
                     //除了销售退货出库  其他类型出库要新建出库成本  采购退货 出库成本 正数
                     if ((Constant.InventoryType.OUTBOUND.getName().equals(inOutRecordVO.getInventoryType()) &&
@@ -1159,13 +1179,10 @@ public class InventoryService extends BaseService<Inventory> {
                         //清零标识
                         inventoryBatchVO.setZeroFlag(false);
                         inventoryBatchMapper.updateAmountAndQuantity(inventoryBatchVO);
-                        //单价
-                        inOutRecordVO.setPriceInto(inventoryBatchResponse.getCostPrice());
-                        //金额
-                        inOutRecordVO.setIntoAmt(inOutRecordVO.getIntoQty().multiply(inventoryBatchResponse.getCostPrice()));
                         //金额每次更新完要重新运算
                         notEnoughAmount = notEnoughAmount.add(qty.multiply(inventoryBatchResponse.getCostPrice()));
-
+                        //存货总额
+                        inOutRecordVO.setCostAmt(notEnoughAmount);
                         //region  出库成本 todo  2024年5月20日15:46:01  库存批次有几条出库成本就有几条
                         //除了销售退货出库  其他类型出库要新建出库成本  采购退货 出库成本 正数
                         if ((Constant.InventoryType.OUTBOUND.getName().equals(inOutRecordVO.getInventoryType()) &&
@@ -1279,8 +1296,8 @@ public class InventoryService extends BaseService<Inventory> {
                     //当前编辑的数据在库存批次中不存在
                     throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_BATCH_DOES_NOT_EXIST.getMessage());
                 } else {
-                    //数据库中库存批次数量和传入数量一致 可以更改
-                    if (inventoryBatchResponse.getInvQty().compareTo(inOutRecordVO.getQtyBeforeUpdate() != null ? inOutRecordVO.getQtyBeforeUpdate().abs() : inOutRecordVO.getIntoQty().abs()) == 0) {
+                    //数据库中库存批次数量和传入数量一致 可以更改 todo 2024年7月18日17:17:32 大于等于就行 和z沟通过
+                    if (inventoryBatchResponse.getInvQty().compareTo(inOutRecordVO.getQtyBeforeUpdate() != null ? inOutRecordVO.getQtyBeforeUpdate().abs() : inOutRecordVO.getIntoQty().abs()) >= 0) {
                         InventoryBatch inventoryBatch = new InventoryBatch();
                         //来源单ID
                         inventoryBatch.setFromId(inOutRecordVO.getBiznisId());
@@ -1472,9 +1489,9 @@ public class InventoryService extends BaseService<Inventory> {
             rollbackFor = {Exception.class}
     )
     public List<InOutRecordVO> insertOrUpdateInbound(List<InOutRecordVO> inOutRecordVOList) {
-        BigDecimal sumOutQty = inOutRecordVOList.stream().map(InOutRecordVO::getIntoQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
         //新建
         if (inOutRecordVOList.get(0).getAddOrEditFlag()) {
+            BigDecimal sumOutQty = inOutRecordVOList.stream().map(InOutRecordVO::getIntoQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
             //region  总单
             Inbound inbound = new Inbound();
             //获取 id/单号
@@ -1531,15 +1548,8 @@ public class InventoryService extends BaseService<Inventory> {
         }
         //编辑
         else {
-            //region  编辑入库单数量
+            //region查询总单
             InboundResponse inboundResponse = inboundMapper.selectMessageByOtherQuery(new InboundQuery().setFromId(inOutRecordVOList.get(0).getBiznisId()));
-            Inbound inbound = new Inbound();
-            inbound.setIntoId(inboundResponse.getIntoId());
-            inbound.setIntoQty(sumOutQty.abs());
-            inboundMapper.update(inbound,
-                    new UpdateWrapper<Inbound>().lambda()
-                            .eq(Inbound::getIntoId, UUID.fromString(inbound.getIntoId()))
-            );
             //endregion
 
             //region 明细
@@ -1562,6 +1572,18 @@ public class InventoryService extends BaseService<Inventory> {
                 inOutRecordVO.setIntoItemId(inboundItemResponse.getItemId());
             }
             //endregion
+
+            //region  编辑入库单数量  编辑的时候把所有明细查出来  计算和在反写
+            List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectMessageByOtherCondition(new InboundItemQuery().setFromId(inOutRecordVOList.get(0).getBiznisId()));
+            BigDecimal sumOutQty = inboundItemResponses.stream().map(InboundItemResponse::getIntoQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+            Inbound inbound = new Inbound();
+            inbound.setIntoId(inboundResponse.getIntoId());
+            inbound.setIntoQty(sumOutQty);
+            inboundMapper.update(inbound,
+                    new UpdateWrapper<Inbound>().lambda()
+                            .eq(Inbound::getIntoId, UUID.fromString(inbound.getIntoId()))
+            );
+            //endregion
         }
 
         return inOutRecordVOList;
@@ -1855,20 +1877,6 @@ public class InventoryService extends BaseService<Inventory> {
             rollbackFor = {Exception.class}
     )
     public void updateIntobound(List<InOutRecordVO> inOutRecordVOList) {
-        BigDecimal sumOutQty = inOutRecordVOList.stream().map(InOutRecordVO::getIntoQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-        BigDecimal sumOutAmt = inOutRecordVOList.stream().map(InOutRecordVO::getIntoAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
-        //region  编辑入库单数量
-        InboundResponse inboundResponse = inboundMapper.selectMessageByOtherQuery(new InboundQuery().setIntoId(inOutRecordVOList.get(0).getBiznisId()));
-        Inbound inbound = new Inbound();
-        inbound.setIntoId(inboundResponse.getIntoId());
-        inbound.setIntoQty(sumOutQty);
-        inbound.setIntoAmt(sumOutAmt);
-        inboundMapper.update(inbound,
-                new UpdateWrapper<Inbound>().lambda()
-                        .eq(Inbound::getIntoId, UUID.fromString(inbound.getIntoId()))
-        );
-        //endregion
-
         //region 明细
         for (InOutRecordVO inOutRecordVO : inOutRecordVOList) {
             //根据id查询入库明细,用于计算入库明细的库存数量
@@ -1881,21 +1889,44 @@ public class InventoryService extends BaseService<Inventory> {
             //已入库数量
             inboundItem.setIntoQty(inOutRecordVO.getIntoQty());
             //已入库金额
-            inboundItem.setIntoAmt(inOutRecordVO.getIntoAmt());
-            //成本单价
-            inboundItem.setCostPrice(inOutRecordVO.getCostPrice());
+            inboundItem.setIntoAmt(inOutRecordVO.getIntoQty().multiply(inboundItemResponse.getPriceInto()));
             //成本金额
-            inboundItem.setCostAmt(inOutRecordVO.getIntoAmt());
+            //采购退货特殊处理存负数
+            if(Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVOList.get(0).getInventoryDocCode())){
+                inboundItem.setCostAmt(inOutRecordVO.getCostAmt().negate());
+            }else{
+                inboundItem.setCostAmt(inOutRecordVO.getCostAmt());
+            }
+            //成本单价
+            inboundItem.setCostPrice(inOutRecordVO.getCostAmt().divide(inOutRecordVO.getIntoQty(),2, BigDecimal.ROUND_HALF_UP).abs());
             //库存id
             inboundItem.setInvId(inOutRecordVO.getInvId());
             //库存数量 =  已入库数量-出库数量 -已入库退货数量
-            inboundItem.setInvQty(inboundItem.getIntoQty().subtract(inboundItemResponse.getOutQty()).subtract(inboundItemResponse.getReturnQty()));
+            if (!Constant.InventoryDocCode.PURCHASE_RETURN.getValue().equals(inOutRecordVOList.get(0).getInventoryDocCode())) {
+                inboundItem.setInvQty(inboundItem.getIntoQty().subtract(inboundItemResponse.getOutQty()).subtract(inboundItemResponse.getReturnQty()));
+            }
             inboundItemMapper.update(inboundItem,
                     new UpdateWrapper<InboundItem>().lambda()
                             .eq(InboundItem::getItemId, UUID.fromString(inboundItem.getItemId()))
             );
         }
         //endregion
+
+        //region  编辑入库单数量
+        InboundResponse inboundResponse = inboundMapper.selectMessageByOtherQuery(new InboundQuery().setIntoId(inOutRecordVOList.get(0).getBiznisId()));
+        List<InboundItemResponse> inboundItemResponses = inboundItemMapper.selectMessageByOtherCondition(new InboundItemQuery().setIntoId(inOutRecordVOList.get(0).getBiznisId()));
+        BigDecimal sumOutQty = inboundItemResponses.stream().map(InboundItemResponse::getIntoQty).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+        BigDecimal sumOutAmt = inboundItemResponses.stream().map(InboundItemResponse::getIntoAmt).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(6, BigDecimal.ROUND_HALF_UP);
+        Inbound inbound = new Inbound();
+        inbound.setIntoId(inboundResponse.getIntoId());
+        inbound.setIntoQty(sumOutQty);
+        inbound.setIntoAmt(sumOutAmt);
+        inboundMapper.update(inbound,
+                new UpdateWrapper<Inbound>().lambda()
+                        .eq(Inbound::getIntoId, UUID.fromString(inbound.getIntoId()))
+        );
+        //endregion
+
     }
 
     /**
@@ -1948,8 +1979,8 @@ public class InventoryService extends BaseService<Inventory> {
                 //当前编辑的数据在库存批次中不存在
                 throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.INVENTORY_BATCH_DOES_NOT_EXIST.getMessage());
             } else {
-                //数据库中库存批次数量和传入数量一致 可以更改
-                if (inventoryResponse.getInvQty().compareTo(inOutRecordVO.getIntoQty().abs()) == 0) {
+                //数据库中库存批次数量和传入数量一致 可以更改  todo 2024年7月18日17:17:32 大于等于就行 和z沟通过
+                if (inventoryResponse.getInvQty().compareTo(inOutRecordVO.getIntoQty().abs()) >= 0) {
                     InventoryBatch inventoryBatch = new InventoryBatch();
                     //来源单ID
                     inventoryBatch.setFromId(inOutRecordVO.getBiznisId());

+ 170 - 12
src/main/java/com/dk/mdm/service/mst/CusFollowService.java

@@ -1,5 +1,6 @@
 package com.dk.mdm.service.mst;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -36,11 +37,20 @@ import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
@@ -418,27 +428,39 @@ public class CusFollowService extends BaseService<CusFollow> {
             Customer customer = customerMapper.selectById(follow.getCusId());
             if (customer != null) {
                 String loginType = "4";
-                List<String> list = new ArrayList<>();
+//                List<String> list = new ArrayList<>();
+                Map<String, String> keywordMap = new HashMap<>();
                 if (Constant.BasicDataConstant.FOLLOW_STATUS_4.getValue().equals(follow.getFollowStatus()) ||
-                        Constant.BasicDataConstant.FOLLOW_STATUS_1.getValue().equals(follow.getFollowStatus())) {
-                    list.add("您有客户需要跟进");
+                        Constant.BasicDataConstant.FOLLOW_STATUS_1.getValue().equals(follow.getFollowStatus()) ||
+                        Constant.BasicDataConstant.FOLLOW_STATUS_5.getValue().equals(follow.getFollowStatus())) {
+//                    list.add("您有客户需要跟进");
+                    keywordMap.put("remark", "您有客户需要跟进");
                     loginType = "4";
 
                 } else if (Constant.BasicDataConstant.FOLLOW_STATUS_6.getValue().equals(follow.getFollowStatus())) {
-                    list.add("您有客户需要量尺服务");
+//                    list.add("您有客户需要量尺服务");
+                    keywordMap.put("remark", "您有客户需要量尺服务");
                     loginType = "6";
 
                 } else if (Constant.BasicDataConstant.FOLLOW_STATUS_2.getValue().equals(follow.getFollowStatus())) {
-                    list.add("您有客户邀约进店");
+//                    list.add("您有客户邀约进店");
+                    keywordMap.put("remark", "您有客户邀约进店");
                     loginType = "2";
 
                 } else if (Constant.BasicDataConstant.FOLLOW_STATUS_3.getValue().equals(follow.getFollowStatus())) {
-                    list.add("您有客户需要约尺服务");
+//                    list.add("您有客户需要约尺服务");
+                    keywordMap.put("remark", "您有客户需要约尺服务");
                     loginType = "3";
                 }
-                list.add(customer.getCusName());
-                list.add(customer.getCusPhone());
-                // 查询跟进人的openid和publicOpenId
+//                list.add(customer.getCusName());
+//                list.add(customer.getCusPhone());
+                LocalDateTime followTime = follow.getFollowTime();
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+                keywordMap.put("cusName", customer.getCusName());
+                keywordMap.put("cusPhone", customer.getCusPhone());
+                keywordMap.put("followTime", followTime.format(formatter));
+                // 查询跟进人的openid和publicOpenId   7.19 加了userWxId 刘尧
                 ResponseResultVO<?> resultVO = userFeign.getUser(followStaff.getWxUserId());
                 // 如果没有成功返回,状态设置为待审
                 if (resultVO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
@@ -451,11 +473,14 @@ public class CusFollowService extends BaseService<CusFollow> {
                         Map<String, Object> mapMessage = new HashMap<>();
                         mapMessage.put("loginType", loginType);
                         mapMessage.put("otherParam", follow);
-                        mapMessage.put("publicOpenId", user.get("publicOpenId"));
+//                        mapMessage.put("publicOpenId", user.get("publicOpenId"));
+                        mapMessage.put("userWxId", user.get("userWxId"));
                         mapMessage.put("first", "客户跟进提醒");
-                        mapMessage.put("keywordList", list);
+//                        mapMessage.put("keywordList", list);
+                        mapMessage.put("keywordMap", keywordMap);
                         mapMessage.put("remark", "客户跟进备注");
-                        sendUniformMessage(mapMessage);
+//                        sendUniformMessage(mapMessage);
+                        wxMessagePush(mapMessage);
                     }
                 }
 
@@ -529,6 +554,47 @@ public class CusFollowService extends BaseService<CusFollow> {
     }
 
     /**
+     * @desc : 向用户推送小程序订阅消息方法
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    public ResponseResultVO<?> wxMessagePush(Map<String, Object> map) {
+        // 获取微信Token
+        String wxToken = getWxToken();
+        Map<String, Object> params = new HashMap<>();
+        // 接口调用凭证
+        params.put("access_token", wxToken);
+        // 所需下发的订阅模板id
+        params.put("template_id", "z3REuwft6NLPxVW8s5HN1UgWjFstWjD0QfCXNLTa0LA");
+        // 点击模板卡片后的跳转页面
+        if (map.containsKey("otherParam")) {
+            params.put("page", "pages/welcome/welcome?loginType=" + map.get("loginType").toString() + "&otherParam=" + map.get("otherParam").toString());
+        } else {
+            params.put("page", "pages/welcome/welcome?loginType=" + map.get("loginType").toString());
+        }
+        // 接收者(用户)的 openid
+        params.put("touser", map.get("userWxId"));
+        // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;
+        params.put("miniprogram_state", "trial");
+
+        // 获取客户信息
+        Object keywordMap = map.get("keywordMap");
+        Map<String, Object> personMap = BeanUtil.beanToMap(keywordMap);
+
+        // 构造对应的显示信息 和模板数据结构对应
+        JSONObject data = new JSONObject();
+        data.put("time4", createDataItem("value", String.valueOf(personMap.get("followTime"))));
+        data.put("thing1", createDataItem("value", String.valueOf(personMap.get("cusName"))));
+        data.put("phone_number2", createDataItem("value", String.valueOf(personMap.get("cusPhone"))));
+        data.put("thing6", createDataItem("value", String.valueOf(personMap.get("remark"))));
+        data.put("thing5", createDataItem("value", String.valueOf(map.get("remark"))));
+        params.put("data", data);
+
+        ResponseResultVO<JSONObject> post = HttpUtils.post("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + wxToken, params);
+        return post;
+    }
+
+    /**
      * @author : jyh
      * @date : 2023-10-11 16:23
      * @desc : 调用中控服务获取公众号的token
@@ -790,4 +856,96 @@ public class CusFollowService extends BaseService<CusFollow> {
     public ResponseResultVO<List<Map>> selectCusFollow(CusFollowQuery cusFollowQuery) {
         return ResponseResultUtil.success(cusFollowMapper.selectCusFollow(cusFollowQuery));
     }
+
+    /**
+     * @desc : 构造消息推送模板中data值
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    private static Map<String, Object> createDataItem(String name, String value) {
+        Map<String, Object> item = new HashMap<>();
+        item.put(name, value);
+        return item;
+    }
+
+    /**
+     * @desc : 微信公众平台后台配置测试用
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    public void wxMessageTest(HttpServletRequest request, HttpServletResponse response) {
+        String signature = request.getParameter("signature");
+        String timestamp = request.getParameter("timestamp");
+
+        String nonce = request.getParameter("nonce");
+
+        String echostr = request.getParameter("echostr");
+        // 和小程序后台配置的token保持一致
+        String token = "dPM4EILWQqeEsEmft9pKMIll4VGZ6pJK";
+        // 将下面三个参数拼接成字符串
+        StringBuffer content = new StringBuffer();
+        content.append(timestamp);
+        content.append(nonce);
+        content.append(token);
+        PrintWriter out = null;
+        try {
+            out = response.getWriter();
+            MessageDigest md = MessageDigest.getInstance("SHA-1");
+            // 对拼接好的字符串进行sha1加密
+            byte[] digest = md.digest(content.toString().getBytes());
+            String tmpStr = byteToStr(digest);
+            //获得加密后的字符串与signature对比
+            if (tmpStr != null && tmpStr.equals(signature.toUpperCase())){
+                out.print(echostr);
+                out.flush();
+            }
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            out.close();
+        }
+    }
+
+    /**
+     * @desc : 获取微信小程序后台Token
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    private String getWxToken(){
+        String appId = config.getAppId();
+        String appSecret = config.getAppSecret();
+        ResponseResultVO<JSONObject> tokenRes = HttpUtils.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret);
+        JSONObject data = tokenRes.getData();
+        return String.valueOf(data.get("access_token"));
+    }
+
+    /**
+     * @desc : 将字节转化为十六进制字符串
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    private static String byteToStr(byte[] byteArray) {
+        String strDigest = "";
+        for (int i = 0; i < byteArray.length; i++) {
+            strDigest += byteToHexStr(byteArray[i]);
+        }
+        return strDigest;
+    }
+
+    /**
+     * @desc : 将字节转换成对应的两位十六进制字符串
+     * @author : 刘尧
+     * @date : 2024-07-19 08:56
+     * */
+    private static String byteToHexStr(byte mByte) {
+        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
+                'B', 'C', 'D', 'E', 'F' };
+        char[] tempArr = new char[2];
+        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
+        tempArr[1] = Digit[mByte & 0X0F];
+        String s = new String(tempArr);
+        return s;
+    }
 }

+ 12 - 0
src/main/java/com/dk/mdm/service/mst/StaffService.java

@@ -744,6 +744,18 @@ public class StaffService extends BaseService<Staff> {
     }
 
     /**
+     * @desc : 更新员工的登录标识
+     * @author : 姜永辉
+     * @date : 2023/1/9 10:49
+     */
+    @Transactional(rollbackFor = {Exception.class} )
+    public ResponseResultVO<Boolean> updateFeignStaffFlgCanLogin(List<String> list) {
+        //  FlgCanLogin  登录系统(1:PC端,2:移动端,3:PC+移动端, 4:无)
+        staffMapper.updateFeignStaffFlgCanLogin(list);
+        return ResponseResultUtil.success();
+    }
+
+    /**
      * @desc : 保存权限方法
      * @author : 姜永辉
      * @date : 2023/1/9 10:49

+ 21 - 30
src/main/java/com/dk/mdm/service/report/ReportService.java

@@ -103,10 +103,21 @@ public class ReportService {
      * @author : 常皓宁
      * @date : 2024/4/11 8:52
      */
-    public ResponseResultVO<List<Map<String, Object>>> getIvtDetailReport(Map<String, Object> param) {
+    public ResponseResultVO<PageList<Map<String, Object>>> getIvtDetailReport(Map<String, Object> param) {
+        // 校验分页参数
+        if (param.get("pageSize") == null || param.get("currentPage") == null) {
+            return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL, "请检查分页参数!");
+        }
         // 获取系统基础数据
+        PageList data = new PageList<>();
+        param.put("start", (Integer.parseInt(param.get("currentPage").toString()) - 1) * Integer.parseInt(param.get("pageSize").toString()));
+        param.put("end", Integer.parseInt(param.get("pageSize").toString()));
         List<Map<String, Object>> list = reportMapper.getIvtDetailReport(param);
-        return ResponseResultUtil.success(list);
+        data.setList(list);
+        data.setTotal(reportMapper.getIvtDetailReportCount(param));
+        data.setPageSize((Integer) param.get("pageSize"));
+        data.setCurrentPage((Integer) param.get("currentPage"));
+        return ResponseResultUtil.success(data);
     }
 
     /**
@@ -575,47 +586,27 @@ public class ReportService {
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL, "请检查分页参数!");
         }
 
-        List<Map<String, Object>>  list = new ArrayList<>();
         List<Object> objects = new ArrayList<>();
         if (param.get("macIds") instanceof ArrayList<?>) {
             for (Object o : (List<?>) param.get("macIds")) {
                 objects.add(String.class.cast(o));
             }
         }
-        if (param.get("macIds") != null && objects.size() > 0){
-            String json = JSON.toJSONString(param.get("macIds"));
-            JSONArray jsonArray = JSONArray.parseArray(json);
-            for (Object o : jsonArray.stream().toArray()) {
-                param.put("macId", o);
-                // 获取资金日记账
-                if (list.isEmpty()) {
-                    list = reportMapper.getFundReport(param);
-                }else {
-                    List<Map<String, Object>> fundReport = reportMapper.getFundReport(param);
-                    JSONObject jObject = JSONObject.parseObject(list.get(0).get("f_get_fund_report").toString());
-                    JSONObject jObjectNew = JSONObject.parseObject(fundReport.get(0).get("f_get_fund_report").toString());
-                    List dataList = jObject.get("data") != null ? JSONObject.parseArray(jObject.get("data").toString())
-                            .toJavaList(Map.class) : new ArrayList();
-                    List dataNewList = jObjectNew.get("data") != null ? JSONObject.parseArray(jObjectNew.get("data").toString())
-                            .toJavaList(Map.class) : new ArrayList();
-                    dataList.addAll(dataNewList);
-                    jObject.put("data", dataList);
-                    list.get(0).put("f_get_fund_report", jObject);
-                }
-            }
-        }else {
-            // 获取资金日记账
-            list = reportMapper.getFundReport(param);
+        if (objects.isEmpty()){
+            param.remove("macIds");
         }
-
-        // 定义返回值
-        PageList data = new PageList<>();
+        // 获取资金日记账
+        List<Map<String, Object>> list = reportMapper.getFundReport(param);
         JSONObject jObject = JSONObject.parseObject(list.get(0).get("f_get_fund_report").toString());
         List dataList = jObject.get("data") != null ? JSONObject.parseArray(jObject.get("data").toString())
                 .toJavaList(Map.class) : new ArrayList();
+
+        // 定义返回值
+        PageList data = new PageList<>();
         data.setPageSize((int) param.get("pageSize")).setCurrentPage((int) param.get("currentPage"))
                 .setTotal(Long.parseLong(jObject.get("pageTotal").toString()))
                 .setList(dataList);
+
         if ("查询成功".equals(jObject.get("message").toString())) {
             return ResponseResultUtil.success(data);
         } else {