瀏覽代碼

Merge remote-tracking branch 'origin/Joburgess' into Joburgess

周箭河 5 年之前
父節點
當前提交
a08b02c751

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsDao.java

@@ -70,4 +70,8 @@ public interface GoodsDao extends BaseDAO<Integer, Goods> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.Goods>
      */
     List<Goods> findBySns(@Param("sns") List<String> sns);
+
+    String getInnerRepertoryWarnName(@Param("innerRepertoryWarnNum") String innerRepertoryWarnNum);
+
+    String getOuterRepertoryWarnName(@Param("outerRepertoryWarnNum") String outerRepertoryWarnNum);
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -156,6 +156,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_REPAIR_UNSEND_COMPLETED("SMS_REPAIR_UNSEND_COMPLETED","乐器维修完成自取"),
     SMS_PAYMENT_DETAIL("SMS_PAYMENT_DETAIL","缴费项目缴费详情提醒"),
     SMS_PAYMENT_CREATE("SMS_PAYMENT_CREATE","缴费项目创建提醒"),
+    SMS_GOODS_REPERTORY_WARN("SMS_GOODS_REPERTORY_WARN","商品库存预警"),
     SMS_REPAIR_SEND_COMPLETED("SMS_REPAIR_SEND_COMPLETED","乐器维修完成邮寄");
 
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java

@@ -52,4 +52,14 @@ public interface GoodsService extends BaseService<Integer, Goods> {
      * @return java.util.List<com.ym.mec.biz.dal.entity.Goods>
      */
     List<Goods> importGoods(MultipartFile file, Integer operatorId) throws Exception;
+
+    /**
+     * @describe 库存预警
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/10/10
+     * @time 11:30
+     * @return void
+     */
+    void repertoryWarn();
 }

+ 47 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -1,19 +1,25 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.GoodsDao;
 import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.GoodsProcurement;
 import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.TemplateTypeEnum;
 import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.UploadFileService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.UploadReturnBean;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.excel.IniFileUtil;
 import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -30,10 +36,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -48,6 +51,12 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 	private IdGeneratorService idGeneratorService;
 	@Autowired
 	private GoodsProcurementDao goodsProcurementDao;
+	@Autowired
+	private SysConfigDao sysConfigDao;
+	@Autowired
+	private SysMessageService sysMessageService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Integer, Goods> getDAO() {
@@ -190,4 +199,38 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 
 		return goodsList;
 	}
+
+	@Override
+	public void repertoryWarn() {
+		//预警手机号
+		String repertoryWarnPhone = sysConfigDao.findConfigValue("repertory_warn_phone");
+		if(StringUtils.isEmpty(repertoryWarnPhone)){
+			return;
+		}
+		SysUser sysUser = sysUserFeignService.queryUserByMobile(repertoryWarnPhone);
+		if(sysUser == null || sysUser.getId() == null){
+			throw new BizException("库存预警手机号不存在");
+		}
+		Map<Integer, String> receivers = new HashMap<>(1);
+		receivers.put(sysUser.getId(), repertoryWarnPhone);
+		//内部库存预警
+		String innerRepertoryWarnNum = sysConfigDao.findConfigValue("inner_repertory_warn_num");
+		if(StringUtils.isNotEmpty(innerRepertoryWarnNum)){
+			String goodsNames = goodsDao.getInnerRepertoryWarnName(innerRepertoryWarnNum);
+			if(StringUtils.isNotEmpty(goodsNames)){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null,null,
+						goodsNames,"内部");
+			}
+		}
+
+		//外部库存预警
+		String outerRepertoryWarnNum = sysConfigDao.findConfigValue("outer_repertory_warn_num");
+		if(StringUtils.isNotEmpty(outerRepertoryWarnNum)){
+			String goodsNames = goodsDao.getOuterRepertoryWarnName(outerRepertoryWarnNum);
+			if(StringUtils.isNotEmpty(goodsNames)){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI, MessageTypeEnum.SMS_GOODS_REPERTORY_WARN, receivers, null, 0, null,null,
+						goodsNames,"税务");
+			}
+		}
+	}
 }

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/GoodsMapper.xml

@@ -308,4 +308,10 @@
             #{sn}
         </foreach>
     </select>
+    <select id="getInnerRepertoryWarnName" resultType="java.lang.String">
+        SELECT GROUP_CONCAT( DISTINCT name_) FROM goods WHERE stock_count_ &lt;= #{innerRepertoryWarnNum} AND stock_warning_ = 0 AND status_ = 1
+    </select>
+    <select id="getOuterRepertoryWarnName" resultType="java.lang.String">
+        SELECT GROUP_CONCAT( DISTINCT name_) FROM goods WHERE tax_stock_count_ &lt;= #{outerRepertoryWarnNum} AND stock_warning_ = 0 AND status_ = 1
+    </select>
 </mapper>

+ 3 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -137,4 +137,7 @@ public interface TaskRemoteService {
 	@GetMapping("task/operatingReport")
 	void operatingReport();
 
+	//商品库存预警
+	@GetMapping("task/repertoryWarn")
+    void goodsRepertoryFBIWarnTask();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -170,4 +170,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void operatingReport() {
 		logger.info("经营报表生成失败");
 	}
+
+	@Override
+	public void goodsRepertoryFBIWarnTask() {
+		logger.info("商品库存预警推送失败");
+	}
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/GoodsRepertoryFBIWarnTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class GoodsRepertoryFBIWarnTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.goodsRepertoryFBIWarnTask();
+	}
+}

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -73,6 +73,15 @@ public class TaskController extends BaseController {
 	@Autowired
 	private OperatingReportService operatingReportService;
 
+	@Autowired
+	private GoodsService goodsService;
+
+	@GetMapping(value = "/repertoryWarn")
+	// 商品库存预警
+	public void repertoryWarn(){
+		goodsService.repertoryWarn();
+	}
+
 	@GetMapping(value = "/refreshUserMusicGroupPaymentStatusTask")
 	// 刷新学员乐团付费状态
 	public void refreshUserMusicGroupPaymentStatusTask(){