whycxzp
2023-02-06 fb782c34e30f129abd410cc83b4b107f5c089760
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
package com.whyc.service;
 
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.Response;
import com.whyc.mapper.BOMFeedbakMapper;
import com.whyc.mapper.DocUserMapper;
import com.whyc.pojo.BOMFeedback;
import com.whyc.pojo.DocUser;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import com.whyc.util.MailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
 
import javax.annotation.Resource;
import javax.mail.MessagingException;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
 
@Service
public class BOMFeedbakService {
    @Autowired(required = false)
    private BOMFeedbakMapper mapper;
    @Autowired
    private MailUtil mailUtil;
    @Resource
    private DocUserMapper userMapper;
    //统计
    public Map<String, Integer> getFkStatistic(DocUser user,Map<String, Integer> map) {
        int sendFk=0;
        int recevierFk=0;
        switch (user.getRoleId()){
            //普通员工
            case "1001":
                map.put("sendFk",0);
                sendFk=mapper.selectSender(user.getId());
                map.put("sendFk",sendFk);
                break;
            //项目经理
            case "1002":
                map.put("sendFk",0);
                map.put("recevierFk",0);
                sendFk=mapper.selectSender(user.getId());
                recevierFk=mapper.selectReceiver(user.getId());
                map.put("sendFk",sendFk);
                map.put("recevierFk",recevierFk);
                break;
            //总经理
            case "1003":
                map.put("sendFk",0);
                map.put("recevierFk",0);
                sendFk=mapper.selectSender(user.getId());
                recevierFk=mapper.selectReceiver(user.getId());
                map.put("sendFk",sendFk);
                map.put("recevierFk",recevierFk);
                break;
        }
        return map;
    }
    //查询发送者反馈不同状态
    public Response getSenderStatus(int flag,int pageCurr,int pageSize) {
        PageHelper.startPage(pageCurr,pageSize);
        List list=mapper.getSenderStatus(ActionUtil.getUser().getId(),flag);
        PageInfo pageInfo = new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"发送者反馈");
    }
   //查询接收者反馈不同状态
    public Response getRecevierStatus(int flag, int pageCurr, int pageSize) {
        PageHelper.startPage(pageCurr,pageSize);
        List list=mapper.getRecevierStatus(ActionUtil.getUser().getId(),flag);
        PageInfo pageInfo = new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"接收者反馈");
    }
   //接收者确认反馈
    public Response setconfirmFk(int id) {
        String msg="";
        boolean bl=true;
        //1.确认前先判断反馈是否被确认
        QueryWrapper qwrapper=new QueryWrapper();
        qwrapper.eq("id",id);
        qwrapper.eq("confirm_status",1);
        List list=mapper.selectList(qwrapper);
        if(list!=null&&list.size()>0){
            msg="该反馈已被确认";
            bl=false;
        }else{
            //2.确认反馈
            UpdateWrapper wrapper=new UpdateWrapper();
            wrapper.set("confirm_status",1);
            wrapper.set("confirm_user_name",ActionUtil.getUser().getName());
            wrapper.eq("id",id);
            int count=mapper.update(null,wrapper);
            bl=count>0;
            msg="接收者确认反馈";
        }
        return new Response().set(1,bl,msg);
    }
 
    /**
     * 提交反馈:
     * 1.记录数据库保存
     * 2.附件存储
     * 3.邮件发送
     * @param feedback bom问题反馈
     * @return response
     */
    public Response submitFeedback(BOMFeedback feedback) throws IOException, MessagingException {
        MultipartFile multipartFile = feedback.getMultipartFile();
        Date date = new Date();
        if(multipartFile!=null){
            //存储文件
            String rootFile = CommonUtil.getRootFile();
            long time = date.getTime();
            String originalFilename = multipartFile.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String feedbackPath = "feedback_bom" + File.separator + fileName + "_" + time + suffix;
            File file = new File(rootFile + feedbackPath);
            if (!file.exists()){
                file.mkdirs();
            }
            multipartFile.transferTo(file);
            feedback.setFile("doc_file"+File.separator+feedbackPath);
        }
        //保存
        feedback.setCreateTime(date);
        feedback.setConfirmStatus(0);
        mapper.insert(feedback);
        //发送邮件
        String receiverIds = feedback.getReceiverIds();
        String[] receiverIdsSplit = receiverIds.split(",");
        List<String> receiverMailList = new LinkedList<>();
 
        Integer senderId = feedback.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)){
                    receiverMailList.add(docUser.getMail());
                    break;
                }
            }
        }
 
        String subject = "Bom问题反馈-"+senderName;
        String content = feedback.getContent();
        mailUtil.sendMailBatch(senderName,receiverMailList,subject,content);
        return new Response().set(1,true,"反馈完成");
    }
 
}