¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.requier.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.vo.StandardProductVO; |
| | | import com.ruoyi.common.core.domain.entity.User; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.framework.exception.ErrorException; |
| | | import com.ruoyi.inspect.mapper.*; |
| | | import com.ruoyi.inspect.pojo.*; |
| | | import com.ruoyi.inspect.vo.ProductVo; |
| | | import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper; |
| | | import com.ruoyi.performance.mapper.PerformanceShiftMapper; |
| | | import com.ruoyi.performance.mapper.ShiftTimeMapper; |
| | | import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours; |
| | | import com.ruoyi.performance.pojo.PerformanceShift; |
| | | import com.ruoyi.performance.pojo.ShiftTime; |
| | | import com.ruoyi.requier.mapper.PkMasterMapper; |
| | | import com.ruoyi.requier.mapper.PkSlaveMapper; |
| | | import com.ruoyi.requier.pojo.PkMaster; |
| | | import com.ruoyi.requier.pojo.PkSlave; |
| | | import com.ruoyi.requier.service.InsOrderPlanService; |
| | | import com.ruoyi.requier.service.PkMasterService; |
| | | import com.ruoyi.requier.service.impl.InsOrderPlanServiceImpl; |
| | | import com.ruoyi.system.mapper.UserMapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.logging.log4j.util.Strings; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | | * æå¡å®ç°ç±» |
| | | * </p> |
| | | * |
| | | * @author æ±èéµ·éç½ç»ç§ææéå
¬å¸ |
| | | * @since 2024-07-29 01:16:26 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class PkMasterServiceImpl extends ServiceImpl<PkMasterMapper, PkMaster> implements PkMasterService { |
| | | |
| | | @Resource |
| | | private PkMasterMapper pkMasterMapper; |
| | | |
| | | @Resource |
| | | private PkSlaveMapper pkSlaveMapper; |
| | | |
| | | @Resource |
| | | private InsOrderMapper insOrderMapper; |
| | | |
| | | @Resource |
| | | private InsSampleMapper insSampleMapper; |
| | | |
| | | @Resource |
| | | private InsProductMapper insProductMapper; |
| | | |
| | | @Resource |
| | | private InsProductResultMapper insProductResultMapper; |
| | | |
| | | @Resource |
| | | private InsProductUserMapper insProductUserMapper; |
| | | |
| | | @Resource |
| | | private UserMapper userMapper; |
| | | |
| | | @Resource |
| | | private InsOrderPlanService insOrderPlanService; |
| | | |
| | | @Resource |
| | | private InsOrderPlanServiceImpl insOrderPlanServiceImpl; |
| | | |
| | | @Resource |
| | | private ShiftTimeMapper shiftTimeMapper; |
| | | @Resource |
| | | private PerformanceShiftMapper performanceShiftMapper; |
| | | |
| | | @Resource |
| | | private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper; |
| | | |
| | | //æ¸©åº¦å¾ªç¯æ°é |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int temDataAcquisition(PkMaster pkMaster) { |
| | | Integer userId = SecurityUtils.getUserId().intValue(); |
| | | //æ¥è¯¢æ°éå
³èçåè¡¨ä¿¡æ¯ |
| | | PkMaster master = new PkMaster(); |
| | | List<PkMaster> pkMasters = pkMasterMapper.selectList(Wrappers.<PkMaster>lambdaQuery() |
| | | .eq(PkMaster::getEntrustCode, pkMaster.getEntrustCode()) |
| | | .eq(PkMaster::getSampleCode, pkMaster.getSampleCode()) |
| | | .eq(PkMaster::getModel, pkMaster.getModel()) |
| | | .eq(PkMaster::getCycles, pkMaster.getCycles()) |
| | | .eq(PkMaster::getTemperature, pkMaster.getTemperature()).orderByDesc(PkMaster::getId)); |
| | | if(!pkMasters.isEmpty()){ |
| | | master = pkMasters.get(0); |
| | | } |
| | | //æ¥è¯¢å¯¹åºçæ£éªå表 |
| | | InsOrder insOrder = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getState, 1).eq(InsOrder::getEntrustCode, pkMaster.getEntrustCode())); |
| | | if (ObjectUtils.isEmpty(insOrder)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æå" + pkMaster.getEntrustCode()); |
| | | } |
| | | //æ¥è¯¢å¯¹åºæ£éªæ ·åid |
| | | InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getInsOrderId, insOrder.getId()) |
| | | .eq(InsSample::getSampleCode, pkMaster.getSampleCode()) |
| | | .eq(InsSample::getModel, pkMaster.getModel())); |
| | | if (ObjectUtils.isEmpty(insSample)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æåä¸çè¯¥æ ·å" + pkMaster.getSampleCode()); |
| | | } if (ObjectUtils.isNotEmpty(master)) { |
| | | //throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æå" + pkMaster.getEntrustCode() + "çæ°éæ°æ®"); |
| | | List<PkSlave> pkSlaves = pkSlaveMapper.selectList1(master.getIsid()); |
| | | if (CollectionUtils.isEmpty(pkSlaves)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æå" + pkMaster.getEntrustCode() + "çæ°éåæ°æ®"); |
| | | } |
| | | |
| | | //æ¥è¯¢å¯¹åºæ£éªé¡¹ç® |
| | | Map<String, Object> map = insOrderPlanService.temCycle(insSample.getId(), pkMaster.getCycles(), pkMaster.getTemperature()); |
| | | List<ProductVo> productVos = (List<ProductVo>) map.get("productVos"); |
| | | if (CollectionUtils.isNotEmpty(productVos)) { |
| | | //todo å¦ææ¸©åº¦å¾ªç¯ç项ç®nmææ¹å¨è¿ééè¦æ¹å¨ @zss |
| | | for (PkSlave pkSlave : pkSlaves) { |
| | | for (ProductVo productVo : productVos) { |
| | | if (pkSlave.getInsBushingId().equals(productVo.getBushColor()) && |
| | | pkSlave.getInsFibersId().equals(productVo.getCode()) && |
| | | pkSlave.getInsFiberId().equals(productVo.getColor())) { |
| | | //æ¾å°å¯¹åºçæ°æ®(对åºå¥ç®¡å
çº¤çæ°æ®) |
| | | List<InsProductResult> results = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, productVo.getInsProduct().getId())); |
| | | InsProductResult result; |
| | | if (CollectionUtils.isEmpty(results)) { |
| | | result = new InsProductResult(); |
| | | } else { |
| | | result = results.get(0); |
| | | } |
| | | result.setInsProductId(productVo.getInsProduct().getId());//æ£éªé¡¹ç®id |
| | | List<Map<String, Object>> iv = new ArrayList<>(); |
| | | List<Map<String, Object>> cv = new ArrayList<>(); |
| | | if (productVo.getInsProduct().getInspectionItemClass().equals("1310nm")) { |
| | | //1310nmå¤ç«¯ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("u", userId + ""); |
| | | map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) ? pkSlave.getWeaken1310A().toString() : null); |
| | | iv.add(map1); |
| | | //1310nmå
端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("u", userId + ""); |
| | | map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B()) ? pkSlave.getWeaken1310B().toString() : null); |
| | | iv.add(map2); |
| | | //1310nmè¡°åç³»æ° |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | double v = 0.0; |
| | | if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B())) { |
| | | v = (pkSlave.getWeaken1310A() + pkSlave.getWeaken1310B()) / 2; |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1310B())) { |
| | | v = pkSlave.getWeaken1310A(); |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1310B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1310A())) { |
| | | v = pkSlave.getWeaken1310B(); |
| | | } else { |
| | | log.info("æ°éidï¼{}", pkSlave.getId()); |
| | | throw new ErrorException("1310çä¸¤ç«¯é½æ²¡ææ°æ®!!!"); |
| | | } |
| | | BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP); |
| | | map3.put("v", String.valueOf(decimal)); |
| | | cv.add(map3); |
| | | } else if (productVo.getInsProduct().getInspectionItemClass().equals("1550nm")) { |
| | | //1550nmå¤ç«¯ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("u", userId + ""); |
| | | map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) ? pkSlave.getWeaken1550A().toString() : null); |
| | | iv.add(map1); |
| | | //1550nmå
端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("u", userId + ""); |
| | | map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B()) ? pkSlave.getWeaken1550B().toString() : null); |
| | | iv.add(map2); |
| | | //1550nmè¡°åç³»æ° |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | double v = 0.0; |
| | | if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B())) { |
| | | v = (pkSlave.getWeaken1550A() + pkSlave.getWeaken1550B()) / 2; |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1550B())) { |
| | | v = pkSlave.getWeaken1550A(); |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1550B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1550A())) { |
| | | v = pkSlave.getWeaken1550B(); |
| | | } else { |
| | | throw new ErrorException("1550çä¸¤ç«¯é½æ²¡ææ°æ®!!!"); |
| | | } |
| | | BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP); |
| | | map3.put("v", String.valueOf(decimal)); |
| | | cv.add(map3); |
| | | } else if (productVo.getInsProduct().getInspectionItemClass().equals("1625nm")) { |
| | | //1625nmå¤ç«¯ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("u", userId + ""); |
| | | map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) ? pkSlave.getWeaken1625A().toString() : null); |
| | | iv.add(map1); |
| | | //1625nmå
端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("u", userId + ""); |
| | | map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B()) ? pkSlave.getWeaken1625B().toString() : null); |
| | | iv.add(map2); |
| | | //1625nmè¡°åç³»æ° |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | double v = 0.0; |
| | | if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B())) { |
| | | v = (pkSlave.getWeaken1625A() + pkSlave.getWeaken1625B()) / 2; |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1625B())) { |
| | | v = pkSlave.getWeaken1625A(); |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1625B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1625A())) { |
| | | v = pkSlave.getWeaken1625B(); |
| | | } else { |
| | | throw new ErrorException("1625çä¸¤ç«¯é½æ²¡ææ°æ®!!!"); |
| | | } |
| | | BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP); |
| | | map3.put("v", String.valueOf(decimal)); |
| | | cv.add(map3); |
| | | } else if (productVo.getInsProduct().getInspectionItemClass().equals("1383nm")) { |
| | | //1383nmå¤ç«¯ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("u", userId + ""); |
| | | map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) ? pkSlave.getWeaken1383A().toString() : null); |
| | | iv.add(map1); |
| | | //1383nmå
端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("u", userId + ""); |
| | | map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B()) ? pkSlave.getWeaken1383B().toString() : null); |
| | | iv.add(map2); |
| | | //1383nmè¡°åç³»æ° |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | double v = 0.0; |
| | | if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B())) { |
| | | v = (pkSlave.getWeaken1383A() + pkSlave.getWeaken1310B()) / 2; |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1383B())) { |
| | | v = pkSlave.getWeaken1383A(); |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1383B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1383A())) { |
| | | v = pkSlave.getWeaken1383B(); |
| | | } else { |
| | | throw new ErrorException("1383çä¸¤ç«¯é½æ²¡ææ°æ®!!!"); |
| | | } |
| | | BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP); |
| | | map3.put("v", String.valueOf(decimal)); |
| | | cv.add(map3); |
| | | } else if (productVo.getInsProduct().getInspectionItemClass().equals("1490nm")) { |
| | | //1490nmå¤ç«¯ |
| | | Map<String, Object> map1 = new HashMap<>(); |
| | | map1.put("u", userId + ""); |
| | | map1.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) ? pkSlave.getWeaken1490A().toString() : null); |
| | | iv.add(map1); |
| | | //1490nmå
端 |
| | | Map<String, Object> map2 = new HashMap<>(); |
| | | map2.put("u", userId + ""); |
| | | map2.put("v", ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B()) ? pkSlave.getWeaken1490B().toString() : null); |
| | | iv.add(map2); |
| | | //1490nmè¡°åç³»æ° |
| | | Map<String, Object> map3 = new HashMap<>(); |
| | | double v = 0.0; |
| | | if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) && ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B())) { |
| | | v = (pkSlave.getWeaken1490A() + pkSlave.getWeaken1310B()) / 2; |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490A()) && ObjectUtils.isEmpty(pkSlave.getWeaken1490B())) { |
| | | v = pkSlave.getWeaken1490A(); |
| | | } else if (ObjectUtils.isNotEmpty(pkSlave.getWeaken1490B()) && ObjectUtils.isEmpty(pkSlave.getWeaken1490A())) { |
| | | v = pkSlave.getWeaken1490B(); |
| | | } else { |
| | | throw new ErrorException("1490çä¸¤ç«¯é½æ²¡ææ°æ®!!!"); |
| | | } |
| | | BigDecimal decimal = BigDecimal.valueOf(v).setScale(3, RoundingMode.HALF_UP); |
| | | map3.put("v", String.valueOf(decimal)); |
| | | cv.add(map3); |
| | | } else { |
| | | throw new ErrorException("æ²¡ææ¾å°è¯¥æ¸©åº¦çæ£éªé¡¹ç®" + productVo.getInsProduct().getInspectionItemClass()); |
| | | } |
| | | result.setInsValue(JSON.toJSONString(iv));//æ£éªå¼ |
| | | result.setComValue(JSON.toJSONString(cv));//计ç®å¼ |
| | | if (BeanUtil.isEmpty(result.getId())) { |
| | | result.setCreateUser(userId); |
| | | result.setUpdateUser(userId); |
| | | insProductResultMapper.insert(result); |
| | | } else { |
| | | result.setUpdateUser(userId); |
| | | result.setUpdateTime(LocalDateTime.now()); |
| | | insProductResultMapper.updateById(result); |
| | | } |
| | | |
| | | InsProduct insProduct = productVo.getInsProduct(); |
| | | InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insProduct.getId())); |
| | | String[] comValue = insProductResult.getComValue().split(":"); |
| | | String comple = comValue[comValue.length-1].split("\"")[1]; |
| | | //é¦å
æ¥ç温度æ¯å¦æ¯20度常温 |
| | | if (!pkMaster.getTemperature().equals("20â(常温)")) { |
| | | //妿䏿¯å
æ¥è¯¢æ¯å¦æå¼ |
| | | int a = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)")).stream().map(InsProduct::getInsResult).anyMatch(ObjectUtils::isEmpty) ? 1 : 0; |
| | | if (a == 1) { |
| | | throw new ErrorException("å
è·å20â(常温)çæ£éªå¼,åè·åå
¶ä»æ¸©åº¦" + pkMaster.getSampleCode()); |
| | | } else { |
| | | //计ç®è¡°åå·® |
| | | InsProduct insPro = null; |
| | | switch (insProduct.getInspectionItemClass()) { |
| | | case "1310nm": |
| | | //æ¥è¯¢20â(常温)1310nmçè¡°åç³»æ° |
| | | try { |
| | | insPro = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)") |
| | | .eq(InsProduct::getInspectionItemClass, "1310nm") |
| | | .eq(InsProduct::getInsFiberId, productVo.getInsProduct().getInsFiberId())); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("æ²¡ææ¥å°20â(常温),1310nm项ç®" + productVo.getInsProduct().getInsFiberId() + "å
çº¤çæ£éªé¡¹ç®"); |
| | | } |
| | | break; |
| | | case "1550nm": |
| | | //æ¥è¯¢20â(常温)1550nmçè¡°åç³»æ° |
| | | try { |
| | | insPro = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)") |
| | | .eq(InsProduct::getInspectionItemClass, "1550nm") |
| | | .eq(InsProduct::getInsFiberId, productVo.getInsProduct().getInsFiberId())); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("æ²¡ææ¥å°20â(常温),1625nm项ç®" + productVo.getInsProduct().getInsFiberId() + "å
çº¤çæ£éªé¡¹ç®"); |
| | | } |
| | | break; |
| | | case "1625nm": |
| | | //æ¥è¯¢20â(常温)1625nmçè¡°åç³»æ° |
| | | try { |
| | | insPro = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)") |
| | | .eq(InsProduct::getInspectionItemClass, "1625nm") |
| | | .eq(InsProduct::getInsFiberId, productVo.getInsProduct().getInsFiberId())); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("æ²¡ææ¥å°20â(常温),1625nm项ç®" + productVo.getInsProduct().getInsFiberId() + "å
çº¤çæ£éªé¡¹ç®"); |
| | | } |
| | | break; |
| | | case "1383nm": |
| | | //æ¥è¯¢20â(常温)1383nmçè¡°åç³»æ° |
| | | try { |
| | | insPro = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)") |
| | | .eq(InsProduct::getInspectionItemClass, "1383nm") |
| | | .eq(InsProduct::getInsFiberId, productVo.getInsProduct().getInsFiberId())); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("æ²¡ææ¥å°20â(常温),1383nm项ç®" + productVo.getInsProduct().getInsFiberId() + "å
çº¤çæ£éªé¡¹ç®"); |
| | | } |
| | | break; |
| | | case "1490nm": |
| | | //æ¥è¯¢20â(常温)1490nmçè¡°åç³»æ° |
| | | try { |
| | | insPro = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "1") |
| | | .eq(InsProduct::getInspectionItemSubclass, "20â(常温)") |
| | | .eq(InsProduct::getInspectionItemClass, "1490nm") |
| | | .eq(InsProduct::getInsFiberId, productVo.getInsProduct().getInsFiberId())); |
| | | } catch (Exception e) { |
| | | throw new ErrorException("æ²¡ææ¥å°20â(常温),1490nm项ç®" + productVo.getInsProduct().getInsFiberId() + "å
çº¤çæ£éªé¡¹ç®"); |
| | | } |
| | | break; |
| | | } |
| | | InsProductResult insProductRes = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, insPro.getId())); |
| | | String[] split = insProductRes.getComValue().split(":"); |
| | | double abs = Math.abs(Double.parseDouble(split[split.length-1].split("\"")[1]) - Double.parseDouble(comple)); |
| | | BigDecimal scale = BigDecimal.valueOf(abs).setScale(3, RoundingMode.HALF_UP); |
| | | insProduct.setLastValue(String.valueOf(scale)); |
| | | String ask = insProduct.getAsk(); |
| | | int insResult = 1; |
| | | switch (ask.charAt(0)) { |
| | | case '<': |
| | | insResult = Double.parseDouble(insProduct.getLastValue()) < Double.parseDouble(ask.substring(1)) ? 1 : 0; |
| | | break; |
| | | case '>': |
| | | insResult = Double.parseDouble(insProduct.getLastValue()) > Double.parseDouble(ask.substring(1)) ? 1 : 0; |
| | | break; |
| | | case '=': |
| | | insResult = Double.parseDouble(insProduct.getLastValue()) == Double.parseDouble(ask.substring(1)) ? 1 : 0; |
| | | break; |
| | | case 'â¤': |
| | | insResult = Double.parseDouble(insProduct.getLastValue()) <= Double.parseDouble(ask.substring(1)) ? 1 : 0; |
| | | break; |
| | | case 'â¥': |
| | | insResult = Double.parseDouble(insProduct.getLastValue()) >= Double.parseDouble(ask.substring(1)) ? 1 : 0; |
| | | break; |
| | | } |
| | | insProduct.setInsResult(insResult); |
| | | } |
| | | } else { |
| | | //妿æ¯20度常温,éè¦ç»åºåæ ¼çç»è®º |
| | | insProduct.setInsResult(1);//20åº¦å¸¸æ¸©çæ£éªé¡¹é»è®¤ä¸ºåæ ¼ |
| | | } |
| | | insProduct.setUpdateUser(userId); |
| | | insProductMapper.updateById(insProduct); |
| | | User user = userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getAccount, master.getDetectionPeople())); |
| | | if (ObjectUtils.isEmpty(user)) { |
| | | throw new ErrorException("limsç³»ç»æ²¡ææ¾å°è¯¥ç¨æ·" + master.getDetectionPeople()); |
| | | } |
| | | insProductUserMapper.insert(new InsProductUser(null, user.getId(), master.getDetectionDate(), insProduct.getId())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //ç»æ¸©åº¦å¾ªç¯çæ£éªé¡¹ç®ç»å®è®¾å¤ |
| | | InsProduct product = insProductMapper.selectOne(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getState, 1) |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "温度循ç¯")); |
| | | if (ObjectUtils.isEmpty(product)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æåä¸è¯¥æ ·åçç¸å
³æ¸©åº¦å¾ªç¯æ£éªé¡¹ç®"); |
| | | } |
| | | InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery().eq(InsProductResult::getInsProductId, product.getId())); |
| | | if (ObjectUtils.isEmpty(insProductResult)) { |
| | | insProductResult = new InsProductResult(); |
| | | insProductResult.setInsProductId(product.getId()); |
| | | } |
| | | if (ObjectUtils.isEmpty(insProductResult.getEquipValue())) { |
| | | List<Map<String, Object>> dv = new ArrayList<>(); |
| | | Map<String, Object> map4 = new HashMap<>(); |
| | | map4.put("v", "JCZX-TX-TT02006"); |
| | | dv.add(map4); |
| | | Map<String, Object> map5 = new HashMap<>(); |
| | | map5.put("v", "JCZX-TX-TT02001"); |
| | | dv.add(map5); |
| | | insProductResult.setEquipValue(JSON.toJSONString(dv)); |
| | | List<Map<String, Object>> dn = new ArrayList<>(); |
| | | Map<String, Object> map6 = new HashMap<>(); |
| | | map6.put("v", "æ¥å
¥å¼é«ä½æ¸©æ¹¿çè¯éªç®±"); |
| | | dn.add(map6); |
| | | Map<String, Object> map7 = new HashMap<>(); |
| | | map7.put("v", "æ¥å
¥å¼é«ä½æ¸©è¯éªç®±"); |
| | | dn.add(map7); |
| | | insProductResult.setEquipName(JSON.toJSONString(dn)); |
| | | if (BeanUtil.isEmpty(insProductResult.getId())) { |
| | | insProductResult.setCreateUser(userId); |
| | | insProductResult.setUpdateUser(userId); |
| | | insProductResultMapper.insert(insProductResult); |
| | | } else { |
| | | insProductResult.setUpdateUser(userId); |
| | | insProductResult.setUpdateTime(LocalDateTime.now()); |
| | | insProductResultMapper.updateById(insProductResult); |
| | | } |
| | | } |
| | | } |
| | | //æ¥æ¾æ ·åä¸è¯¥æ¬¡æ°ç温度çé¡¹ç® |
| | | List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getState, 1) |
| | | .isNotNull(InsProduct::getSpecialItemParentId) |
| | | .isNotNull(InsProduct::getInspectionItemClass)); |
| | | // è¿æ»¤åºå½åå¾ªç¯æ¬¡æ° å æ¸©åº¦çæ£éªé¡¹ç® |
| | | List<InsProduct> productList = insProducts.stream() |
| | | .filter(item -> item.getInspectionItem().equals(pkMaster.getCycles()) && |
| | | item.getInspectionItemSubclass().equals(pkMaster.getTemperature())) |
| | | .collect(Collectors.toList()); |
| | | // å·¥æ¶æ·»å |
| | | int count = 0; |
| | | for(InsProduct insProduct1 : productList) { |
| | | // æ¥è¯¢insProductResultæ¿å°insValueçæå¼çä¸ªæ° |
| | | InsProductResult insProductResult = insProductResultMapper.selectOne(new LambdaQueryWrapper<InsProductResult>() |
| | | .eq(InsProductResult::getInsProductId, insProduct1.getId())); |
| | | if(!Objects.isNull(insProductResult)) { |
| | | // insProductResultä¸ä¸ºç©º,è·åæå¼çä¸ªæ° |
| | | insProductResult.getInsValue(); |
| | | List<Map> maps = JSONArray.parseArray(insProductResult.getInsValue(), Map.class); |
| | | for (Map map : maps) { |
| | | if (Strings.isNotEmpty(map.get("v").toString())) { |
| | | count++; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // 该ååä¸é¤äºå½å次æ°ä»¥å温度æå¼çè®°å½ |
| | | List<InsProduct> productList1 = insProducts.stream() |
| | | .filter(item -> !(item.getInspectionItem().equals(pkMaster.getCycles()) && item.getInspectionItemSubclass().equals(pkMaster.getTemperature()))) |
| | | .collect(Collectors.toList()); |
| | | int allValue = 0; |
| | | for(InsProduct insProduct1 : productList1) { |
| | | // æ¥è¯¢insProductResultæ¿å°insValueçæå¼çä¸ªæ° |
| | | InsProductResult insProductResult = insProductResultMapper.selectOne(new LambdaQueryWrapper<InsProductResult>() |
| | | .eq(InsProductResult::getInsProductId, insProduct1.getId())); |
| | | if(!Objects.isNull(insProductResult)) { |
| | | // insProductResultä¸ä¸ºç©º,è·åæå¼çä¸ªæ° |
| | | insProductResult.getInsValue(); |
| | | List<Map> maps = JSONArray.parseArray(insProductResult.getInsValue(), Map.class); |
| | | for (Map map : maps) { |
| | | if (Strings.isNotEmpty(map.get("v").toString())) { |
| | | allValue++; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | Map<String, Boolean> map = isOvertimeAndCrossDay(userId); |
| | | Boolean isWithinRange = map.get("isWithinRange"); // æ¯å¦æ£å¸¸ä¸ç |
| | | Boolean isCross = map.get("isCross"); // æ¯å¦è·¨å¤© |
| | | BigDecimal manHour = BigDecimal.ZERO; // å·¥æ¶ |
| | | InsProduct insProduct = insProductMapper.selectOne(new LambdaQueryWrapper<InsProduct>().eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getInspectionItem, "温度循ç¯")); |
| | | StandardProductVO workHourMap = insOrderPlanServiceImpl.getInspectWorkHourAndGroup(insProduct); |
| | | if(ObjectUtil.isNotNull(workHourMap)){ |
| | | manHour = new BigDecimal(workHourMap.getManHour()); |
| | | } |
| | | DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | DateTime parse = DateUtil.parse(LocalDateTime.now().format(formatter)); |
| | | AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours(); |
| | | auxiliaryOutputWorkingHours.setInspectionItem("温度循ç¯"); // æ£éªé¡¹ç® |
| | | auxiliaryOutputWorkingHours.setInspectionItemSubclass(""); // æ£éªé¡¹ç®åç±» |
| | | if(isWithinRange) { |
| | | // æ£å¸¸ä¸ç |
| | | auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode()); // éå çå§æåå· |
| | | auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal(accuracy(manHour,count))); // å·¥æ¶ |
| | | auxiliaryOutputWorkingHours.setAmount(count); // éå çæ°é |
| | | }else{ |
| | | // å ç |
| | | auxiliaryOutputWorkingHours.setOvertimeOrderNo(insOrder.getEntrustCode()); // éå çå§æåå· |
| | | auxiliaryOutputWorkingHours.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,count))); // å·¥æ¶ |
| | | auxiliaryOutputWorkingHours.setOvertimeAmount(count); // éå çæ°é |
| | | } |
| | | if(isCross) { |
| | | String date = LocalDateTime.now().minusDays(1).toLocalDate().atStartOfDay().format(formatters);// åä¸å¤© |
| | | auxiliaryOutputWorkingHours.setDateTime(date); // æ¥æ |
| | | }else { |
| | | String date = LocalDateTime.now().toLocalDate().atStartOfDay().format(formatters);// å½å¤© |
| | | auxiliaryOutputWorkingHours.setDateTime(date); // æ¥æ |
| | | } |
| | | auxiliaryOutputWorkingHours.setOutputWorkTime(new BigDecimal(accuracy(manHour,count))); // 产åºå·¥æ¶ |
| | | auxiliaryOutputWorkingHours.setWeekDay(insOrderPlanServiceImpl.getWeek(LocalDateTime.now().format(formatters)));//ææ |
| | | auxiliaryOutputWorkingHours.setWeek(String.valueOf(DateUtil.weekOfYear(DateUtil.offsetDay(parse, 1))));//卿¬¡ |
| | | auxiliaryOutputWorkingHours.setCheck(userId);//æ£æµäºº |
| | | auxiliaryOutputWorkingHours.setSample(insSample.getSampleCode());//æ ·åç¼å· |
| | | auxiliaryOutputWorkingHours.setManHourGroup(workHourMap.getManHourGroup());//å·¥æ¶åç» |
| | | // æ¥è¯¢éè¦æä½çæ¥ææ¯å¦æè®°å½ |
| | | List<AuxiliaryOutputWorkingHours> oldRecords = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery() |
| | | .eq(AuxiliaryOutputWorkingHours::getCheck,userId) |
| | | .eq(AuxiliaryOutputWorkingHours::getInspectionItem, "温度循ç¯") |
| | | .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, "") |
| | | .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode()) |
| | | .and(i->i.eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode()) |
| | | .or() |
| | | .eq(AuxiliaryOutputWorkingHours::getOvertimeOrderNo, insOrder.getEntrustCode())) |
| | | .eq(AuxiliaryOutputWorkingHours::getDateTime, auxiliaryOutputWorkingHours.getDateTime()) |
| | | ); |
| | | // ææçè®°å½ï¼å
¶ä»å¤© + å½åå¤©ï¼ |
| | | List<AuxiliaryOutputWorkingHours> addOldRecords = auxiliaryOutputWorkingHoursMapper.selectList(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery() |
| | | .eq(AuxiliaryOutputWorkingHours::getCheck,userId) |
| | | .eq(AuxiliaryOutputWorkingHours::getInspectionItem, "温度循ç¯") |
| | | .eq(AuxiliaryOutputWorkingHours::getInspectionItemSubclass, "") |
| | | .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode()) |
| | | .and(i->i.eq(AuxiliaryOutputWorkingHours::getOrderNo, insOrder.getEntrustCode()) |
| | | .or() |
| | | .eq(AuxiliaryOutputWorkingHours::getOvertimeOrderNo, insOrder.getEntrustCode())) |
| | | ); |
| | | if(CollectionUtils.isEmpty(oldRecords)){ |
| | | // æ°å¢ä¹è¦æ¥çæ¯å¦æææçè®°å½ |
| | | if(Objects.isNull(addOldRecords)) { |
| | | // å
¶ä»å¤©ä¹æ²¡æè®°å½ |
| | | auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours); |
| | | }else{ |
| | | // ææçè®°å½ |
| | | int otherDayAmount = 0; // ææçæ°é |
| | | for(AuxiliaryOutputWorkingHours a : addOldRecords) { |
| | | otherDayAmount += (Objects.isNull(a.getAmount()) ? 0 : a.getAmount()) + (Objects.isNull(a.getOvertimeAmount()) ? 0 : a.getOvertimeAmount()); |
| | | } |
| | | if(isWithinRange) { |
| | | // æ£å¸¸ä¸ç |
| | | |
| | | auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // å·¥æ¶ |
| | | auxiliaryOutputWorkingHours.setAmount((count - otherDayAmount + allValue)); // éå çæ°é |
| | | }else { |
| | | // å ç |
| | | auxiliaryOutputWorkingHours.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // å·¥æ¶ |
| | | auxiliaryOutputWorkingHours.setOvertimeAmount((count - otherDayAmount + allValue)); // éå çæ°é |
| | | } |
| | | auxiliaryOutputWorkingHours.setOutputWorkTime(new BigDecimal(accuracy(manHour,(count - otherDayAmount + allValue)))); // 产åºå·¥æ¶ |
| | | auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours); |
| | | } |
| | | }else { |
| | | // ä¸ä¸ºç©º |
| | | Integer oldAmount = 0; // å·¥æ¶æ·»å çä¸ªæ° |
| | | for(AuxiliaryOutputWorkingHours a : addOldRecords) { |
| | | oldAmount += (Objects.isNull(a.getAmount()) ? 0 : a.getAmount()) + (Objects.isNull(a.getOvertimeAmount()) ? 0 : a.getOvertimeAmount()); |
| | | } |
| | | if(count > (oldAmount - allValue)){ |
| | | // æ¥æ¾åºæ¥æä¸ºå¾å°æ¥æçè®°å½ |
| | | List<AuxiliaryOutputWorkingHours> collect = oldRecords.stream().filter(item -> item.getDateTime().equals(auxiliaryOutputWorkingHours.getDateTime())).collect(Collectors.toList()); |
| | | if(CollectionUtils.isNotEmpty(collect)){ |
| | | // æçè¯å°±æ¯æ´æ°æä½ |
| | | AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours1 = collect.get(0); |
| | | if(isWithinRange) { |
| | | // æ£å¸¸ä¸ç |
| | | // æ¿å°åæ¬çæ°é ä¸ æ°çæ°éç¸å |
| | | int num = Objects.isNull(auxiliaryOutputWorkingHours1.getAmount()) ? 0 :auxiliaryOutputWorkingHours1.getAmount(); // åæ¬çæ°é |
| | | auxiliaryOutputWorkingHours1.setAmount(count - oldAmount + num + allValue); // éå çæ°é |
| | | auxiliaryOutputWorkingHours1.setOrderNo(insOrder.getEntrustCode()); // éå çå§æåå· |
| | | auxiliaryOutputWorkingHours1.setWorkTime(new BigDecimal(accuracy(manHour,(count - oldAmount + num + allValue)))); // å·¥æ¶ |
| | | BigDecimal outputWorkTime = new BigDecimal(accuracy(manHour, auxiliaryOutputWorkingHours1.getAmount())).add((Objects.isNull(auxiliaryOutputWorkingHours1.getOvertimeWorkTime()) ? new BigDecimal(0) : auxiliaryOutputWorkingHours1.getOvertimeWorkTime())); |
| | | auxiliaryOutputWorkingHours1.setOutputWorkTime(outputWorkTime);// 产åºå·¥æ¶ ééè¯å®æ¯ä¼ééå® |
| | | }else{ |
| | | // å ç |
| | | // æ¿å°åæ¬çæ°é ä¸ æ°çæ°éç¸å |
| | | int num = Objects.isNull(auxiliaryOutputWorkingHours1.getOvertimeAmount()) ? 0 :auxiliaryOutputWorkingHours1.getOvertimeAmount(); // åæ¬çæ°é |
| | | auxiliaryOutputWorkingHours1.setOvertimeAmount(count - oldAmount + num + allValue);// å çæ°é |
| | | auxiliaryOutputWorkingHours1.setOvertimeOrderNo(insOrder.getEntrustCode()); // å çå§æåå· |
| | | auxiliaryOutputWorkingHours1.setOvertimeWorkTime(new BigDecimal(accuracy(manHour,(count - oldAmount + num + allValue)))); // å·¥æ¶ |
| | | BigDecimal outputWorkTime = new BigDecimal(accuracy(manHour, auxiliaryOutputWorkingHours1.getOvertimeAmount())).add( |
| | | (Objects.isNull(auxiliaryOutputWorkingHours1.getWorkTime()) ? new BigDecimal(0) : auxiliaryOutputWorkingHours1.getWorkTime())); |
| | | auxiliaryOutputWorkingHours1.setOutputWorkTime(outputWorkTime); // 产åºå·¥æ¶ ééè¯å®æ¯ä¼ééå® |
| | | } |
| | | auxiliaryOutputWorkingHoursMapper.updateById(auxiliaryOutputWorkingHours1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | //æ¸©åº¦å¾ªç¯æ°éæ»ä½ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int temDataAcquisition2(PkMaster pkMaster) { |
| | | //æ¥è¯¢åºææå¾ªç¯æ¬¡æ°å温度,ç¶å循ç¯è°ç¨temDataAcquisitionæ¥å£ |
| | | //æ¥è¯¢å¯¹åºçæ£éªå表 |
| | | InsOrder insOrder = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getState, 1).eq(InsOrder::getEntrustCode, pkMaster.getEntrustCode())); |
| | | if (ObjectUtils.isEmpty(insOrder)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æå" + pkMaster.getEntrustCode()); |
| | | } |
| | | //æ¥è¯¢å¯¹åºæ£éªæ ·åid |
| | | InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery() |
| | | .eq(InsSample::getInsOrderId, insOrder.getId()) |
| | | .eq(InsSample::getSampleCode, pkMaster.getSampleCode()) |
| | | .eq(InsSample::getModel, pkMaster.getModel())); |
| | | if (ObjectUtils.isEmpty(insSample)) { |
| | | throw new ErrorException("æ²¡ææ¾å°å¯¹åºå§æåä¸çè¯¥æ ·å" + pkMaster.getSampleCode()); |
| | | } |
| | | //æ¥æ¾æ ·åä¸æææ¸©åº¦å¾ªç¯çé¡¹ç® |
| | | List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() |
| | | .eq(InsProduct::getInsSampleId, insSample.getId()) |
| | | .eq(InsProduct::getState, 1) |
| | | .isNotNull(InsProduct::getSpecialItemParentId) |
| | | .isNotNull(InsProduct::getInspectionItemClass)); |
| | | //è¿æ»¤åºææå¾ªç¯æ¬¡æ°å温度 |
| | | List<String> collect1 = insProducts.stream().map(InsProduct::getInspectionItem).distinct().collect(Collectors.toList()); |
| | | List<String> collect2 = insProducts.stream().map(InsProduct::getInspectionItemSubclass).distinct().collect(Collectors.toList()); |
| | | for (String s : collect1) { |
| | | for (String s1 : collect2) { |
| | | PkMaster master = new PkMaster(); |
| | | master.setEntrustCode(pkMaster.getEntrustCode()); |
| | | master.setSampleCode(pkMaster.getSampleCode()); |
| | | master.setModel(pkMaster.getModel()); |
| | | master.setCycles(s); |
| | | master.setTemperature(s1); |
| | | temDataAcquisition(master); |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦å çã跨天 |
| | | */ |
| | | public Map<String,Boolean> isOvertimeAndCrossDay(Integer userId){ |
| | | Map<String, Boolean> map = new HashMap<>(); |
| | | Boolean isWithinRange = true; |
| | | Boolean isCross = false; // æ¯å¦å°å½åæ£éªååçå·¥æ¶è®¡ç®å°ç次å¼å§å¤© |
| | | 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); |
| | | // æ£æ¥å½åæ¶é´æ¯å¦å¨èå´å
ï¼å
æ¬è¾¹çï¼ |
| | | |
| | | // 妿å½åæ¶é´ä¸å¨ä»å¤©ççæ¬¡å
17:00~5.00 15.00 é¦å
夿æ¯å¦è·¨å¤©äº |
| | | // 跨天çæ
åµ |
| | | if (startTime.isAfter(endTime)) { |
| | | // æ¥çå½åæ¶é´æ¯å¦å¨ç次æ¶é´å
|
| | | if (now.isAfter(startTime)) { |
| | | // 妿æ¯å¨ç»ææ¶é´ä¹åé£ä¹å°±æ¯æ£å¸¸ä¸ç |
| | | isWithinRange = true; |
| | | isCross = false; |
| | | } else { |
| | | // å½åæ¶é´ä¸å¨ç次å
ï¼æ¥çæ¨å¤©ççæ¬¡ |
| | | LocalDateTime yesterday = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MIDNIGHT); |
| | | PerformanceShift yesterdayShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery() |
| | | .eq(PerformanceShift::getUserId, userId) |
| | | .eq(PerformanceShift::getWorkTime, yesterday)); |
| | | ShiftTime yesterdayShiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, yesterdayShift.getShift())); |
| | | // 妿æ¨å¤©ççæ¬¡ä¸ä¸ºç©ºï¼é£ä¹å°±è¦çæ¨å¤©ççæ¬¡æ¶é´ |
| | | if (!Objects.isNull(yesterdayShiftTime)) { |
| | | LocalTime yesterdayStartTime = LocalTime.parse(yesterdayShiftTime.getStartTime(), forma); |
| | | LocalTime yesterdayEndTime = LocalTime.parse(yesterdayShiftTime.getEndTime(), forma); |
| | | // æ¨å¤©ççæ¬¡æ¯å¦è·¨å¤© |
| | | if (yesterdayStartTime.isAfter(yesterdayEndTime)) { |
| | | // 妿æ¨å¤©ççæ¬¡è·¨å¤©äºï¼é£ä¹å°±è¦çä»å¤©æ¯å¦å¨æ¨å¤©ççæ¬¡å
ï¼å¹¶ä¸åªè½æ¯å¨ç»ææ¶é´ä¹åï¼å·²ç»å®ç°äºè·¨å¤© |
| | | if (now.isBefore(yesterdayEndTime)) { |
| | | // 卿¨å¤©ç次æ¶é´å
æ£å¸¸ä¸çï¼å·¥æ¶è®¡ç®å°æ¨å¤© |
| | | isWithinRange = true; |
| | | isCross = true; |
| | | } else { |
| | | // ä¸å¨æ¨å¤©ç次æ¶é´å
å°±æ¯å çï¼å·¥æ¶è®¡ç®å°æ¨å¤© |
| | | isWithinRange = false; |
| | | isCross = true; |
| | | } |
| | | } else { |
| | | // æ¨å¤©ççæ¬¡æ²¡æè·¨å¤© 妿å½åæ¶é´å¨ä»å¤©ç次å¼å§æ¶é´ä¹åå°±æ¯æ¨å¤©çå çï¼å¦åå°±æ¯ä»å¤©çå ç |
| | | if (now.isBefore(startTime)) { |
| | | isWithinRange = false; |
| | | isCross = true; |
| | | } else { |
| | | isWithinRange = false; |
| | | isCross = false; |
| | | } |
| | | } |
| | | } else { |
| | | isWithinRange = false; |
| | | // 妿æ¯å¨å¼å§æ¶é´ä¹åé£ä¹å°±è¦ç®å°æ¨å¤© |
| | | if (now.isBefore(startTime)) { |
| | | isCross = true; |
| | | } else { |
| | | isCross = false; |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | // å½åçæ¬¡ä¸è·¨å¤©çæ
åµä¸ |
| | | // 妿å½åæ¶é´å¨å¼å§æ¶é´ä¹åï¼æ¥æ¨å¤©ççæ¬¡çå½åæ¶é´æ¯å¦å¨æ¨å¤©ççæ¬¡å
|
| | | if (now.isBefore(startTime)) { |
| | | // æ¥çæ¨å¤©æ¯å¦è·¨å¤© |
| | | LocalDateTime yesterday = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MIDNIGHT); |
| | | PerformanceShift yesterdayShift = performanceShiftMapper.selectOne(Wrappers.<PerformanceShift>lambdaQuery() |
| | | .eq(PerformanceShift::getUserId, userId) |
| | | .eq(PerformanceShift::getWorkTime, yesterday)); |
| | | ShiftTime yesterdayShiftTime = shiftTimeMapper.selectOne(Wrappers.<ShiftTime>lambdaQuery().eq(ShiftTime::getShift, yesterdayShift.getShift())); |
| | | LocalTime yesterdayStartTime = LocalTime.parse(yesterdayShiftTime.getStartTime(), forma); |
| | | LocalTime yesterdayEndTime = LocalTime.parse(yesterdayShiftTime.getEndTime(), forma); |
| | | if (yesterdayStartTime.isAfter(yesterdayEndTime)) { |
| | | // 妿æ¨å¤©è·¨å¤© |
| | | if (now.isBefore(yesterdayEndTime)) { |
| | | // 卿¨å¤©ççæ¬¡æ¶é´å
æ£å¸¸ä¸çï¼å·¥æ¶è®¡ç®å°æ¨å¤© |
| | | isWithinRange = true; |
| | | isCross = true; |
| | | } else { |
| | | // ä¸å¨æ¨å¤©ç次æ¶é´å
å°±æ¯å çï¼å·¥æ¶è®¡ç®å°æ¨å¤© |
| | | isWithinRange = false; |
| | | isCross = true; |
| | | } |
| | | } else { |
| | | // æ¨å¤©ä¸è·¨å¤© |
| | | isWithinRange = false; |
| | | isCross = true; |
| | | } |
| | | } else if (now.isAfter(endTime)) { |
| | | // 妿å½åæ¶é´å¨ç»ææ¶é´ä¹åï¼é£ä¹å°±æ¯ä»å¤©çå ç |
| | | isWithinRange = false; |
| | | isCross = false; |
| | | } else { |
| | | // æ£å¸¸ä¸ç |
| | | isWithinRange = true; |
| | | isCross = false; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | map.put("isWithinRange",isWithinRange); |
| | | map.put("isCross",isCross); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 精度é®é¢ |
| | | */ |
| | | public double accuracy(BigDecimal manHour, int count){ |
| | | return manHour.multiply(BigDecimal.valueOf(count)).setScale(4, RoundingMode.HALF_UP).doubleValue(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |