From 8246ec51e9cf0fdb37a76bc62cac4ac2b3ffc893 Mon Sep 17 00:00:00 2001 From: lxp <1928192722@qq.com> Date: 星期五, 14 三月 2025 14:49:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- cnas-require/src/main/java/com/ruoyi/require/service/impl/PkMasterServiceImpl.java | 814 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 814 insertions(+), 0 deletions(-) diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/PkMasterServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/PkMasterServiceImpl.java new file mode 100644 index 0000000..9047411 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/PkMasterServiceImpl.java @@ -0,0 +1,814 @@ +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()); + } + //鏌ヨ瀵瑰簲妫�楠屾牱鍝乮d + 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 濡傛灉娓╁害寰幆鐨勯」鐩畁m鏈夋敼鍔ㄨ繖閲岄渶瑕佹敼鍔� @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());//妫�楠岄」鐩甶d + 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"); // 鏄惁姝e父涓婄彮 + 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) { + // 姝e父涓婄彮 + 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) { + // 姝e父涓婄彮 + + 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) { + // 姝e父涓婄彮 + // 鎷垮埌鍘熸湰鐨勬暟閲� 涓� 鏂扮殑鏁伴噺鐩稿姞 + 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()); + } + //鏌ヨ瀵瑰簲妫�楠屾牱鍝乮d + 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)) { + // 濡傛灉鏄湪缁撴潫鏃堕棿涔嬪悗閭d箞灏辨槸姝e父涓婄彮 + 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)) { + // 鍦ㄦ槰澶╃彮娆℃椂闂村唴姝e父涓婄彮锛屽伐鏃惰绠楀埌鏄ㄥぉ + 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)) { + // 濡傛灉褰撳墠鏃堕棿鍦ㄧ粨鏉熸椂闂翠箣鍚庯紝閭d箞灏辨槸浠婂ぉ鐨勫姞鐝� + isWithinRange = false; + isCross = false; + } else { + // 姝e父涓婄彮 + 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(); + } + +} + + -- Gitblit v1.9.3