QualityFenxibaogaoServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /*
  2. * Copyright [2022] [https://www.baiduc.com]
  3. *
  4. * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
  5. *
  6. * 1.请不要删除和修改根目录下的LICENSE文件。
  7. * 2.请不要删除和修改Snowy源码头部的版权声明。
  8. * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
  9. * 4.分发源码时候,请注明软件出处 https://www.baiduc.com
  10. * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
  11. * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com
  12. */
  13. package vip.xiaonuo.quality.service.impl;
  14. import cn.hutool.core.bean.BeanUtil;
  15. import cn.hutool.core.collection.CollStreamUtil;
  16. import cn.hutool.core.util.ObjectUtil;
  17. import cn.hutool.core.util.StrUtil;
  18. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  19. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  20. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  21. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import vip.xiaonuo.common.enums.CommonSortOrderEnum;
  26. import vip.xiaonuo.common.exception.CommonException;
  27. import vip.xiaonuo.common.page.CommonPageRequest;
  28. import vip.xiaonuo.purchase.entity.PurchaseOrder;
  29. import vip.xiaonuo.purchase.param.PurchaseAllParam;
  30. import vip.xiaonuo.quality.entity.QualityFenxibaogao;
  31. import vip.xiaonuo.quality.mapper.QualityFenxibaogaoMapper;
  32. import vip.xiaonuo.quality.param.*;
  33. import vip.xiaonuo.quality.param.vo.ChengPinQuXianVo;
  34. import vip.xiaonuo.quality.service.QualityFenxibaogaoService;
  35. import vip.xiaonuo.write.entity.WriteThreshold;
  36. import vip.xiaonuo.write.entity.WriteWarning;
  37. import vip.xiaonuo.write.mapper.WriteThresholdMapper;
  38. import vip.xiaonuo.write.mapper.WriteWarningMapper;
  39. import java.util.Calendar;
  40. import java.util.Date;
  41. import java.util.List;
  42. /**
  43. * 质量分析报表Service接口实现类
  44. *
  45. * @author 1
  46. * @date 2025/02/26 16:25
  47. **/
  48. @Service
  49. public class QualityFenxibaogaoServiceImpl extends ServiceImpl<QualityFenxibaogaoMapper, QualityFenxibaogao> implements QualityFenxibaogaoService {
  50. @Autowired
  51. private QualityFenxibaogaoMapper qualityFenxibaogaoMapper;
  52. @Autowired
  53. private WriteThresholdMapper thresholdMapper;
  54. @Autowired
  55. private WriteWarningMapper warningMapper;
  56. @Override
  57. public Page<QualityFenxibaogao> page(QualityFenxibaogaoPageParam qualityFenxibaogaoPageParam) {
  58. QueryWrapper<QualityFenxibaogao> queryWrapper = new QueryWrapper<>();
  59. String orgId = qualityFenxibaogaoPageParam.getOrgId();
  60. String type = qualityFenxibaogaoPageParam.getFnumber();
  61. String selfBatchNum = qualityFenxibaogaoPageParam.getSelfBatchNum();
  62. String startDate = qualityFenxibaogaoPageParam.getStartDate();
  63. String endDate = qualityFenxibaogaoPageParam.getEndDate();
  64. queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId);
  65. queryWrapper.ge(StringUtils.isNotBlank(startDate),"samp_date",startDate);
  66. queryWrapper.le(StringUtils.isNotBlank(endDate),"samp_date",endDate);
  67. queryWrapper.like(StringUtils.isNotBlank(selfBatchNum),"self_batch_num",selfBatchNum);
  68. queryWrapper.likeRight(StringUtils.isNotBlank(type),"fnumber",type);
  69. queryWrapper.orderByDesc("samp_date");
  70. Page<QualityFenxibaogao> page = new Page<>(qualityFenxibaogaoPageParam.getPageNum(), qualityFenxibaogaoPageParam.getPageSize());
  71. return qualityFenxibaogaoMapper.selectPage(page, queryWrapper);
  72. }
  73. @Transactional(rollbackFor = Exception.class)
  74. @Override
  75. public void add(QualityFenxibaogaoAddParam qualityFenxibaogaoAddParam) {
  76. String orgId = qualityFenxibaogaoAddParam.getOrgId();
  77. if(StringUtils.isBlank(orgId)) {
  78. throw new CommonException("请选择需要添加的公司");
  79. }
  80. QualityFenxibaogao qualityFenxibaogao = BeanUtil.toBean(qualityFenxibaogaoAddParam, QualityFenxibaogao.class);
  81. this.save(qualityFenxibaogao);
  82. String otation = qualityFenxibaogao.getSpecificOtation();
  83. Double value = Double.valueOf(otation);
  84. QueryWrapper<WriteThreshold> queryWrapper = new QueryWrapper<>();
  85. queryWrapper.eq("org_id",qualityFenxibaogao.getOrgId()).eq("type_s",7);
  86. List<WriteThreshold> thresholds = thresholdMapper.selectList(queryWrapper);
  87. if (thresholds.size() != 0) {
  88. for (WriteThreshold threshold : thresholds) {
  89. String valuesS = threshold.getValuesS();
  90. Double valueOf = Double.valueOf(valuesS);
  91. Integer isTrue = threshold.getIsTrue();
  92. if (0 == isTrue) {
  93. if (value < valueOf) {
  94. WriteWarning warning = new WriteWarning();
  95. warning.setWarningDate(new Date());
  96. warning.setWarningType(threshold.getIndexS());
  97. warning.setWarningLevel(threshold.getLevelS().toString());
  98. warning.setWarningContent(threshold.getIndexS() + otation + "小于阈值");
  99. warning.setUserName(threshold.getUserName());
  100. warning.setUserId(threshold.getUserId());
  101. warning.setType(7);
  102. warningMapper.insert(warning);
  103. }
  104. } else if (1 == isTrue) {
  105. WriteWarning warning = new WriteWarning();
  106. warning.setWarningDate(new Date());
  107. warning.setWarningType(threshold.getIndexS());
  108. warning.setWarningLevel(threshold.getLevelS().toString());
  109. warning.setWarningContent(threshold.getIndexS() + otation + "等于阈值");
  110. warning.setUserName(threshold.getUserName());
  111. warning.setUserId(threshold.getUserId());
  112. warning.setType(7);
  113. warningMapper.insert(warning);
  114. } else if (2 == isTrue) {
  115. WriteWarning warning = new WriteWarning();
  116. warning.setWarningDate(new Date());
  117. warning.setWarningType(threshold.getIndexS());
  118. warning.setWarningLevel(threshold.getLevelS().toString());
  119. warning.setWarningContent(threshold.getIndexS() + otation + "大于阈值");
  120. warning.setUserName(threshold.getUserName());
  121. warning.setUserId(threshold.getUserId());
  122. warning.setType(7);
  123. warningMapper.insert(warning);
  124. }
  125. }
  126. }
  127. }
  128. @Transactional(rollbackFor = Exception.class)
  129. @Override
  130. public void edit(QualityFenxibaogao qualityFenxibaogao) {
  131. this.updateById(qualityFenxibaogao);
  132. }
  133. @Transactional(rollbackFor = Exception.class)
  134. @Override
  135. public void delete(QualityFenxibaogaoIdParam qualityFenxibaogaoIdParamList) {
  136. // 执行删除
  137. this.removeById(qualityFenxibaogaoIdParamList.getId());
  138. }
  139. @Override
  140. public QualityFenxibaogao queryEntity(String id) {
  141. QualityFenxibaogao qualityFenxibaogao = this.getById(id);
  142. if(ObjectUtil.isEmpty(qualityFenxibaogao)) {
  143. throw new CommonException("质量分析报表不存在,id值为:{}", id);
  144. }
  145. return qualityFenxibaogao;
  146. }
  147. @Override
  148. public List<QualityFenxibaogao> getChengPin(ChengPingZhiParam chengPingZhiParam) {
  149. QueryWrapper<QualityFenxibaogao> wrapper = new QueryWrapper<>();
  150. wrapper.select("material_name , quality_type");
  151. wrapper.groupBy("material_name");
  152. wrapper.eq(StringUtils.isNotBlank(chengPingZhiParam.getOrgId()),"org_id",chengPingZhiParam.getOrgId());
  153. return this.list(wrapper);
  154. }
  155. @Override
  156. public List<ChengPinQuXianVo> getChengPinQuXian(ChengPingZhiParam chengPingZhiParam) {
  157. String orgId = chengPingZhiParam.getOrgId();
  158. Integer dateType = chengPingZhiParam.getDateType();
  159. Integer number = chengPingZhiParam.getNumber();
  160. // Integer type = chengPingZhiParam.getType();
  161. QueryWrapper<QualityFenxibaogao> wrapper = new QueryWrapper<>();
  162. wrapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId)
  163. .eq(StringUtils.isNotBlank(chengPingZhiParam.getInspecItems()),"inspec_items",chengPingZhiParam.getInspecItems())
  164. .eq(StringUtils.isNotBlank(chengPingZhiParam.getMaterialName()),"material_name",chengPingZhiParam.getMaterialName())
  165. ;
  166. List<ChengPinQuXianVo> busAllParams;
  167. if (ObjectUtil.isEmpty(dateType) || 0 == dateType){
  168. Calendar calendar = Calendar.getInstance();
  169. if (null == number) {
  170. calendar.add(Calendar.YEAR, -3);
  171. } else {
  172. calendar.add(Calendar.YEAR, -number);
  173. }
  174. wrapper.between("report_date", calendar.getTime(), new Date());
  175. busAllParams= qualityFenxibaogaoMapper.getChengPinQuXianYear(wrapper);
  176. }else {
  177. Calendar calendar = Calendar.getInstance();
  178. if (null == number) {
  179. calendar.add(Calendar.MONTH, -13);
  180. } else {
  181. calendar.add(Calendar.MONTH, -number);
  182. }
  183. wrapper.between("report_date", calendar.getTime(), new Date());
  184. busAllParams = qualityFenxibaogaoMapper.getChengPinQuXianMonth(wrapper);
  185. }
  186. return busAllParams;
  187. }
  188. @Override
  189. public List<QualityFenxibaogao> getJianCeXiangMu(ChengPingZhiParam chengPingZhiParam) {
  190. QueryWrapper<QualityFenxibaogao> wrapper = new QueryWrapper<>();
  191. wrapper.select("inspec_items, quality_type");
  192. wrapper.groupBy("inspec_items");
  193. wrapper.eq(StringUtils.isNotBlank(chengPingZhiParam.getOrgId()),"org_id",chengPingZhiParam.getOrgId());
  194. return this.list(wrapper);
  195. }
  196. }