/* * Copyright [2022] [https://www.baiduc.com] * * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: * * 1.请不要删除和修改根目录下的LICENSE文件。 * 2.请不要删除和修改Snowy源码头部的版权声明。 * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 * 4.分发源码时候,请注明软件出处 https://www.baiduc.com * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.baiduc.com */ package vip.xiaonuo.quality.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import vip.xiaonuo.common.enums.CommonSortOrderEnum; import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.page.CommonPageRequest; import vip.xiaonuo.purchase.entity.PurchaseOrder; import vip.xiaonuo.purchase.param.PurchaseAllParam; import vip.xiaonuo.quality.entity.QualityFenxibaogao; import vip.xiaonuo.quality.mapper.QualityFenxibaogaoMapper; import vip.xiaonuo.quality.param.*; import vip.xiaonuo.quality.param.vo.ChengPinQuXianVo; import vip.xiaonuo.quality.service.QualityFenxibaogaoService; import vip.xiaonuo.write.entity.WriteThreshold; import vip.xiaonuo.write.entity.WriteWarning; import vip.xiaonuo.write.mapper.WriteThresholdMapper; import vip.xiaonuo.write.mapper.WriteWarningMapper; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 质量分析报表Service接口实现类 * * @author 1 * @date 2025/02/26 16:25 **/ @Service public class QualityFenxibaogaoServiceImpl extends ServiceImpl implements QualityFenxibaogaoService { @Autowired private QualityFenxibaogaoMapper qualityFenxibaogaoMapper; @Autowired private WriteThresholdMapper thresholdMapper; @Autowired private WriteWarningMapper warningMapper; @Override public Page page(QualityFenxibaogaoPageParam qualityFenxibaogaoPageParam) { QueryWrapper queryWrapper = new QueryWrapper<>(); String orgId = qualityFenxibaogaoPageParam.getOrgId(); String type = qualityFenxibaogaoPageParam.getFnumber(); String selfBatchNum = qualityFenxibaogaoPageParam.getSelfBatchNum(); String startDate = qualityFenxibaogaoPageParam.getStartDate(); String endDate = qualityFenxibaogaoPageParam.getEndDate(); queryWrapper.eq(StringUtils.isNotBlank(orgId),"org_id",orgId); queryWrapper.ge(StringUtils.isNotBlank(startDate),"samp_date",startDate); queryWrapper.le(StringUtils.isNotBlank(endDate),"samp_date",endDate); queryWrapper.like(StringUtils.isNotBlank(selfBatchNum),"self_batch_num",selfBatchNum); queryWrapper.likeRight(StringUtils.isNotBlank(type),"fnumber",type); queryWrapper.orderByDesc("samp_date"); Page page = new Page<>(qualityFenxibaogaoPageParam.getPageNum(), qualityFenxibaogaoPageParam.getPageSize()); return qualityFenxibaogaoMapper.selectPage(page, queryWrapper); } @Transactional(rollbackFor = Exception.class) @Override public void add(QualityFenxibaogaoAddParam qualityFenxibaogaoAddParam) { String orgId = qualityFenxibaogaoAddParam.getOrgId(); if(StringUtils.isBlank(orgId)) { throw new CommonException("请选择需要添加的公司"); } QualityFenxibaogao qualityFenxibaogao = BeanUtil.toBean(qualityFenxibaogaoAddParam, QualityFenxibaogao.class); this.save(qualityFenxibaogao); String otation = qualityFenxibaogao.getSpecificOtation(); Double value = Double.valueOf(otation); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("org_id",qualityFenxibaogao.getOrgId()).eq("type_s",7); List thresholds = thresholdMapper.selectList(queryWrapper); if (thresholds.size() != 0) { for (WriteThreshold threshold : thresholds) { String valuesS = threshold.getValuesS(); Double valueOf = Double.valueOf(valuesS); Integer isTrue = threshold.getIsTrue(); if (0 == isTrue) { if (value < valueOf) { WriteWarning warning = new WriteWarning(); warning.setWarningDate(new Date()); warning.setWarningType(threshold.getIndexS()); warning.setWarningLevel(threshold.getLevelS().toString()); warning.setWarningContent(threshold.getIndexS() + otation + "小于阈值"); warning.setUserName(threshold.getUserName()); warning.setUserId(threshold.getUserId()); warning.setType(7); warningMapper.insert(warning); } } else if (1 == isTrue) { WriteWarning warning = new WriteWarning(); warning.setWarningDate(new Date()); warning.setWarningType(threshold.getIndexS()); warning.setWarningLevel(threshold.getLevelS().toString()); warning.setWarningContent(threshold.getIndexS() + otation + "等于阈值"); warning.setUserName(threshold.getUserName()); warning.setUserId(threshold.getUserId()); warning.setType(7); warningMapper.insert(warning); } else if (2 == isTrue) { WriteWarning warning = new WriteWarning(); warning.setWarningDate(new Date()); warning.setWarningType(threshold.getIndexS()); warning.setWarningLevel(threshold.getLevelS().toString()); warning.setWarningContent(threshold.getIndexS() + otation + "大于阈值"); warning.setUserName(threshold.getUserName()); warning.setUserId(threshold.getUserId()); warning.setType(7); warningMapper.insert(warning); } } } } @Transactional(rollbackFor = Exception.class) @Override public void edit(QualityFenxibaogao qualityFenxibaogao) { this.updateById(qualityFenxibaogao); } @Transactional(rollbackFor = Exception.class) @Override public void delete(QualityFenxibaogaoIdParam qualityFenxibaogaoIdParamList) { // 执行删除 this.removeById(qualityFenxibaogaoIdParamList.getId()); } @Override public QualityFenxibaogao queryEntity(String id) { QualityFenxibaogao qualityFenxibaogao = this.getById(id); if(ObjectUtil.isEmpty(qualityFenxibaogao)) { throw new CommonException("质量分析报表不存在,id值为:{}", id); } return qualityFenxibaogao; } @Override public List getChengPin(ChengPingZhiParam chengPingZhiParam) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("material_name , quality_type"); wrapper.groupBy("material_name"); wrapper.eq(StringUtils.isNotBlank(chengPingZhiParam.getOrgId()),"org_id",chengPingZhiParam.getOrgId()); return this.list(wrapper); } @Override public List getChengPinQuXian(ChengPingZhiParam chengPingZhiParam) { String orgId = chengPingZhiParam.getOrgId(); Integer dateType = chengPingZhiParam.getDateType(); Integer number = chengPingZhiParam.getNumber(); // Integer type = chengPingZhiParam.getType(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq( StringUtils.isNotBlank(orgId),"org_id", orgId) .eq(StringUtils.isNotBlank(chengPingZhiParam.getInspecItems()),"inspec_items",chengPingZhiParam.getInspecItems()) .eq(StringUtils.isNotBlank(chengPingZhiParam.getMaterialName()),"material_name",chengPingZhiParam.getMaterialName()) ; List busAllParams; if (ObjectUtil.isEmpty(dateType) || 0 == dateType){ Calendar calendar = Calendar.getInstance(); if (null == number) { calendar.add(Calendar.YEAR, -3); } else { calendar.add(Calendar.YEAR, -number); } wrapper.between("report_date", calendar.getTime(), new Date()); busAllParams= qualityFenxibaogaoMapper.getChengPinQuXianYear(wrapper); }else { Calendar calendar = Calendar.getInstance(); if (null == number) { calendar.add(Calendar.MONTH, -13); } else { calendar.add(Calendar.MONTH, -number); } wrapper.between("report_date", calendar.getTime(), new Date()); busAllParams = qualityFenxibaogaoMapper.getChengPinQuXianMonth(wrapper); } return busAllParams; } @Override public List getJianCeXiangMu(ChengPingZhiParam chengPingZhiParam) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("inspec_items, quality_type"); wrapper.groupBy("inspec_items"); wrapper.eq(StringUtils.isNotBlank(chengPingZhiParam.getOrgId()),"org_id",chengPingZhiParam.getOrgId()); return this.list(wrapper); } }