yangys
2024-12-30 7cd413d0f1e3235223848d47e428aad97f9f13fc
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
package com.qianwen.smartman.modules.workinghour.service;
 
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qianwen.core.excel.util.ExcelUtil;
import com.qianwen.core.mp.base.BaseServiceImpl;
import com.qianwen.core.oss.model.BladeFile;
import com.qianwen.core.tool.utils.DateUtil;
import com.qianwen.smartman.common.enums.DefaultWcsEnum;
import com.qianwen.smartman.common.utils.DurationUtil;
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
import com.qianwen.smartman.modules.smis.entity.Workstation;
import com.qianwen.smartman.modules.smis.mapper.WorkstationMapper;
import com.qianwen.smartman.modules.workinghour.entity.PartWorkingHour;
import com.qianwen.smartman.modules.workinghour.entity.PartWorkingProcess;
import com.qianwen.smartman.modules.workinghour.excel.PartWorkingHourExcel;
import com.qianwen.smartman.modules.workinghour.excel.PartWorkingProcessExcel;
import com.qianwen.smartman.modules.workinghour.mapper.PartWorkingHourMapper;
import com.qianwen.smartman.modules.workinghour.vo.PartWorkingHourVO;
 
import cn.hutool.core.date.LocalDateTimeUtil;
 
@Service
public class PartWorkingHourService extends BaseServiceImpl<PartWorkingHourMapper, PartWorkingHour>{
 
    @Autowired
    private PartWorkingHourMapper partWorkingHourMapper;
    @Autowired
    private WorkstationMapper workstationMapper;
    @Autowired
    private OssBuilder ossBuilder;
 
    @Transactional(readOnly=true)
    public IPage<PartWorkingHourVO> listPage(IPage<PartWorkingHourVO> workstationVOIPage, String partNo, String workstationName, LocalDate startDate, LocalDate endDate) {
        
        List<PartWorkingHourVO> workstationVOS = this.partWorkingHourMapper.listPage(workstationVOIPage, partNo, workstationName, startDate, endDate);
        
        return workstationVOIPage.setRecords(workstationVOS);
    }
 
 
    @Transactional(readOnly=true)
    public List<PartWorkingHourVO> listVOByIds(List<Long> ids) {
        return partWorkingHourMapper.listVOByIds(ids);
    }
 
    /**
     * 导出一条数据
     * @param id
     * @return
     */
    @Transactional(readOnly=true)
       public BladeFile export(long id) {
        //QueryWrapper<PartWorkingProcess> wrapper = new QueryWrapper<>();
        //wrapper.lambda().eq(PartWorkingProcess::getWorkinghourId, id);
        
        //xx工件在x机床
        PartWorkingHour partWorkingHour = partWorkingHourMapper.selectById(id);
        Workstation ws = workstationMapper.selectById(partWorkingHour.getWorkstationId());
        String fileName = String.format("零件%s的工时数据-%s.xlsx", partWorkingHour.getPartNo(), DateUtil.time());
        
        PartWorkingHourExcel excelObj = new PartWorkingHourExcel();
        excelObj.setPartNo(partWorkingHour.getPartNo());
        excelObj.setAmount(partWorkingHour.getAmount());
        
        LocalDateTime start = LocalDateTime.now();
        LocalDateTime end;
        Duration duration;
        if(partWorkingHour.getClampingSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getClampingSecs());
            duration = Duration.between(start, end);
            excelObj.setClampingSecs(DurationUtil.toChineseDuration(duration));
        }
        final String format =  "yyyy-MM-dd:hh:mm:ss";
        if(partWorkingHour.getEndTime() !=null) {
            excelObj.setEndTime(LocalDateTimeUtil.format(partWorkingHour.getEndTime(),format));
        }
        
        if(partWorkingHour.getFirstMeasureSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getFirstMeasureSecs());
            duration = Duration.between(start, end);
            excelObj.setFirstMeasureSecs(DurationUtil.toChineseDuration(duration));
        }
        
        if(partWorkingHour.getFirstWorkingSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getFirstWorkingSecs());
            duration = Duration.between(start, end);
            excelObj.setFirstWorkingSecs(DurationUtil.toChineseDuration(duration));
        }
        
        if(partWorkingHour.getLastRemoveSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getLastRemoveSecs());
            duration = Duration.between(start, end);
            excelObj.setLastRemoveSecs(DurationUtil.toChineseDuration(duration));
        }
        
        if(partWorkingHour.getOccupancySecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getOccupancySecs());
            duration = Duration.between(start, end);
            excelObj.setOccupancySecs(DurationUtil.toChineseDuration(duration));
        }
        
        excelObj.setPartNo(partWorkingHour.getPartNo());
        
        if(partWorkingHour.getPrepareSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getPrepareSecs());
            duration = Duration.between(start, end);
            excelObj.setPrepareSecs(DurationUtil.toChineseDuration(duration));
        }
        
        if(partWorkingHour.getProcessingSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getProcessingSecs());
            duration = Duration.between(start, end);
            excelObj.setProcessingSecs(DurationUtil.toChineseDuration(duration));
        }
        
        excelObj.setProcessNo(partWorkingHour.getProcessNo());
        
        if(partWorkingHour.getSingleProcessSecs() !=null) {
            end = start.plusSeconds(partWorkingHour.getSingleProcessSecs());
            duration = Duration.between(start, end);
            excelObj.setSingleProcessSecs(DurationUtil.toChineseDuration(duration));
        }
        
        excelObj.setStartTime(LocalDateTimeUtil.format(partWorkingHour.getStartTime(),format));
        
        
        excelObj.setWorkstationName(ws.getName());
        
        excelObj.setVersion(partWorkingHour.getVersion());
        
        MultipartFile multipartFile = ExcelUtil.exportToMultipartFile(fileName, "零件工时", Arrays.asList(excelObj), PartWorkingHourExcel.class);
        BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile);
        return bladeFile;
    }
}