Forráskód Böngészése

物资管理调整

wangqiang 2 éve
szülő
commit
01c3320925

+ 40 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.flowable.service.MyNoticeService;
 import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -17,7 +18,9 @@ import com.jeeplus.test.materialManagement.collect.mapper.CollectBasicMapper;
 import com.jeeplus.test.materialManagement.collect.mapper.CollectDetailedMapper;
 import com.jeeplus.test.materialManagement.collect.service.dto.CollectDto;
 import com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto;
+import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseDetailed;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary;
+import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseDetailedMapper;
 import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseSummaryMapper;
 import com.jeeplus.test.mould.service.SerialnumTplService;
 import com.jeeplus.test.oss.domain.WorkAttachment;
@@ -28,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import org.springframework.beans.BeanUtils;
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -57,8 +61,14 @@ public class CollectService {
     private ContractInfoService infoService;
 
     @Resource
+    private MyNoticeService myNoticeService;
+
+    @Resource
     private OssServiceMapper ossServiceMapper;
 
+    @Resource
+    private WareHouseDetailedMapper wareHouseDetailedMapper;
+
     public void updateStatusById(CollectDto dto) {
         basicMapper.updateStatusById(dto.getId(), dto.getStatus());
     }
@@ -100,14 +110,14 @@ public class CollectService {
 
     }
 
-    public String update(CollectDto dto, UserDTO userDTO) {
+    public String update(CollectDto dto, UserDTO userDTO) throws Exception {
         // 修改基础信息
         CollectBasic info = new CollectBasic();
         BeanUtils.copyProperties(dto, info);
         info.setUpdateBy(userDTO.getId());
         info.setHandledBy(dto.getHandledById());
         info.setUpdateDate(new Date());
-        basicMapper.updateById(info);
+//        basicMapper.updateById(info);
         // 修改报销详情列表信息
         // 删除原有数据
 //        LambdaQueryWrapper<MaterialDetailed> detailWrapper = new LambdaQueryWrapper<>();
@@ -173,12 +183,38 @@ public class CollectService {
                     //当流程结束的时候 修改入库汇总表的数量
                     if ( StringUtils.isNotEmpty(info.getStatus()) && info.getStatus().equals("5")){
                         //根据商品名称 及 领用类型查询汇总表修改改商品库存数量
-                        WareHouseSummary summaryInfo = summaryMapper.getInfoByTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
+                        /*WareHouseSummary summaryInfo = summaryMapper.getInfoByTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
                         if (null != summaryInfo) {
                             String num = Double.parseDouble(summaryInfo.getTradeNumber())
                                     - Double.parseDouble(detailInfo.getCollectNumber()) + "";
                             summaryInfo.setTradeNumber(num);
                             summaryMapper.updateById(summaryInfo);
+                        }*/
+                        //根据商品名称 及 领用类型查询入库表的商品入库数量
+                        Double wareHouseNum = summaryMapper.getInfoByTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
+                        if (null != wareHouseNum) {
+                            double num = wareHouseNum - Double.parseDouble(detailInfo.getCollectNumber());
+                            //当小于5的时候发起通知
+                            if (num < 5 ) {
+                                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+                                String day = format.format(new Date());
+                                String title = userDTO.getLoginName() + " 在 " + day + " 发起了 [库存提醒]";
+                                //向多个用户发起通知 徐珊、黄丽、杨娟、崇祝燕
+                                String[] names = {"徐珊","黄丽","杨娟","崇祝燕"};
+                                List<UserDTO> usersInfo = wareHouseDetailedMapper.getUsersInfo(names);
+                                //获取目前领用流程的taskid,根据procInsId去查taskId
+                                if (null != usersInfo) {
+                                    usersInfo.forEach(us->{
+                                        try {
+                                            //发送通知
+                                            myNoticeService.add("cs", title, "", "库存提醒", userDTO.getLoginName(), day,us.getLoginName(), us.getId());
+                                        } catch (Exception e) {
+                                            e.printStackTrace();
+                                        }
+                                    });
+                                }
+//                                myNoticeService.add("", title, "", "库存提醒", userDTO.getLoginName(), day,"程倩", "1613087772650008578");
+                            }
                         }
                     }
 
@@ -186,6 +222,7 @@ public class CollectService {
             }
 
         }
+        basicMapper.updateById(info);
         // 修改附件信息列表
         if (CollectionUtils.isNotEmpty(dto.getFiles())) {
             infoService.updateFiles(dto.getFiles(), userDTO, dto.getId());

+ 8 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseDetailedMapper.java

@@ -1,6 +1,7 @@
 package com.jeeplus.test.materialManagement.wareHouse.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseDetailed;
 import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 
@@ -22,4 +23,11 @@ public interface WareHouseDetailedMapper extends BaseMapper<WareHouseDetailed> {
     List<WorkAttachmentDto> getByAttachmentId(String id);
 
     List<String> getIdByBasicId(String id);
+
+    /**
+     * 根据登陆名称查去用户信息
+     * @param names
+     * @return
+     */
+    List<UserDTO> getUsersInfo(String[] names);
 }

+ 4 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseSummaryMapper.java

@@ -1,6 +1,7 @@
 package com.jeeplus.test.materialManagement.wareHouse.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseDetailed;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary;
 import org.apache.ibatis.annotations.Param;
 
@@ -12,13 +13,13 @@ import java.util.List;
  **/
 public interface WareHouseSummaryMapper extends BaseMapper<WareHouseSummary> {
     /**
-     * 根据入库类型和商品名称查相关数据
+     * 根据入库类型和商品名称查询库存数量
      * @param tradeName
      * @param wareHouseType
      * @return
      */
-    WareHouseSummary getInfoByTradeName(@Param("tradeName") String tradeName,
-                                        @Param("wareHouseType") String wareHouseType);
+    Double getInfoByTradeName(@Param("tradeName") String tradeName,
+                                         @Param("wareHouseType") String wareHouseType);
 
     /**
      * 根据入库基础表id查出汇总表数据

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

@@ -45,13 +45,16 @@
 			material_management_warehouse_detailed a
 			left join
 			(select sum(collect_number) as collect_number,goods_name,status from material_management_collect_detailed e
-			left join material_management_collect_basics f on e.basic_id = f.id and f.del_flag = 0 GROUP BY e.goods_name) b
-			on a.trade_name = b.goods_name and b.status = 5
+			left join material_management_collect_basics f on e.basic_id = f.id and f.del_flag = 0
+			WHERE f.`status` = 5
+			GROUP BY e.goods_name) b
+			on a.trade_name = b.goods_name
 
 			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
+			HAVING sum( trade_number ) - collect_number > 0
 			ORDER BY a.update_date DESC
 	</select>
     <select id="findRequestId" resultType="java.lang.String">
@@ -66,7 +69,8 @@
 			a.ware_house_date,
 			sy.name as wareHouseHandledBy,
 			so.name as wareHouseHandledByOff,
-			b.trade_name
+			b.trade_name,
+			b.trade_number
 		FROM
 			material_management_warehouse_basics a
 			LEFT JOIN
@@ -86,7 +90,8 @@
 			sy.name as collectHandleBy,
 			so.name as collectHandleByOff,
 			a.collect_date,
-			b.goods_name
+			b.goods_name,
+			b.collect_number
 		FROM
 			material_management_collect_basics a
 			LEFT JOIN

+ 6 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseDetailedMapper.xml

@@ -28,4 +28,10 @@
     <select id="getIdByBasicId" resultType="java.lang.String">
         select a.id from material_management_warehouse_detailed a where a.basic_id = #{id} and a.del_flag = 0
     </select>
+    <select id="getUsersInfo" resultType="com.jeeplus.sys.service.dto.UserDTO">
+        select a.id,a.login_name from sys_user a where login_name in
+        <foreach collection="names" open="(" separator="," close=")" item="name">
+            #{name}
+        </foreach>
+    </select>
 </mapper>

+ 26 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseSummaryMapper.xml

@@ -5,9 +5,32 @@
         update material_management_warehouse_summary set del_flag = 1
     </delete>
     <select id="getInfoByTradeName"
-            resultType="com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary">
-        select * from material_management_warehouse_summary
-        where ware_house_type = #{wareHouseType} and trade_name = #{tradeName} and del_flag = 0
+            resultType="java.lang.Double">
+        SELECT
+            ( sum( a.trade_number )- c.num2 ) AS num1
+        FROM
+            material_management_warehouse_detailed a
+            LEFT JOIN (
+            SELECT
+                sum( b.collect_number ) AS num2,
+                b.collect_type,
+                b.goods_name
+            FROM
+                material_management_collect_detailed b
+                LEFT JOIN material_management_collect_basics c ON b.basic_id = c.id
+                AND c.del_flag = 0
+            WHERE
+                b.collect_type = #{wareHouseType}
+                AND b.goods_name = #{tradeName}
+
+            AND b.del_flag = 0
+            AND c.`status` = 5
+            ) AS c ON a.ware_house_type = c.collect_type
+            AND a.trade_name = c.goods_name
+        WHERE
+            a.ware_house_type = #{wareHouseType}
+            AND a.trade_name = #{tradeName}
+            AND a.del_flag = 0
     </select>
     <select id="getInfoByBasicId"
             resultType="com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary">

+ 21 - 6
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/service/WareHouseBasicService.java

@@ -78,6 +78,13 @@ public class WareHouseBasicService {
         if (StringUtils.isNotEmpty(dto.getTradeName())) {
             queryWrapper.like("b.trade_name", dto.getTradeName());
         }
+
+        String[] wareHouseDates = dto.getWareHouseDates();
+        if (wareHouseDates != null) {
+
+            queryWrapper.between("a.ware_house_date", wareHouseDates[0], wareHouseDates[1]);
+        }
+
         queryWrapper.and(wq ->{
             wq.eq("a.`status`","0")
                     .or()
@@ -94,15 +101,22 @@ public class WareHouseBasicService {
         QueryWrapper<WareHouseDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, WareHouseDto.class);
 
         queryWrapper.eq("a.del_flag", "0");
+        queryWrapper.eq("a.status", "5");
         if (StringUtils.isNotEmpty(dto.getTradeName())) {
             queryWrapper.like("b.goods_name", dto.getTradeName());
         }
 
-        queryWrapper.and(wq ->{
-            wq.eq("a.`status`","0")
-                    .or()
-                    .eq("a.`status`","5");
-        });
+        String[] collectDates = dto.getCollectDates();
+        if (collectDates != null) {
+
+            queryWrapper.between("a.collect_date", collectDates[0], collectDates[1]);
+        }
+
+//        queryWrapper.and(wq ->{
+//            wq.eq("a.`status`","0")
+//                    .or()
+//                    .eq("a.`status`","5");
+//        });
 
         return basicMapper.collectHistoryList(page, queryWrapper);
     }
@@ -465,7 +479,8 @@ public class WareHouseBasicService {
         QueryWrapper<WareHouseDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, WareHouseDto.class);
 
         queryWrapper.eq("a.del_flag", "0");
-        queryWrapper.gt("a.trade_number", "0");
+        // 库存数量小于等于0的不展示
+//        queryWrapper.gt("a.trade_number - b.collect_number", "0");
 //        if (StringUtils.isNotEmpty(dto.getWareHouseNumber())) {
 //            queryWrapper.like("c.ware_house_number", dto.getWareHouseNumber());
 //        }

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

@@ -78,6 +78,11 @@ public class WareHouseDto {
     private String tradeNumber;
 
     /**
+     * 领用数量
+     */
+    private String collectNumber;
+
+    /**
      * 单位
      */
     private String company;
@@ -158,6 +163,12 @@ public class WareHouseDto {
     @TableField(exist = false)
     private String[] wareHouseDates;
 
+    /**
+     * 领用时间
+     */
+    @TableField(exist = false)
+    private String[] collectDates;
+
     private List<WorkAttachmentDto> files;
 
     /**
@@ -243,7 +254,8 @@ public class WareHouseDto {
     /**
      * 领用时间
      */
-    private String collectDate;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date collectDate;
 
     /**
      * 合同编号

+ 6 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/MyNoticeController.java

@@ -46,6 +46,12 @@ public class MyNoticeController {
         return service.update(taskId, noticeId);
     }
 
+    @ApiOperation(value = "库存提醒修改已读状态")
+    @GetMapping("/stockUpdate")
+    public String stockUpdate(MyNoticeList myNoticeList) {
+        return service.stockUpdate(myNoticeList);
+    }
+
     /**
      * 部分标记为已读
      * @param ids

+ 6 - 0
jeeplus-plugins/jeeplus-flowable/src/main/java/com/jeeplus/flowable/service/MyNoticeService.java

@@ -135,6 +135,12 @@ public class MyNoticeService {
         return "操作成功";
     }
 
+    public String stockUpdate(MyNoticeList myNoticeList) {
+        myNoticeList.setType("1");
+        mapper.updateById(myNoticeList);
+        return "操作成功";
+    }
+
     public String readAll() {
         // 获取当前登录人信息
         UserDTO userDTO = UserUtils.getCurrentUserDTO();