zss
2024-10-15 f747fddabf9195706eef73c4ca233c881b7dfe75
工时调整+标签打印调整+特殊项的保存
已修改11个文件
已添加1个文件
395 ■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto2.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto3.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/SubmitPlanDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -8,8 +8,10 @@
import com.yuanchu.mom.dto.InsOrderPlanDTO;
import com.yuanchu.mom.dto.InsProductDto;
import com.yuanchu.mom.dto.InsProductResultDto;
import com.yuanchu.mom.dto.SubmitPlanDto;
import com.yuanchu.mom.pojo.InsOrderFile;
import com.yuanchu.mom.pojo.InsOrderState;
import com.yuanchu.mom.pojo.InsProductResult;
import com.yuanchu.mom.service.*;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.InsProductResultVo;
@@ -115,8 +117,8 @@
    @ValueClassify("检验任务")
    @ApiOperation(value = "检验任务提交")
    @PostMapping("/submitPlan")
    public Result<?> submitPlan(Integer orderId,String laboratory, Integer verifyUser, String entrustCode, String note,String term) {
        int num = insOrderPlanService.submitPlan(orderId, laboratory, verifyUser, entrustCode,note,term);
    public Result<?> submitPlan(@RequestBody SubmitPlanDto submitPlanDto) {
        int num = insOrderPlanService.submitPlan(submitPlanDto);
        return num == 1 ? Result.success() : Result.fail("提交失败,部分项目还未进行检验");
    }
@@ -134,6 +136,20 @@
        Map<String, Object> param2 = JSON.parseObject(param, Map.class);
        insOrderPlanService.saveInsContext(param2,num);
        return Result.success();
    }
    @ApiOperation(value = "电路试验的保存检验内容")
    @PostMapping("/saveInsContext2")
    @ValueAuth
    public Result<?> saveInsContext2(@RequestBody InsProductResultDto insProductResultDtos) {
        return Result.success(insOrderPlanService.saveInsContext2(insProductResultDtos));
    }
    @ApiOperation(value = "温湿度试验+功率试验的保存检验内容")
    @PostMapping("/saveInsContext3")
    @ValueAuth
    public Result<?> saveInsContext3(@RequestBody InsProductResult insProductResult) {
        return Result.success(insOrderPlanService.saveInsContext3(insProductResult));
    }
    @ValueAuth
@@ -184,13 +200,6 @@
    @PostMapping("/jumpTeam")
    public Result<?> jumpTeam(@RequestBody InsOrderState insOrderState) {
        return Result.success(insOrderStateService.jumpTeam(insOrderState));
    }
    @ApiOperation(value = "电路试验的保存检验内容")
    @PostMapping("/saveInsContext2")
    @ValueAuth
    public Result<?> saveInsContext2(@RequestBody InsProductResultDto insProductResultDtos) {
        return Result.success(insOrderPlanService.saveInsContext2(insProductResultDtos));
    }
    @ApiOperation(value = "电路试验的删除频段")
inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDto.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InsProductResult;
import com.yuanchu.mom.pojo.InsProductResult2;
import lombok.Data;
inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto2.java
@@ -44,7 +44,7 @@
    @ValueTableShow(value = 12, name = "试验要求")
    private String tell;
    @ValueTableShow(value = 13, name = "检验结果")
//    @ValueTableShow(value = 13, name = "检验结果")
    private String lastValue;
    @ValueTableShow(value = 14, name = "结果判定")
inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto3.java
@@ -4,6 +4,7 @@
import com.yuanchu.mom.pojo.InsSample;
import lombok.Data;
import java.time.LocalDate;
import java.util.List;
@Data
@@ -21,4 +22,6 @@
    private Integer isLeave;
    private LocalDate issueTime;
}
inspect-server/src/main/java/com/yuanchu/mom/dto/SubmitPlanDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.AuxiliaryOutputWorkingHours;
import lombok.Data;
import java.util.List;
//检验任务提交所需参数
@Data
public class SubmitPlanDto {
    private Integer orderId;
    private String  laboratory;
    private Integer verifyUser;
    private String entrustCode;
    private String note;
    private String term;
    //产量工时
    private List<AuxiliaryOutputWorkingHours> auxiliaryOutputWorkingHoursList;
}
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -3,9 +3,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.InsOrderPlanDTO;
import com.yuanchu.mom.dto.InsProductResultDto;
import com.yuanchu.mom.dto.SubmitPlanDto;
import com.yuanchu.mom.pojo.InsOrderFile;
import com.yuanchu.mom.pojo.InsOrderUser;
import com.yuanchu.mom.pojo.InsProduct;
import com.yuanchu.mom.pojo.InsProductResult;
import com.yuanchu.mom.vo.InsProductResultVo;
import org.springframework.web.multipart.MultipartFile;
@@ -36,7 +38,7 @@
    int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException;
    int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String note,String term);
    int submitPlan(SubmitPlanDto submitPlanDto);
    List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request);
    List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num);
@@ -61,4 +63,6 @@
    //预览文件
    Object preview(Integer id) throws Exception;
    int saveInsContext3(InsProductResult insProductResult);
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -20,6 +20,7 @@
import com.yuanchu.mom.dto.InsOrderPlanDTO;
import com.yuanchu.mom.dto.InsProductResultDto;
import com.yuanchu.mom.dto.SampleProductDto;
import com.yuanchu.mom.dto.SubmitPlanDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
@@ -32,6 +33,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
@@ -89,7 +91,7 @@
    private String twoCode;
    @Resource
    WordUtils  wordUtils;
    WordUtils wordUtils;
    @Resource
    private InsReportMapper insReportMapper;
@@ -460,7 +462,7 @@
        return stringBuilder.toString();
    }
    //模版保存检验内容
    @Override
    public void saveInsContext(Map<String, Object> insContext, Integer num) {
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
@@ -590,67 +592,6 @@
                insProductMapper.updateById(insProduct);
                insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
                insProduct = insProductMapper.selectById(insProduct);
                /*生成产量工时*/
                //查询检验单信息
                InsOrder insOrder = insOrderMapper.selectById(insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId());
                //校验如果这个人这个检测项目已经添加过了则不需要再新增
                //首先判断当前人的当前时间是否是排班时间内,如果不是就是加班
                LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
                PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
                        .eq(PerformanceShift::getUserId, userId)
                        .eq(PerformanceShift::getWorkTime, today));
                if (ObjectUtils.isNotEmpty(performanceShift)) {
                    ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
                    if (ObjectUtils.isNotEmpty(shiftTime)) {
                        DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
                        LocalTime now = LocalTime.now();
                        LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
                        LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
                        // æ£€æŸ¥å½“前时间是否在范围内(包括边界)
                        boolean isWithinRange;
                        if (endTime.isAfter(startTime)) {
                            // ä¸è·¨å¤©çš„æƒ…况
                            isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
                        } else {
                            // è·¨å¤©çš„æƒ…况
                            isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
                        }
                        if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
                            //先删后加(工时记录最后一次保存的时间)
                            auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                                    .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
                            AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
                            if (isWithinRange) {
                                //在时间内就是正常上班
                                auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//非加班委托单号
                                auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//非加班工时
                                auxiliaryOutputWorkingHours.setAmount(1);//非加班数量
                                auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//产量工时
                            } else {
                                //加班
                                auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//加班委托单号
                                auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//加班工时
                                auxiliaryOutputWorkingHours.setOvertimeAmount(1);//加班数量
                                auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//产量工时
                            }
                            auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//检测父项
                            auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//检测子项
                            auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//样品编号
                            auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组
                            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                            DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                            auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期
                            LocalDateTime localDateTime = LocalDateTime.now();
                            DateTime parse = DateUtil.parse(localDateTime.format(formatter));
                            auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期
                            auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
                            auxiliaryOutputWorkingHours.setCheck(userId);//检测人
                            auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//检验项目id
                            auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                        }
                    }
                }
                InsSample insSample = insSampleMapper.selectById(insProductMapper.selectById(insProduct.getId()).getInsSampleId());
                insSample.setInsState(1);
                Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
@@ -758,12 +699,10 @@
                if (!insProduct.getAsk().contains(",")) {
                    if (insProduct.getAsk().equals("/")) {
                        ressult = 3; //不判定
                    }
                    else if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
                    } else if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) {
                        ressult = 0; //不合格
                    }
                }
                else {
                } else {
                    // å¦‚果要求值是(2°≥20,7°≥25,12°≥25)这种情况
                    String[] askParts = insProduct.getAsk().split(",");
                    String[] angles = insProductResult2.getAngle().split(",");
@@ -802,65 +741,6 @@
            insProduct.setUpdateUser(userId);
            insProductMapper.updateById(insProduct);
            insProductUserMapper.insert(new InsProductUser(null, userId, LocalDateTime.now(), insProduct.getId()));
            /*生成产量工时*/
            //校验如果这个人这个检测项目已经添加过了则不需要再新增
            //首先判断当前人的当前时间是否是排班时间内,如果不是就是加班
            LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
            PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
                    .eq(PerformanceShift::getUserId, userId)
                    .eq(PerformanceShift::getWorkTime, today));
            if (ObjectUtils.isNotEmpty(performanceShift)) {
                ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
                if (ObjectUtils.isNotEmpty(shiftTime)) {
                    DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
                    LocalTime now = LocalTime.now();
                    LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
                    LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
                    // æ£€æŸ¥å½“前时间是否在范围内(包括边界)
                    boolean isWithinRange;
                    if (endTime.isAfter(startTime)) {
                        // ä¸è·¨å¤©çš„æƒ…况
                        isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
                    } else {
                        // è·¨å¤©çš„æƒ…况
                        isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
                    }
                    if (ObjectUtils.isNotEmpty(insProduct.getManHour())) {
                        //先删后加(工时记录最后一次保存的时间)
                        auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                                .eq(AuxiliaryOutputWorkingHours::getInsProductId, insProduct.getId()));
                        AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
                        if (isWithinRange) {
                            //在时间内就是正常上班
                            auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//非加班委托单号
                            auxiliaryOutputWorkingHours.setWorkTime(insProduct.getManHour());//非加班工时
                            auxiliaryOutputWorkingHours.setAmount(1);//非加班数量
                            auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//产量工时
                        } else {
                            //加班
                            auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//加班委托单号
                            auxiliaryOutputWorkingHours.setOvertimeWorkTime(insProduct.getManHour());//加班工时
                            auxiliaryOutputWorkingHours.setOvertimeAmount(1);//加班数量
                            auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : 0) + (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : 0));//产量工时
                        }
                        auxiliaryOutputWorkingHours.setInspectionItem(insProduct.getInspectionItem());//检测父项
                        auxiliaryOutputWorkingHours.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());//检测子项
                        auxiliaryOutputWorkingHours.setSample(insSampleMapper.selectById(insProduct.getInsSampleId()).getSampleCode());//样品编号
                        auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组
                        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                        auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期
                        LocalDateTime localDateTime = LocalDateTime.now();
                        DateTime parse = DateUtil.parse(localDateTime.format(formatter));
                        auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期
                        auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
                        auxiliaryOutputWorkingHours.setCheck(userId);//检测人
                        auxiliaryOutputWorkingHours.setInsProductId(insProduct.getId());//检验项目id
                        auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                    }
                }
            }
            /*更新样品的检验状态*/
            insSample.setInsState(1);
            Long l = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
@@ -887,6 +767,17 @@
                    .set(InsOrderState::getInsState, 2));
        }
        return list;
    }
    //温湿度试验+功率试验的保存检验内容
    @Override
    public int saveInsContext3(InsProductResult insProductResult) {
        //先删后加
        insProductResultMapper.delete(Wrappers.<InsProductResult>lambdaQuery()
                .eq(InsProductResult::getInsProductId, insProductResult.getInsProductId())
                .eq(InsProductResult::getNum, insProductResult.getNum()));
        insProductResultMapper.insert(insProductResult);
        return 0;
    }
    //解析要求值的格式
@@ -1079,12 +970,12 @@
    }
    @Override
    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode, String note, String term) {
    public int submitPlan(SubmitPlanDto submitPlanDto) {
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
                .eq(InsSample::getInsOrderId, submitPlanDto.getOrderId()).select(InsSample::getId));
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, orderId)
                .eq(InsOrderState::getLaboratory, laboratory)
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1"));// ç¡®ä¿åªå–一条记录
        /*记录检验任务每次的备注信息*/
@@ -1093,13 +984,13 @@
        insOrderUser.setSubmitUser(getLook.selectPowerByMethodAndUserId(null).get("userId"));
        insOrderUser.setSubmitTime(LocalDateTime.now());
        insOrderUser.setNum(orderState.getNum());
        insOrderUser.setNote(ObjectUtils.isNotEmpty(note) ? note : null);
        insOrderUser.setTerm(ObjectUtils.isNotEmpty(term) ? term : null);
        insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null);
        insOrderUser.setTerm(ObjectUtils.isNotEmpty(submitPlanDto.getTerm()) ? submitPlanDto.getTerm() : null);
        insOrderUserMapper.insert(insOrderUser);
        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory())
                .eq(InsProduct::getState, 1)
                .and(wrapper -> wrapper
                        .isNull(InsProduct::getInsResult)
@@ -1110,8 +1001,8 @@
            String str = "";
            int count = 0;
            for (InsProduct product : insProducts) {
                //辐射试验检测的检验项目,不需要去手动填写检验值,只需要上传表格文件就可以了,后台提交的时候校验跳过这个检验项目
                if (product.getInspectionItem().equals("辐射试验检测")) {
                //辐射试验,温湿度试验,功率试验的检验项目,不需要去手动填写检验值,只需要上传表格文件就可以了,后台提交的时候校验跳过这个检验项目
                if (product.getInspectionItem().equals("辐射试验") || product.getInspectionItem().equals("温湿度试验") || product.getInspectionItem().equals("功率试验")) {
                    product.setInsResult(3);//不判定
                    insProductMapper.updateById(product);
                    continue;
@@ -1137,10 +1028,10 @@
            }
        }
        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                .eq(InsOrderState::getInsOrderId, orderId)
                .eq(InsOrderState::getLaboratory, laboratory)
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .set(InsOrderState::getInsState, 3)
                .set(InsOrderState::getVerifyUser, verifyUser));
                .set(InsOrderState::getVerifyUser, submitPlanDto.getVerifyUser()));
        /*这个情况先关闭----如果是C类订单且是下发到质量部,则直接复核通过(结束试验)*/
//        InsOrder insOrder = insOrderMapper.selectById(orderId);
//        if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("质量部")) {
@@ -1150,19 +1041,19 @@
//                e.printStackTrace();
//            }
//        } else {
            Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
            //LIMS系统消息推送
            InformationNotification info = new InformationNotification();
            info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
            info.setMessageType("2");
            info.setTheme("复核通知");
            info.setContent("您有一条检验任务待复核消息");
            info.setSenderId(userId);
            info.setConsigneeId(verifyUser);
            info.setViewStatus(false);
            info.setJumpPath("b1-inspect-order-plan");
            informationNotificationService.addInformationNotification(info);
            //todo ä¼ä¸šå¾®ä¿¡æ¶ˆæ¯æŽ¨é€@zss
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        //LIMS系统消息推送
        InformationNotification info = new InformationNotification();
        info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
        info.setMessageType("2");
        info.setTheme("复核通知");
        info.setContent("您有一条检验任务待复核消息");
        info.setSenderId(userId);
        info.setConsigneeId(submitPlanDto.getVerifyUser());
        info.setViewStatus(false);
        info.setJumpPath("b1-inspect-order-plan");
        informationNotificationService.addInformationNotification(info);
        //todo ä¼ä¸šå¾®ä¿¡æ¶ˆæ¯æŽ¨é€@zss
           /* HashMap<String, Object> map = new HashMap<>();
            String account = userMapper.selectById(userId).getAccount();
            map.put("touser", *//*account*//*"ZT-012117");//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔)
@@ -1180,12 +1071,12 @@
//        }
        //复核人--检验单相关负责人
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(verifyUser);
        insSampleUser.setInsSampleId(orderId);
        insSampleUser.setUserId(submitPlanDto.getVerifyUser());
        insSampleUser.setInsSampleId(submitPlanDto.getOrderId());
        insSampleUser.setState(1);
        insSampleUser.setSonLaboratory(laboratory);
        insSampleUser.setSonLaboratory(submitPlanDto.getLaboratory());
        insSampleUserMapper.insert(insSampleUser);
        /*校验一下result表*/
        /*//校验一下result表
        CompletableFuture.supplyAsync(() -> {
            List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
            for (Integer ip : ips) {
@@ -1199,19 +1090,70 @@
                }
            }
            return null;
        });
        });*/
        /*生成电路试验的站点报告并上传到附件中*/
        if (laboratory.equals("电路试验")) {
            wordUtils.generateWord(note, term, orderState);
//            try {
//                wordUtils.generateWord(note, term, orderState);
//            }catch (Exception e){
//                throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!");
//            }
        if (submitPlanDto.getLaboratory().equals("电路试验")) {
            try {
                wordUtils.generateWord(submitPlanDto.getNote(), submitPlanDto.getTerm(), orderState);
            } catch (Exception e) {
                throw new ErrorException("电路试验的站点报告生成有误,请联系开发人员调整!");
            }
        }
        // åˆ é™¤æ•°é‡‡é‡‡é›†æ¬¡æ•°
        String key = "frequency" + ":" + entrustCode + ":*";
        RedisUtil.delsLike(key);
        /*// åˆ é™¤æ•°é‡‡é‡‡é›†æ¬¡æ•°
        String key = "frequency" + ":" + submitPlanDto.getEntrustCode() + ":*";
        RedisUtil.delsLike(key);*/
        /*生成产量工时*/
        //查询检验单信息
        InsOrder insOrder = insOrderMapper.selectById(submitPlanDto.getOrderId());
        //校验如果这个人这个检测项目已经添加过了则不需要再新增
        //首先判断当前人的当前时间是否是排班时间内,如果不是就是加班
        LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
        PerformanceShift performanceShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery()
                .eq(PerformanceShift::getUserId, userId)
                .eq(PerformanceShift::getWorkTime, today));
        if (ObjectUtils.isNotEmpty(performanceShift)) {
            ShiftTime shiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, performanceShift.getShift()));
            if (ObjectUtils.isNotEmpty(shiftTime)) {
                DateTimeFormatter forma = DateTimeFormatter.ofPattern("HH:mm");
                LocalTime now = LocalTime.now();
                LocalTime startTime = LocalTime.parse(shiftTime.getStartTime(), forma);
                LocalTime endTime = LocalTime.parse(shiftTime.getEndTime(), forma);
                // æ£€æŸ¥å½“前时间是否在范围内(包括边界)
                boolean isWithinRange;
                if (endTime.isAfter(startTime)) {
                    // ä¸è·¨å¤©çš„æƒ…况
                    isWithinRange = !now.isBefore(startTime) && !now.isAfter(endTime);
                } else {
                    // è·¨å¤©çš„æƒ…况
                    isWithinRange = !now.isBefore(startTime) || !now.isAfter(endTime);
                }
                for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours : submitPlanDto.getAuxiliaryOutputWorkingHoursList()) {
                    InsProduct insProduct = insProductMapper.selectById(auxiliaryOutputWorkingHours.getInsProductId());
                    if (isWithinRange) {
                        //在时间内就是正常上班
                        auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//非加班委托单号
                        auxiliaryOutputWorkingHours.setWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//非加班工时
                        auxiliaryOutputWorkingHours.setAmount(1);//非加班数量
                    } else {
                        //加班
                        auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode());//加班委托单号
                        auxiliaryOutputWorkingHours.setOvertimeWorkTime(auxiliaryOutputWorkingHours.getOutputWorkTime());//加班工时
                        auxiliaryOutputWorkingHours.setOvertimeAmount(1);//加班数量
                    }
                    auxiliaryOutputWorkingHours.setManHourGroup(insProduct.getManHourGroup());//工时分组
                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                    auxiliaryOutputWorkingHours.setDateTime(LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters));//日期
                    LocalDateTime localDateTime = LocalDateTime.now();
                    DateTime parse = DateUtil.parse(localDateTime.format(formatter));
                    auxiliaryOutputWorkingHours.setWeekDay(getWeek(localDateTime.format(formatters)));//星期
                    auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//周次
                    auxiliaryOutputWorkingHours.setCheck(userId);//检测人
                    auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
                }
            }
        }
        return 1;
    }
@@ -1250,6 +1192,4 @@
                return "未知";
        }
    }
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -504,15 +504,15 @@
        List<Integer> list = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
        List<SampleProductDto3> sampleProductDtos = insSampleMapper.selectSampleProductListByOrderId3(list);
        Set<String> processedCodes = new HashSet<>();
        List<SampleProductDto3> sampleProductDto3s = sampleProductDtos.stream().filter(sampleProductDto3 -> {
       /* List<SampleProductDto3> sampleProductDto3s = sampleProductDtos.stream().filter(sampleProductDto3 -> {
            if (processedCodes.contains(sampleProductDto3.getCode())) {
                return false;
            } else {
                processedCodes.add(sampleProductDto3.getCode());
                return true;
            }
        }).collect(Collectors.toList());
        return sampleProductDto3s;
        }).collect(Collectors.toList());*/
        return sampleProductDtos;
    }
    //校验电机编号
inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -536,6 +536,7 @@
        ip.sample ip_sample,
        ip.model ip_model,
        ip.state,
        io.issue_time,
        ins_sample_id
        from ins_sample isa
        left join ins_product ip on isa.id = ip.ins_sample_id
@@ -619,7 +620,7 @@
          and ios.laboratory = #{laboratory}
          and (ipr2.num = ios.num or ipr2.num is null)
          and (ipr.num = ios.num or ipr.num is null)
        order by ipr.id, ipr2.id
        order by ip.id, ipr.id, ipr2.id
    </select>
    <select id="getIns2Product1" resultMap="product">
        select ip.id            ip_id,
@@ -685,7 +686,7 @@
          and ip.son_laboratory = #{laboratory}
          and ip.standard_method_list_id is not null
          and ios.laboratory = #{laboratory}
        order by ipr.id, ipr2.id
        order by ip.id, ipr.id, ipr2.id
    </select>
    <select id="get2InsProduct1" resultMap="product">
        select ip.id            ip_id,
@@ -752,7 +753,7 @@
          and ip.standard_method_list_id is not null
          and ios.laboratory = #{laboratory}
          and (ipr2.num = #{num} or ipr.num = #{num})
        order by ipr.id, ipr2.id
        order by ip.id, ipr.id, ipr2.id
    </select>
    <select id="getReportModel" resultType="java.util.Map">
@@ -851,6 +852,7 @@
        <result property="insState" column="ins_state" jdbcType="INTEGER"/>
        <result property="joinNum" column="join_num" jdbcType="INTEGER"/>
        <result property="remark" column="remark" jdbcType="VARCHAR"/>
        <result property="issueTime" column="issue_time" />
        <result property="createUser" column="create_user" jdbcType="INTEGER"/>
        <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
@@ -931,7 +933,8 @@
          and ip.id is not null
    </select>
    <select id="selectInsSample" resultType="com.yuanchu.mom.pojo.InsSample">
        select isa.*,entrust_code
        select isa.*,
        case when entrust_code is null then out_entrust_code else entrust_code end as  entrust_code
        from ins_sample isa
        left join ins_order io on isa.ins_order_id = io.id
        where ins_order_id in
performance-server/src/main/java/com/yuanchu/mom/pojo/AuxiliaryOutputWorkingHours.java
@@ -49,32 +49,32 @@
    @ApiModelProperty("加班委托单号")
    @ExcelProperty(value = "加班委托单号")
    @ValueTableShow(3)
    @ValueTableShow(6)
    private String overtimeOrderNo;
    @ApiModelProperty("加班工时")
    @ExcelProperty(value = "加班工时")
    @ValueTableShow(4)
    @ValueTableShow(7)
    private Double overtimeWorkTime;
    @ApiModelProperty("加班数量")
    @ExcelProperty(value = "加班数量")
    @ValueTableShow(5)
    @ValueTableShow(8)
    private Integer overtimeAmount;
    @ApiModelProperty("非加班委托单号")
    @ExcelProperty(value = "非加班委托单号")
    @ValueTableShow(6)
    @ValueTableShow(3)
    private String orderNo;
    @ApiModelProperty("非加班工时")
    @ExcelProperty(value = "非加班工时")
    @ValueTableShow(7)
    @ValueTableShow(4)
    private Double workTime;
    @ApiModelProperty("非加班数量")
    @ExcelProperty(value = "非加班数量")
    @ValueTableShow(8)
    @ValueTableShow(5)
    private Integer amount;
    @ApiModelProperty("产量工时")
@@ -131,4 +131,9 @@
    @ApiModelProperty("检验项目id")
    @ExcelIgnore
    private Integer insProductId;
    @ApiModelProperty("检测次数")
    @ExcelProperty(value = "检测次数")
    @ValueTableShow(2)
    private Integer num;
}
performance-server/src/main/java/com/yuanchu/mom/service/impl/AuxiliaryOutputWorkingHoursServiceImpl.java
@@ -202,13 +202,14 @@
            auxiliaryWorkingHoursDays = auxiliaryWorkingHoursDayMapper.selectListByIds(ids);
        }
        if (ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours)) {
            Map<String, Double> sumMap = new HashMap<>();
//            Map<String, Double> sumMap = new HashMap<>();
            for (AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHour : auxiliaryOutputWorkingHours) {
                if (!sumMap.containsKey(auxiliaryOutputWorkingHour.getManHourGroup()+auxiliaryOutputWorkingHour.getOrderNo()+auxiliaryOutputWorkingHour.getSample())) {
               /* if (!sumMap.containsKey(auxiliaryOutputWorkingHour.getManHourGroup()+auxiliaryOutputWorkingHour.getOrderNo()+auxiliaryOutputWorkingHour.getSample())) {
                    sumMap.put(auxiliaryOutputWorkingHour.getManHourGroup()+auxiliaryOutputWorkingHour.getOrderNo()+auxiliaryOutputWorkingHour.getSample(), auxiliaryOutputWorkingHour.getOutputWorkTime());
                }
                }*/
                sumOutputWorkTime+=auxiliaryOutputWorkingHour.getOutputWorkTime();
            }
            sumOutputWorkTime = sumMap.values().stream().mapToDouble(Double::doubleValue).sum();
//            sumOutputWorkTime = sumMap.values().stream().mapToDouble(Double::doubleValue).sum();
        }
        map.put("产量工时汇总", sumOutputWorkTime);
        if (ObjectUtils.isNotEmpty(auxiliaryWorkingHoursDays)) {
performance-server/src/main/resources/mapper/AuxiliaryOutputWorkingHoursMapper.xml
@@ -28,6 +28,7 @@
        from (
        select aowh.id,
        inspection_item,
        num,
        inspection_item_subclass,
        overtime_order_no,
        overtime_work_time,
@@ -74,15 +75,10 @@
        from(
        select user.name,
        date_time as month,
        order_no,
        sample,
        man_hour_group,
        case when #{type}='加班工时' then  case when overtime_work_time is null then 0 else overtime_work_time end
        else case when work_time is null then 0 else work_time end  end as manHours
        -- FORMAT(SUM(output_work_time), 4) as manHours
        from auxiliary_output_working_hours aowh
        left join user on user.id=aowh.`check`
        left join department_lims dl on depart_lims_id=dl.id
        where date_time LIKE CONCAT('%', #{month}, '%')
        <if test="ids !=null and ids != ''">
            and `check` in
@@ -90,12 +86,7 @@
                #{val}
            </foreach>
        </if>
        group by user.name,date_time,order_no,
        sample,
        man_hour_group
        order by user.name,date_time,order_no,
        sample,
        man_hour_group
        order by user.name,date_time
        )A
        group by A.name,
        A.month