whyclxw
2024-07-23 2271cde3d0392b9a2320a20aadca4b3cb93ae652
src/main/java/com/whyc/service/DefectiveProductsService.java
@@ -1,17 +1,23 @@
package com.whyc.service;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.DefectiveDto;
import com.whyc.dto.MailDTO;
import com.whyc.dto.Response;
import com.whyc.mapper.DefectiveProductsMapper;
import com.whyc.mapper.DocUserMapper;
import com.whyc.pojo.DefectiveProducts;
import com.whyc.pojo.DefectiveProductsHistory;
import com.whyc.pojo.DocUser;
import com.whyc.pojo.ProductHistory;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -38,8 +44,11 @@
    private DefectiveProductsHistoryService defectiveHisService;
    //录入不良品信息
    public Response addDefective(DefectiveProducts defective, List<MultipartFile> multipartFileList) throws IOException {
        //初次录入状态为0
        defective.setConfirmStatus(0);
        Date date = new Date();
        //压缩包的路径及格式为: doc_file/defective/username_time.zip
        String username = ActionUtil.getUser().getName();
@@ -67,8 +76,11 @@
            //ZipUtils.toZip(fileList,new FileOutputStream(new File(rootFile+feedbackZipPath)));
            defective.setFileUrl("doc_file" + File.separator + defectiveDirSuffix);
        }
        //保存
        defective.setStartTime(date);
        if(defective.getStartTime()==null){
            //保存
            defective.setStartTime(date);
        }
        mapper.insert(defective);
        //发送邮件
        String receiverIds = defective.getReceiverIds();
@@ -111,4 +123,75 @@
        defectiveHisService.addHis(defective);
       return new Response().set(1,true,"不良品操作完成");
    }
    //不良品首页推送
    public Response getDefectiveLimit(DefectiveDto defectiveDto) {
        PageHelper.startPage(defectiveDto.getPageCurr(),defectiveDto.getPageSize());
        List<DefectiveProducts> list=mapper.getDefectiveLimit(defectiveDto);
        PageInfo pageInfo=new PageInfo(list);
        return new Response().setII(1,list!=null,pageInfo,"不良品首页推送");
    }
    //处理不良品
    @Transactional
    public Response updateDefective(DefectiveProductsHistory defectiveHis) {
        //获取上一次记录信息
        QueryWrapper qwrapper=new QueryWrapper();
        qwrapper.eq("id",defectiveHis.getDeftId());
        qwrapper.last("limit 1");
        DefectiveProducts defective=mapper.selectOne(qwrapper);
        //修改当前表记录
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("receiver_ids",defectiveHis.getReceiverIds());
        wrapper.set("receiver_names",defectiveHis.getReceiverNames());
        wrapper.set("confirm_status",defectiveHis.getConfirmStatus());
        wrapper.set("bad_product",defectiveHis.getBadProduct());
        wrapper.set("note",defectiveHis.getNote());
        wrapper.eq("id",defectiveHis.getDeftId());
        mapper.update(null,wrapper);
        //记录处理记录
        defectiveHisService.updateDefective(defectiveHis);
        //发送邮件
        String receiverIds = defectiveHis.getReceiverIds();
        String[] receiverIdsSplit = receiverIds.split(",");
        List<String> receiverMailList = new LinkedList<>();
        //获取
        Integer senderId = defective.getSenderId();
        String senderName = null;
        List<DocUser> docUsers = userMapper.selectList(null);
        for (DocUser docUser:docUsers){
            if(docUser.getId().intValue() == senderId){
                senderName = docUser.getName();
                break;
            }
        }
        for (String receiverId:receiverIdsSplit){
            for (DocUser docUser:docUsers){
                if(docUser.getId().intValue() == Integer.parseInt(receiverId)){
                    String mail = docUser.getMail();
                    if(mail!=null && !mail.isEmpty()) {
                        receiverMailList.add(mail);
                    }
                    break;
                }
            }
        }
        String subject = "【不良品记录】-"+senderName;
        String content = defective.getContent();
        MailDTO mailDTO = new MailDTO();
        mailDTO.setTitle(subject);
        mailDTO.setContent(content);
        mailDTO.setMailList(receiverMailList);
        mailService.sendMail(mailDTO);
        return new Response().set(1,true);
    }
}