|
@@ -6,13 +6,11 @@ import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
|
|
+import com.platform.common.cache.ConfigCache;
|
|
import com.platform.common.constant.CommonConstants;
|
|
import com.platform.common.constant.CommonConstants;
|
|
import com.platform.common.enums.DataFilterTypeEnum;
|
|
import com.platform.common.enums.DataFilterTypeEnum;
|
|
import com.platform.common.exception.BusinessException;
|
|
import com.platform.common.exception.BusinessException;
|
|
-import com.platform.common.util.BeanConverterUtil;
|
|
|
|
-import com.platform.common.util.BeanUtils;
|
|
|
|
-import com.platform.common.util.IdGeneratorUtils;
|
|
|
|
-import com.platform.common.util.StringUtils;
|
|
|
|
|
|
+import com.platform.common.util.*;
|
|
import com.platform.dao.bean.MyPage;
|
|
import com.platform.dao.bean.MyPage;
|
|
import com.platform.dao.bean.MyVOPage;
|
|
import com.platform.dao.bean.MyVOPage;
|
|
import com.platform.dao.dto.sb.SbModelSpareBomDTO;
|
|
import com.platform.dao.dto.sb.SbModelSpareBomDTO;
|
|
@@ -22,10 +20,14 @@ import com.platform.dao.dto.store.InStoreFormDTO;
|
|
import com.platform.dao.dto.store.OutStoreFormDTO;
|
|
import com.platform.dao.dto.store.OutStoreFormDTO;
|
|
import com.platform.dao.dto.store.SpareStoreDTO;
|
|
import com.platform.dao.dto.store.SpareStoreDTO;
|
|
import com.platform.dao.dto.store.StoreDTO;
|
|
import com.platform.dao.dto.store.StoreDTO;
|
|
|
|
+import com.platform.dao.entity.sqarepartmanage.SparePartInfo;
|
|
import com.platform.dao.entity.sqarepartmanage.SpareType;
|
|
import com.platform.dao.entity.sqarepartmanage.SpareType;
|
|
import com.platform.dao.entity.store.SpareStore;
|
|
import com.platform.dao.entity.store.SpareStore;
|
|
import com.platform.dao.entity.store.Store;
|
|
import com.platform.dao.entity.store.Store;
|
|
import com.platform.dao.enums.StoreLevelEnum;
|
|
import com.platform.dao.enums.StoreLevelEnum;
|
|
|
|
+import com.platform.dao.enums.SysConfigEnum;
|
|
|
|
+import com.platform.dao.enums.WorkplaceBacklogDetailTypeEnum;
|
|
|
|
+import com.platform.dao.enums.WorkplaceBacklogTypeEnum;
|
|
import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
|
|
import com.platform.dao.mapper.sqarepartmanage.SparePartInfoMapper;
|
|
import com.platform.dao.mapper.sqarepartmanage.SparePartUsedMapper;
|
|
import com.platform.dao.mapper.sqarepartmanage.SparePartUsedMapper;
|
|
import com.platform.dao.mapper.sqarepartmanage.SpareTypeMapper;
|
|
import com.platform.dao.mapper.sqarepartmanage.SpareTypeMapper;
|
|
@@ -33,6 +35,7 @@ import com.platform.dao.mapper.store.InStoreFormMapper;
|
|
import com.platform.dao.mapper.store.OutStoreFormMapper;
|
|
import com.platform.dao.mapper.store.OutStoreFormMapper;
|
|
import com.platform.dao.mapper.store.SpareStoreMapper;
|
|
import com.platform.dao.mapper.store.SpareStoreMapper;
|
|
import com.platform.dao.mapper.store.StoreMapper;
|
|
import com.platform.dao.mapper.store.StoreMapper;
|
|
|
|
+import com.platform.dao.util.MessageTemplateUtil;
|
|
import com.platform.dao.vo.query.sparepartmanage.SparePartInfoVO;
|
|
import com.platform.dao.vo.query.sparepartmanage.SparePartInfoVO;
|
|
import com.platform.dao.vo.query.store.*;
|
|
import com.platform.dao.vo.query.store.*;
|
|
import com.platform.dao.vo.sb.SbModelSpareBomVO;
|
|
import com.platform.dao.vo.sb.SbModelSpareBomVO;
|
|
@@ -40,6 +43,7 @@ import com.platform.dao.vo.spare.SparePartUsedVO;
|
|
import com.platform.dao.vo.spare.SpareStoreInfoVO;
|
|
import com.platform.dao.vo.spare.SpareStoreInfoVO;
|
|
import com.platform.dao.vo.spare.SpareTypeVO;
|
|
import com.platform.dao.vo.spare.SpareTypeVO;
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
|
|
+import com.platform.service.event.WorkplaceBacklogEvent;
|
|
import com.platform.service.sb.SbModelSpareBomService;
|
|
import com.platform.service.sb.SbModelSpareBomService;
|
|
import com.platform.service.sqarepartmanage.SpareTypeService;
|
|
import com.platform.service.sqarepartmanage.SpareTypeService;
|
|
import com.platform.service.store.SpareStoreService;
|
|
import com.platform.service.store.SpareStoreService;
|
|
@@ -50,6 +54,7 @@ import com.platform.service.util.CodeFileUtils;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import tk.mybatis.mapper.weekend.Weekend;
|
|
import tk.mybatis.mapper.weekend.Weekend;
|
|
@@ -58,6 +63,7 @@ import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.text.DecimalFormat;
|
|
import java.text.DecimalFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -267,35 +273,11 @@ public class SpareStoreServiceImpl extends BaseServiceImpl<SpareStoreMapper, Spa
|
|
return new MyPage(mapper.selectTotalStock(record));
|
|
return new MyPage(mapper.selectTotalStock(record));
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public List<SpareStoreVO> selectTotalStock(SpareStoreDTO record) {
|
|
|
|
- return mapper.selectTotalStock(record);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public List<SpareStoreVO> getListByDTO(SpareStoreDTO sparePartInfoDTO) {
|
|
public List<SpareStoreVO> getListByDTO(SpareStoreDTO sparePartInfoDTO) {
|
|
return mapper.selectList(sparePartInfoDTO);
|
|
return mapper.selectList(sparePartInfoDTO);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 查询某个备件的库存
|
|
|
|
- * 如果不传递筛选条件,则查询该备件整个集团的库存
|
|
|
|
- * @param record
|
|
|
|
- * spareId 备件id
|
|
|
|
- * useCompany 所属分公司
|
|
|
|
- * useProject 所属项目部
|
|
|
|
- * userId 所属用户
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- @Override
|
|
|
|
- public SpareStoreVO selectOneTotalStock(SpareStoreDTO record) {
|
|
|
|
- List<SpareStoreVO> list = mapper.selectTotalStock(record);
|
|
|
|
- if(!CollectionUtils.isEmpty(list)) {
|
|
|
|
- return list.get(0);
|
|
|
|
- }else{
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void updateQrCode(SpareStoreDTO model) {
|
|
public void updateQrCode(SpareStoreDTO model) {
|
|
@@ -393,7 +375,46 @@ public class SpareStoreServiceImpl extends BaseServiceImpl<SpareStoreMapper, Spa
|
|
return getSpareStoreInfoVO(storeId,null);
|
|
return getSpareStoreInfoVO(storeId,null);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 定时扫描是否备件小于最低库存
|
|
|
|
+ *
|
|
|
|
+ * 1:增加warnStatus状态
|
|
|
|
+ * 增加warnStatus的枚举类型
|
|
|
|
+ * 2:每周定时扫描warnStatus为正常的,判断他的最低库存是否正常,有异常的交给人工来判定。并发送邮件通知
|
|
|
|
+ * 3:扫描的时候,是扫描总库存,有可能仓库里面的备件不在同一个库存。
|
|
|
|
+ * <p>
|
|
|
|
+ * 4:增加预警菜单,查出来所有异常的列表
|
|
|
|
+ * 5:增加人工干预,可以改变每条的状态。
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void genMinStockWarn() {
|
|
|
|
+ SpareStoreDTO record = new SpareStoreDTO();
|
|
|
|
+ record.setSearchMinStockWarn(true);
|
|
|
|
+ // 查找超过最低库存的备件
|
|
|
|
+ List<SpareStoreVO> spareStoreVOList = mapper.selectList(record);
|
|
|
|
+ List<SpareStore> sparePartInfos = new ArrayList<>();
|
|
|
|
+ for (SpareStoreVO sparePartInfoVO : spareStoreVOList) {
|
|
|
|
+ SpareStore spareStore = new SpareStore();
|
|
|
|
+ spareStore.setId(sparePartInfoVO.getId());
|
|
|
|
+ spareStore.setWarnStatus(1);
|
|
|
|
+ sparePartInfos.add(spareStore);
|
|
|
|
+ mapper.updateByPrimaryKeySelective(spareStore);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(sparePartInfos)) {
|
|
|
|
+ // 发送邮件通知
|
|
|
|
+ String email = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.SPARE_WARN_EMAIL.name());
|
|
|
|
+ String domain = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.SYSTEM_DOMAIN.name());
|
|
|
|
+ String url = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.URL_SPARE_MIN_STOCK_WARN.name());
|
|
|
|
+ if (StringUtils.isNotBlank(email)) {
|
|
|
|
+ // 通过给邮件人员
|
|
|
|
+ SpringContextHolder.publishEvent(new WorkplaceBacklogEvent(WorkplaceBacklogTypeEnum.SPARE_STORE_MIN_WARN.getValue(), WorkplaceBacklogDetailTypeEnum.SPARE_STORE_MIN_WARN.getValue(),
|
|
|
|
+ null, MessageTemplateUtil.getSpareMinStockWarnNotice(domain + url, sparePartInfos.size()),
|
|
|
|
+ null, null, Arrays.asList(email)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|