lizhenhao пре 2 година
родитељ
комит
eb4d72286c

+ 25 - 14
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java

@@ -1,5 +1,6 @@
 package com.jeeplus.test.materialManagement.collect.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -36,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import org.springframework.beans.BeanUtils;
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
@@ -209,26 +211,35 @@ public class CollectService {
                         }*/
                         //根据商品名称 及 领用类型查询入库表的商品入库数量
                         Double wareHouseNum = summaryMapper.getInfoByTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
+                        //根据商品名称 及 领用类型查询提醒数量以及是否提醒
+                        List<WareHouseDto> byTypeAndTradeName = wareHouseBasicMapper.getByTypeAndTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
                         if (null != wareHouseNum) {
                             double num = wareHouseNum - Double.parseDouble(detailInfo.getCollectNumber());
                             detailInfo.setSurplusNumber(wareHouseNum + "");
 
                             detailedMapper.updateById(detailInfo);
-                            //当小于5的时候发起通知
-                            if (wareHouseNum <= 5 ) {
-                                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
-                                String day = format.format(new Date());
-                                String title = userDTO.getLoginName() + " 在 " + day + " 发起了 [库存提醒]";
-                                //向多个用户发起通知 徐珊、黄丽、杨娟、崇祝燕
-                                List<UserDTO> usersInfo = wareHouseDetailedMapper.getUsersInfo();
-                                //获取目前领用流程的taskid,根据procInsId去查taskId
-                                String uuid = "";
-                                if (null != usersInfo) {
-                                    for (UserDTO userDTO1 : usersInfo) {
-                                        uuid = UUID.randomUUID().toString();
-                                        //发送通知
+
+                            // 当 提醒开启 并且 库存数量小于或等于提醒数量 时发起通知
+                            // 在Java中 int类型数据的大小比较可以使用双等号, double类型则不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以
+                            if (CollectionUtil.isNotEmpty(byTypeAndTradeName) && StringUtils.isNotBlank(byTypeAndTradeName.get(0).getWarnNum()) && StringUtils.isNotBlank(byTypeAndTradeName.get(0).getWarnFlag())) {
+                                String wareHouseNumString = String.valueOf(wareHouseNum); // wareHouseNum转string的原因是,string转BigDecimal比double转BigDecimal精度更高
+                                BigDecimal whnum = new BigDecimal(wareHouseNumString); // 当前库存量
+                                BigDecimal warnNum = new BigDecimal(byTypeAndTradeName.get(0).getWarnNum()); // 提醒数量
+                                if ("1".equals(byTypeAndTradeName.get(0).getWarnFlag()) && whnum.compareTo(warnNum) <= 0 ) {
+                                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+                                    String day = format.format(new Date());
+                                    String title = userDTO.getLoginName() + " 在 " + day + " 发起了 [库存提醒]";
+                                    //向多个用户发起通知 徐珊、黄丽、杨娟、崇祝燕
+                                    List<UserDTO> usersInfo = wareHouseDetailedMapper.getUsersInfo();
+                                    //获取目前领用流程的taskid,根据procInsId去查taskId
+                                    String uuid = "";
+                                    if (null != usersInfo) {
+                                        for (UserDTO userDTO1 : usersInfo) {
+                                            uuid = UUID.randomUUID().toString();
+                                            //发送通知
 //                                        myNoticeService.add(uuid, title, "", "库存提醒", userDTO.getLoginName(), day,userDTO1.getLoginName(), userDTO1.getId());
-                                        myNoticeService.add(uuid, title, detailInfo.getBasicId(), "库存提醒", userDTO.getLoginName(), day,userDTO1.getLoginName(), userDTO1.getId());
+                                            myNoticeService.add(uuid, title, detailInfo.getBasicId(), "库存提醒", userDTO.getLoginName(), day,userDTO1.getLoginName(), userDTO1.getId());
+                                        }
                                     }
                                 }
                             }

+ 24 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/controller/WareHouseController.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.aop.logging.annotation.ApiLog;
 import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.help.service.dto.HelpDTO;
 import com.jeeplus.test.materialManagement.purchase.service.MaterialService;
 import com.jeeplus.test.materialManagement.purchase.service.dto.MaterialInfoDto;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WarehouseUpHi;
@@ -13,6 +15,7 @@ import com.jeeplus.test.materialManagement.wareHouse.service.dto.WareHouseDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -225,4 +228,25 @@ public class WareHouseController {
         return ResponseEntity.ok(hi);
     }
 
+    /**
+     * 库存提醒状态 启用/停用
+     * @return
+     */
+    @ApiLog(value = "库存提醒状态启用/停用", type = LogTypeEnum.SAVE)
+    @PostMapping("updateWarnFlagByTradeNameAndType")
+    public ResponseEntity updateWarnFlagByTradeNameAndType(@RequestBody WareHouseDto wareHouseDto) {
+        return basicService.updateWarnFlagByTradeNameAndType(wareHouseDto);
+    }
+
+    /**
+     * 库存提醒数量修改
+     * @param wareHouseDto
+     * @return
+     */
+    @ApiLog(value = "库存提醒数量修改", type = LogTypeEnum.SAVE)
+    @PostMapping("updateWarnNumByTradeNameAndType")
+    public ResponseEntity updateWarnNumByTradeNameAndType(@RequestBody WareHouseDto wareHouseDto) {
+        return basicService.updateWarnNumByTradeNameAndType(wareHouseDto);
+    }
+
 }

+ 10 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/domain/WareHouseDetailed.java

@@ -104,6 +104,16 @@ public class WareHouseDetailed extends BaseEntity {
      */
     private String sourceId;
 
+    /**
+     * 警告数量
+     */
+    private String warnNum;
+
+    /**
+     * 警告标记  0不警告  1警告
+     */
+    private String warnFlag;
+
     @TableField(exist = false)
     private List<WareHouseDetailed> wareHouseDetailed;
 }

+ 12 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseBasicMapper.java

@@ -47,4 +47,16 @@ public interface WareHouseBasicMapper extends BaseMapper<WareHouseBasic> {
 
     // 根据入库数据id删除修改申请人
     void deleteUpdateUser(String basicId);
+
+    // 根据商品名称和入库类型查询数据的 ‘提醒数量’ 以及 ‘是否提醒标记’
+    List<WareHouseDto> getByTypeAndTradeName(@Param("tradeName")String tradeName,
+                                       @Param("typeId")String typeId);
+
+    void updateWarnFlagByTradeNameAndType(@Param("warnFlag")String warnFlag,
+                                            @Param("tradeName")String tradeName,
+                                            @Param("typeId")String typeId);
+
+    void updateWarnNumByTradeNameAndType(@Param("warnNum")String warnNum,
+                                         @Param("tradeName")String tradeName,
+                                         @Param("typeId")String typeId);
 }

+ 21 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseBasicMapper.xml

@@ -85,7 +85,9 @@
 			c.name as wareHouseTypeName,
 			sum(trade_number) as allNumber,
 			b.collect_number as borrowNumber,
-			IFNULL((sum(trade_number) - collect_number),sum(trade_number)) as tradeNumber
+			IFNULL((sum(trade_number) - collect_number),sum(trade_number)) as tradeNumber,
+			a.warn_num,
+			a.warn_flag
 		FROM
 			material_management_warehouse_detailed a
 			left join
@@ -98,7 +100,7 @@
 			LEFT JOIN material_management_warehouse_basics bas on a.basic_id = bas.id
 			left join material_management_type c on a.ware_house_type = c.id
 			${ew.customSqlSegment}
-			GROUP BY a.trade_name
+			GROUP BY a.trade_name,a.ware_house_type
 			ORDER BY a.ware_house_type DESC
 	</select>
     <select id="findRequestId" resultType="java.lang.String">
@@ -186,4 +188,21 @@
 	<update id="deleteUpdateUser">
 		update material_management_warehouse_basics set update_user = null where id = #{basicId}
 	</update>
+	<select id="getByTypeAndTradeName" resultType="com.jeeplus.test.materialManagement.wareHouse.service.dto.WareHouseDto">
+		select
+			warn_num,
+			warn_flag
+		from material_management_warehouse_detailed
+		where trade_name = #{tradeName} and ware_house_type = #{typeId} and del_flag = '0'
+	</select>
+	<update id="updateWarnFlagByTradeNameAndType">
+		update material_management_warehouse_detailed
+		set warn_flag = #{warnFlag}
+		where trade_name = #{tradeName} and ware_house_type = #{typeId}
+	</update>
+	<update id="updateWarnNumByTradeNameAndType">
+		update material_management_warehouse_detailed
+		set warn_num = #{warnNum}
+		where trade_name = #{tradeName} and ware_house_type = #{typeId}
+	</update>
 </mapper>

+ 81 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/service/WareHouseBasicService.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.google.common.collect.Lists;
 import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.flowable.service.FlowTaskService;
 import com.jeeplus.sys.service.dto.UserDTO;
@@ -17,6 +18,8 @@ import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.cw.contractRegistration.service.ContractInfoService;
 import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientBaseDTO;
+import com.jeeplus.test.help.domain.Help;
+import com.jeeplus.test.help.domain.HelpTree;
 import com.jeeplus.test.materialManagement.purchase.domain.MaterialBasic;
 import com.jeeplus.test.materialManagement.purchase.domain.MaterialDetailed;
 import com.jeeplus.test.materialManagement.purchase.mapper.MaterialBasicMapper;
@@ -39,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -526,6 +530,15 @@ public class WareHouseBasicService {
                 detailed.setBasicId(id);
                 detailed.setTradeTotalPrice(dto.getWareHouseTotalPrice());
                 detailed.setUpFlag("0");
+                if (StringUtils.isNotBlank(detailed.getWareHouseType()) && StringUtils.isNotBlank(detailed.getTradeName())) {
+                    // 根据商品名称和入库类型查询 警告数量、警告标记
+                    List<WareHouseDto> byTypeAndTradeName = wareHouseBasicMapper.getByTypeAndTradeName(detailed.getTradeName(), detailed.getWareHouseType());
+                    // 如果存在,则将当前新增数据的 警告数量、警告标记 赋值为查询到的值
+                    if (CollectionUtil.isNotEmpty(byTypeAndTradeName)) {
+                        detailed.setWarnNum(byTypeAndTradeName.get(0).getWarnNum()); // 提醒数量
+                        detailed.setWarnFlag(byTypeAndTradeName.get(0).getWarnFlag()); // 提醒标记
+                    }
+                }
                 //获取该商品对应的库存数据
                 WareHouseDto wareHouseDto = wareHouseBasicMapper.getByTypeAndGoodsName(detailed.getTradeName(), detailed.getWareHouseTypeId());
                 //设置当前库存
@@ -704,8 +717,37 @@ public class WareHouseBasicService {
 //
 //            queryWrapper.between("c.ware_house_date", contractDates[0], contractDates[1]);
 //        }
-
-        return basicMapper.summaryList(page, queryWrapper);
+        IPage<WareHouseDto> wareHouseDtoIPage = basicMapper.summaryList(page, queryWrapper);
+        wareHouseDtoIPage.getRecords().forEach(item -> {
+            // 将小数点后无效的0删除
+            // 总量  格式化
+            if (StringUtils.isNotBlank(item.getAllNumber())) {
+                String s = convertByBigDecimal(item.getAllNumber());
+                item.setAllNumber(s);
+            }
+            //领用量  格式化
+            if (StringUtils.isNotBlank(item.getBorrowNumber())) {
+                String s = convertByBigDecimal(item.getBorrowNumber());
+                item.setBorrowNumber(s);
+            }
+            //剩余量  格式化
+            if (StringUtils.isNotBlank(item.getTradeNumber())) {
+                String s = convertByBigDecimal(item.getTradeNumber());
+                item.setTradeNumber(s);
+            }
+            //提醒数量  格式化
+            if (StringUtils.isNotBlank(item.getWarnNum())) {
+                String s = convertByBigDecimal(item.getWarnNum());
+                item.setWarnNum(s);
+            }
+        });
+        return wareHouseDtoIPage;
+    }
+    // 去除小数点后无效的0
+    public String convertByBigDecimal(String value) {
+        BigDecimal bigDecimal = new BigDecimal(value);
+        BigDecimal res = bigDecimal.stripTrailingZeros();
+        return res.toPlainString();
     }
 
     public String findRequestId(String purchaseNo) {
@@ -770,4 +812,41 @@ public class WareHouseBasicService {
         return wareHouseDto;
     }
 
+    // 根据商品名称和入库类型修改提醒状态
+    public ResponseEntity updateWarnFlagByTradeNameAndType(WareHouseDto wareHouseDto) {
+        if (ObjectUtil.isNotEmpty(wareHouseDto.getTradeName()) && StringUtils.isNotBlank(wareHouseDto.getWareHouseType())) {
+            // 查询此数据的状态
+            List<WareHouseDto> wareHouseDtoList = basicMapper.getByTypeAndTradeName(wareHouseDto.getTradeName(),wareHouseDto.getWareHouseType());
+            if (CollectionUtil.isNotEmpty(wareHouseDtoList)) {
+                if ("1".equals(wareHouseDtoList.get(0).getWarnFlag())) { // 当前状态为启用
+                    basicMapper.updateWarnFlagByTradeNameAndType("0", wareHouseDto.getTradeName(), wareHouseDto.getWareHouseType()); // 设置为停用
+                    return ResponseEntity.ok("修改提醒状态成功");
+                } else if ("0".equals(wareHouseDtoList.get(0).getWarnFlag())) { // 当前状态为停用
+                    basicMapper.updateWarnFlagByTradeNameAndType("1", wareHouseDto.getTradeName(), wareHouseDto.getWareHouseType()); // 设置为启用
+                    return ResponseEntity.ok("修改提醒状态成功");
+                }
+            }
+        }
+        return ResponseEntity.badRequest().body("修改提醒状态失败");
+    }
+
+
+    // 根据商品名称和入库类型修改提醒数量
+    public ResponseEntity updateWarnNumByTradeNameAndType(WareHouseDto wareHouseDto) {
+        if (ObjectUtil.isNotEmpty(wareHouseDto.getTradeName()) && StringUtils.isNotBlank(wareHouseDto.getWareHouseType())) {
+            if (StringUtils.isNotBlank(wareHouseDto.getWarnNum())) {
+                // 查询此数据的状态
+                List<WareHouseDto> wareHouseDtoList = basicMapper.getByTypeAndTradeName(wareHouseDto.getTradeName(),wareHouseDto.getWareHouseType());
+                if (CollectionUtil.isNotEmpty(wareHouseDtoList)) {
+                    if (wareHouseDto.getWarnNum().equals(wareHouseDtoList.get(0).getWarnNum())) { // 如果查询到的提醒数量与修改的提醒数量相同则直接返回修改成功
+                        return ResponseEntity.ok("修改提醒数量成功");
+                    } else { // 如果查询到的提醒数量与修改的提醒数量不相同则修改提醒数量
+                        basicMapper.updateWarnNumByTradeNameAndType(wareHouseDto.getWarnNum(), wareHouseDto.getTradeName(), wareHouseDto.getWareHouseType()); // 修改提醒数量
+                        return ResponseEntity.ok("修改提醒数量成功");
+                    }
+                }
+            }
+        }
+        return ResponseEntity.badRequest().body("修改提醒数量失败");
+    }
 }

+ 10 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/service/dto/WareHouseDto.java

@@ -291,4 +291,14 @@ public class WareHouseDto {
      * 修改原因
      */
     private String updateCause;
+
+    /**
+     * 警告数量
+     */
+    private String warnNum;
+
+    /**
+     * 警告标记  0不警告  1警告
+     */
+    private String warnFlag;
 }