chenlu
2024-03-08 f38b9b10de303806a8d27734dbbf0ff8815dba49
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
package com.example.erp.service.pp;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.erp.entity.pp.BasicDataProduce;
import com.example.erp.entity.pp.PatchLog;
import com.example.erp.entity.pp.Rework;
import com.example.erp.entity.sd.Delivery;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.mapper.pp.BasicDateProduceMapper;
import com.example.erp.mapper.pp.ReworkMapper;
import com.example.erp.service.userInfo.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
 
 
@Service
@DS("pp")
@Transactional(rollbackFor = Exception.class)
public class ReworkService {
    @Autowired
    ReworkMapper reworkMapper;
    @Autowired
    BasicDateProduceMapper basicDateProduceMapper;
    @Autowired
    SysErrorService sysErrorService;
 
 
    public List<Map<String, Object>> getSelectRework(Integer pageNum, Integer pageSize) {
        Integer offset = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>();
        List<Map<String, Object>> listMap = new ArrayList<>();
 
 
        List<Map<String, Object>> ReworkMap =reworkMapper.getSelectRework(offset,pageSize);
 
 
        for (Map<String, Object> item:ReworkMap){
            item.put("reworkTeam","");
            List<BasicDataProduce> basicCategory=new ArrayList<>();
            List<BasicDataProduce> basicDataProduceList=basicDateProduceMapper.SelectWorkBasicTeams(item.get("reworkProcesses").toString());
            for (BasicDataProduce basicDataProduce:basicDataProduceList){
                if(Objects.equals(basicDataProduce.getBasicData().getBasicName(),item.get("reworkProcesses"))){
                    basicCategory.add(basicDataProduce);
                }
            }
            item.put("basicCategory",basicCategory);
            listMap.add(item);
        }
        return listMap;
    }
 
    public Map<String, Object> SelectRework(Integer pageNum, Integer pageSize,List<String> selectDate,Rework rework) {
        Integer offset = (pageNum-1)*pageSize;
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
                endDate = selectDate.get(1);
            }
        }
        Map<String,Object> map = new HashMap<>();
        map.put("data",reworkMapper.SelectRework(offset,pageSize,startDate,endDate,rework));
        map.put("total",reworkMapper.SelectReworkPageTotal(offset,pageSize,startDate,endDate,rework));
 
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
    }
 
    public Boolean saveRework(Map<String,Object> object) {
        boolean saveState = true;
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            String userName = "";
            String userId = "";
            if (object.get("userName") != null) {
                userName = object.get("userName").toString();
            }
            if (object.get("userId") != null) {
                userId = object.get("userId").toString();
            }
            //获取单号
            String oddNumber= orderNumberSetting("返工");
            //获取对象集合循环进行新增修改
            List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class);
            if (!reworklist.isEmpty()){
                for (Rework rework : reworklist) {
                    //添加返工记录,修改次破明细数量
                    reworkMapper.insertRework(rework,oddNumber);
                    reworkMapper.updateDamageDetails(rework);
                }
            }
 
        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            //将异常传入数据库
            SysError sysError = new SysError();
            sysError.setError(e.toString());
            sysError.setFunc("saveOrder");
            sysErrorService.insert(sysError);
            saveState = false;
 
        }
 
        return saveState;
 
    }
 
    public Boolean updateRework(Map<String,Object> object) {
        boolean saveState = true;
 
        String userName = "";
        String userId = "";
        if (object.get("userName") != null) {
            userName = object.get("userName").toString();
        }
        if (object.get("userId") != null) {
            userId = object.get("userId").toString();
        }
        //获取对象集合循环进行新增修改
        List<Rework> reworklist = JSONArray.parseArray(JSONObject.toJSONString(object.get("rework")), Rework.class);
        if (!reworklist.isEmpty()){
            for (Rework rework : reworklist) {
                //审核
                reworkMapper.updateRework(rework,userName);
            }
        }
 
 
        return saveState;
 
    }
 
    public String orderNumberSetting(String type) {
        //根据类型自动生成不同的操作单号
        String alias="";
        if(Objects.equals(type, "返工")){
            alias="FG";
        }
        //查询当天的最大数量
        Integer maximum=reworkMapper.getMaximum();
        //设置两位不够补0
        String formattedNumber = String.format("%02d", maximum+1);
        //格式化当前日期
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
        String formattedDate = dateFormat.format(currentDate);
        String oddNumbers =  alias+formattedDate+formattedNumber;
        return oddNumbers;
    }
}