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.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; import java.io.File; import java.io.IOException; import java.util.Date; import java.util.LinkedList; import java.util.List; @Service public class DefectiveProductsService { @Autowired(required = false) private DefectiveProductsMapper mapper; @Autowired private MailService mailService; @Resource private DocUserMapper userMapper; @Autowired private DocLogService logService; @Autowired private DefectiveProductsHistoryService defectiveHisService; //录入不良品信息 public Response addDefective(DefectiveProducts defective, List multipartFileList) throws IOException { //初次录入状态为0 defective.setConfirmStatus(0); Date date = new Date(); //压缩包的路径及格式为: doc_file/defective/username_time.zip String username = ActionUtil.getUser().getName(); long time = date.getTime(); //String feedbackZipPath = "defective" + File.separator + username + "_" + time+".zip"; String rootFile = CommonUtil.getRootFile(); if(multipartFileList!=null && multipartFileList.size()!=0){ String defectiveDirSuffix = "defective" + File.separator + username + File.separator + time + File.separator; String feedbackDir = rootFile + defectiveDirSuffix; File fileDir = new File(feedbackDir); if (!fileDir.exists()) { fileDir.mkdirs(); } for (int i = 0; i < multipartFileList.size(); i++) { MultipartFile multipartFile = multipartFileList.get(i); //存储文件 String originalFilename = multipartFile.getOriginalFilename(); String fileName = originalFilename.substring(0, originalFilename.lastIndexOf(".")); String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); String feedbackPath = feedbackDir + fileName + suffix; File file = new File(feedbackPath); multipartFile.transferTo(file); } //ZipUtils.toZip(fileList,new FileOutputStream(new File(rootFile+feedbackZipPath))); defective.setFileUrl("doc_file" + File.separator + defectiveDirSuffix); } if(defective.getStartTime()==null){ //保存 defective.setStartTime(date); } mapper.insert(defective); //发送邮件 String receiverIds = defective.getReceiverIds(); String[] receiverIdsSplit = receiverIds.split(","); List receiverMailList = new LinkedList<>(); Integer senderId = defective.getSenderId(); String senderName = null; List 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); //记录处理过程 defectiveHisService.addHis(defective); return new Response().set(1,true,"不良品操作完成"); } //不良品首页推送 public Response getDefectiveLimit(DefectiveDto defectiveDto) { PageHelper.startPage(defectiveDto.getPageCurr(),defectiveDto.getPageSize()); List 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("bad_product",defectiveHis.getBadProduct()); if(defectiveHis.getBadProduct()==0){ defectiveHis.setConfirmStatus(2);//不良品数量为0结束 }else { defectiveHis.setConfirmStatus(1); } wrapper.set("confirm_status",defectiveHis.getConfirmStatus()); 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 receiverMailList = new LinkedList<>(); //获取 Integer senderId = defective.getSenderId(); String senderName = null; List 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); } //归档不良品 @Transactional public Response stopDefective(int deftId) { //修改当前表记录 UpdateWrapper wrapper=new UpdateWrapper(); wrapper.set("confirm_status",3);//归档 wrapper.set("receiver_ids",""); wrapper.set("receiver_names",""); wrapper.set("bad_product",0); wrapper.set("note",""); wrapper.eq("id",deftId); mapper.update(null,wrapper); //记录处理记录 DefectiveProductsHistory defectiveHis=new DefectiveProductsHistory(); defectiveHis.setDeftId(deftId); defectiveHis.setConfirmStatus(3); defectiveHis.setBadProduct(0); defectiveHisService.updateDefective(defectiveHis); return new Response().set(1,true); } }