From 9733594dd881627b4c00665e6f9bfbf08c1cacec Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期一, 17 二月 2025 17:49:29 +0800
Subject: [PATCH] 业务管理移植
---
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java | 1708 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 847 insertions(+), 861 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
index 4c81840..1faaee4 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -1,861 +1,847 @@
-package com.ruoyi.inspect.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.ExcelWriter;
-import com.alibaba.excel.write.metadata.WriteSheet;
-import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.dto.FactoryDto;
-import com.ruoyi.basic.dto.LaboratoryDto;
-import com.ruoyi.inspect.dto.RawMaterialStandardTreeDto;
-import com.ruoyi.basic.dto.SampleTypeDto;
-import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
-import com.ruoyi.basic.mapper.StandardTreeMapper;
-import com.ruoyi.inspect.pojo.InsOrder;
-import com.ruoyi.inspect.service.InsOrderService;
-import com.ruoyi.inspect.service.RawMaterialOrderService;
-import com.ruoyi.common.numgen.NumberGenerator;
-import com.ruoyi.framework.exception.ErrorException;
-import com.ruoyi.system.mapper.UserMapper;
-import lombok.AllArgsConstructor;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.math.BigDecimal;
-import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * @Author zhuo
- * @Date 2024/7/31
- */
-@Service
-@AllArgsConstructor
-public class RawMaterialOrderServiceImpl implements RawMaterialOrderService {
-
- private StandardTreeMapper standardTreeMapper;
- private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
- private GetLook getLook;
- private UserMapper userMapper;
- private InsOrderService insOrderService;
- private InsOrderMapper insOrderMapper;
- private InsSampleMapper insSampleMapper;
- private final NumberGenerator<InsOrder> numberGenerator;
- private InsReportService insReportService;
- private WechatProperty wechatProperty;
- private ThreadPoolTaskExecutor threadPoolTaskExecutor;
- private InsProductMapper insProductMapper;
- private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
-
-
- @Override
- public RawMaterialStandardTreeDto selectStandardTreeListByPartNo(String partNo) {
- if (StringUtils.isBlank(partNo)) {
- throw new ErrorException("闆朵欢鍙蜂涪澶�");
- }
- List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeListByPartNo(partNo);
- if (CollectionUtil.isEmpty(factoryDtos)) {
- throw new ErrorException("闆朵欢鍙蜂负" + partNo + "鐨勫師鏉愭枡娌℃湁瀵瑰簲鐨勬爣鍑嗗簱閰嶇疆");
- }
- RawMaterialStandardTreeDto rawMaterialStandardTreeDto = new RawMaterialStandardTreeDto();
- for (FactoryDto factoryDto : factoryDtos) {
- for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
- for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
- if (sampleTypeDto.getChildren().size() == 0) {
- sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
- }
- // 鍒ゆ柇缁戝畾鐨勬槸鍚︽槸褰撳墠闆朵欢鍙�
- if (sampleTypeDto.getPartNo() != null && sampleTypeDto.getPartNo().equals(partNo)) {
- // 娣诲姞瀵硅薄
- rawMaterialStandardTreeDto.setTreeName(factoryDto.getValue() + "-"
- + laboratoryDto.getValue() + "-"
- + sampleTypeDto.getValue());
- rawMaterialStandardTreeDto.setCode(sampleTypeDto.getCode());
- rawMaterialStandardTreeDto.setLabel(sampleTypeDto.getLabel());
- rawMaterialStandardTreeDto.setValue(sampleTypeDto.getValue());
- rawMaterialStandardTreeDto.setChildren1(sampleTypeDto.getChildren());
- } else {
- for (SampleDto sampleDto : sampleTypeDto.getChildren()) {
- if (sampleDto.getPartNo() != null && sampleDto.getPartNo().equals(partNo)) {
- // 娣诲姞瀵硅薄
- rawMaterialStandardTreeDto.setTreeName(factoryDto.getValue() + "-"
- + laboratoryDto.getValue() + "-"
- + sampleTypeDto.getValue() + "-"
- + sampleDto.getValue());
- rawMaterialStandardTreeDto.setCode(sampleDto.getCode());
- rawMaterialStandardTreeDto.setLabel(sampleDto.getLabel());
- rawMaterialStandardTreeDto.setValue(sampleDto.getValue());
- rawMaterialStandardTreeDto.setChildren2(sampleDto.getChildren());
- }
- }
- }
- }
- }
- }
- return rawMaterialStandardTreeDto;
- }
-
- @Override
- public Map<String, Object> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
- Map<String, Object> map = new HashMap<>();
- map.put("head", PrintChina.printChina(IfsInventoryQuantity.class));
- map.put("body", standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity)));
- return map;
- }
-
- @Override
- public Map<String, Object> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) {
- Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("getIfsByStateOne");
- if (map1.get("look") == 1) {
- //涓汉
- ifsInventoryQuantityDto.setCreateUser(map1.get("userId"));
- }
- Map<String, Object> map = new HashMap<>();
-// ifsInventoryQuantityDto.setOrderState(null);
- map.put("head", PrintChina.printChina(IfsInventoryQuantityDto.class));
- map.put("body", standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto)));
- return map;
- }
-
-
- /**
- * 鎶ユ
- * @param ids
- * @return
- */
- @Override
- public int inspectionReport(List<Integer> ids) {
- Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
- ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
- .in(IfsInventoryQuantity::getId, ids)
- .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
- .set(IfsInventoryQuantity::getDeclareUserId, userId)
- .set(IfsInventoryQuantity::getIsInspect, 1)
- .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
- );
- threadPoolTaskExecutor.execute(() -> {
- List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
- .in(IfsInventoryQuantity::getId, ids));
- // 浼佷笟寰俊閫氱煡
- String message = "";
- message += "鏂板鎶ユ閫氱煡";
- for (IfsInventoryQuantity inventoryQuantity : quantityList) {
- message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
- message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
- message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
-
- // 鍒ゆ柇鏈夋病鏈夊埌20鍚�. 鎴栬�呰兘鍚﹀厤妫�
- int result = notificationRawOrder(inventoryQuantity.getId());
- switch (result) {
- case 1:
- message += "\n褰撳墠鏍峰搧宸叉楠岃繃, 鍙互鍏嶆";
- break;
- case 2:
- message += "\n褰撳墠鏍峰搧宸茶秴杩�20鍚�";
- break;
- }
- message += "\n";
- }
- WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
- });
- return 1;
- }
-
- /**
- * 鎾ら攢鎶ユ
- * @param id
- * @return
- */
- @Override
- public int revokeInspectionReport(Integer id) {
- return ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
- .eq(IfsInventoryQuantity::getId, id)
- .set(IfsInventoryQuantity::getIsInspect, 0)
- );
- }
-
- /**
- * 鎵撳嵃鏍囩鏌ヨ
- * @param ids
- * @return
- */
- @Override
- public List<IfsInventoryQuantityDto> printLabel(List<Integer> ids) {
- return ifsInventoryQuantityMapper.printLabel(ids);
- }
-
- /**
- * 鎶ユ
- * @param ifsInventoryQuantity
- * @return
- */
- @Override
- public int inspectionReportOne(IfsInventoryQuantity ifsInventoryQuantity) {
- Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
- ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
- .eq(IfsInventoryQuantity::getId, ifsInventoryQuantity.getId())
- .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
- .set(IfsInventoryQuantity::getDeclareUserId, userId)
- .set(IfsInventoryQuantity::getIsInspect, 1)
- .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
- .set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
- );
-
- threadPoolTaskExecutor.execute(() -> {
- IfsInventoryQuantity inventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryQuantity.getId());
- // 浼佷笟寰俊閫氱煡
- String message = "";
- message += "鏂板鎶ユ閫氱煡";
- message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
- message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
- message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
- WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
- });
- return 1;
- }
-
- /**
- * 鑾峰彇閾滀骇涓氶摼妫�娴嬫暟鎹�
- * @param id
- * @return
- */
- @Override
- public String getIndustryChain(Integer id) {
- return ifsInventoryQuantityMapper.selectById(id).getIndustryChain();
- }
-
- /**
- * 鍘熸潗鏂欐挙閿�鎺ュ彛
- * @param ifsInventoryId
- * @return
- */
- @Override
- public boolean repealRawOrder(Integer ifsInventoryId) {
- // 鏌ヨ鍒ゆ柇鏄惁鏄摐鍗曚笣
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- if (ifsInventoryQuantity.getIsCopper() != null && ifsInventoryQuantity.getIsCopper().equals(1)) {
- // 閾滃崟涓濈洿鎺ュ垹闄ゅ氨琛�
- ifsInventoryQuantityMapper.deleteById(ifsInventoryId);
- } else {
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getState, 0)
- .set(IfsInventoryQuantity::getIsQuarter, 1)
- .eq(IfsInventoryQuantity::getId, ifsInventoryId));
- }
-
- insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
- .eq(InsOrder::getIfsInventoryId, ifsInventoryId)
- .set(InsOrder::getState, -1)
- .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
- return true;
- }
-
- /**
- * 鍘熸潗鏂欏厤妫�涓嬪崟
- * @param list
- * @param insOrder
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int addExemptionOrder(List<SampleProductDto> list, InsOrder insOrder) {
- if (!insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
- throw new ErrorException("鍙湁杩涘巶妫�楠屾墠鑳藉厤妫�");
- }
- insOrder.setSendTime(LocalDateTime.now());
- // 淇敼璁㈠崟琛ㄧ洿鎺ヤ负宸叉楠�
- insOrder.setState(4);
- insOrder.setTypeSource(1);
-
- String code = "Y";
- // 鐢熸垚缂栧彿
- String no = numberGenerator.generateNumberWithPrefix(3,
- "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
- InsOrder::getEntrustCode);
-
- insOrderMapper.insert(insOrder); // 涓昏〃
-
- AtomicInteger count = new AtomicInteger();
- list.forEach(a -> {
- count.getAndIncrement();
- a.setId(null);
- a.setInsOrderId(insOrder.getId());
- if (StrUtil.isEmpty(a.getSampleCode())) {
- // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
- if (list.size() != 1) {
- a.setSampleCode(no + "-" + count.get());
- } else {
- a.setSampleCode(no);
- }
- }
- insSampleMapper.insert(a);
-
- if (!CollectionUtil.isEmpty(a.getInsProduct())) {
- throw new ErrorException("鍏嶆涓嶉渶瑕佸~鍐欐楠岄」");
- }
- });
-
- // 鍘熸潗鏂欎笅鍗�: 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
- Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
- User user = userMapper.selectById(declareUserId);
- // 渚涘簲鍟嗗悕绉�
- insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
- // 濮旀墭浜哄悕绉�
- insOrder.setPrepareUser(user.getName());
- insOrder.setPhone(user.getPhone());
-
- // 淇敼鍘熸潗鏂欐暟鎹洿鎺ヤ负宸叉楠�
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>().set(IfsInventoryQuantity::getState, 2)
- .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()));
-
- insOrder.setExamineTime(LocalDateTime.now());
-
- insOrder.setEntrustCode(no);
- insOrder.setIsExemption(1);
-
- insOrderMapper.updateById(insOrder);
-
- // 娣诲姞宸ユ椂
- addAuxiliary(insOrder, ifsInventoryQuantity);
-
- // todo: ifs鐩存帴绉诲簱
- insReportService.isRawMaterial(insOrder);
-
- return insOrder.getId();
- }
-
-
- /**
- * 鏌ヨ寰呬笅鍗�
- * @param page
- * @param ifsInventoryQuantity
- * @return
- */
- @Override
- public Map<String, Object> selectIfsInventoryQuantity(Page<IfsInventoryQuantityCheckDto> page, IfsInventoryQuantityCheckDto ifsInventoryQuantity) {
- Map<String, Object> map = new HashMap<>();
- map.put("head", PrintChina.printChina(IfsInventoryQuantityCheckDto.class));
- map.put("body", standardTreeMapper.selectIfsInventoryQuantity(page, QueryWrappers.queryWrappers(ifsInventoryQuantity)));
- return map;
- }
-
- /**
- * 鏌ヨ宸叉楠�
- * @param page
- * @param ifsInventoryQuantityDto
- * @return
- */
- @Override
- public Map<String, Object> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
- Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("getIfsByStateOne");
- if (map1.get("look") == 1) {
- //涓汉
- ifsInventoryQuantityDto.setCreateUser(map1.get("userId"));
- }
- String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
- String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
- ifsInventoryQuantityDto.setBeginDeclareDate(null);
- ifsInventoryQuantityDto.setEndDeclareDate(null);
-
- Map<String, Object> map = new HashMap<>();
- map.put("head", PrintChina.printChina(IfsInventoryQuantitySupplierDto.class));
- map.put("body", standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate));
- return map;
- }
-
- /**
- * 鍒犻櫎鍘熸潗鏂欐姤妫�淇℃伅
- * @param id
- * @return
- */
- @Override
- public int delIfsInventory(Integer id) {
- return ifsInventoryQuantityMapper.deleteById(id);
- }
-
- /**
- * 鍘熸潗鏂欐斁琛屽厤妫�
- * @param ifsInventoryId
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean rawOrderRelease(Integer ifsInventoryId, String partDetail) {
- // 淇敼鍘熸潗鏂欐暟鎹洿鎺ヤ负宸叉楠�
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getState, 2)
- .set(IfsInventoryQuantity::getIsQuarter, 0)
- .eq(IfsInventoryQuantity::getId, ifsInventoryId));
-
- // 鏌ヨ鍘熸潗鏂欎俊鎭�
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- // 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
- Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
- User user = userMapper.selectById(declareUserId);
-
- InsOrder insOrder = new InsOrder();
- insOrder.setState(4);
- insOrder.setTypeSource(1);
- String code = "Y";
- // 鐢熸垚缂栧彿
- String no = numberGenerator.generateNumberWithPrefix(3,
- "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
- InsOrder::getEntrustCode);
- insOrder.setExamineTime(LocalDateTime.now());
- insOrder.setEntrustCode(no);
- insOrder.setIsExemption(1);
- // 渚涘簲鍟嗗悕绉�
- insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
- // 濮旀墭浜哄悕绉�
- insOrder.setPrepareUser(user.getName());
- insOrder.setPhone(user.getPhone());
- insOrder.setIfsInventoryId(ifsInventoryId);
- insOrder.setPartDetail(partDetail);
- insOrder.setSendTime(LocalDateTime.now());
- insOrder.setSample(ifsInventoryQuantity.getPartDesc());
- // 杩涘巶妫�楠�
- insOrder.setOrderType(InsOrderTypeConstants.ENTER_THE_FACTORY);
-
- insOrderMapper.insert(insOrder);
-
- // 娣诲姞宸ユ椂
- addAuxiliary(insOrder, ifsInventoryQuantity);
-
- // todo: ifs鐩存帴绉诲簱
- insReportService.isRawMaterial(insOrder);
- return true;
- }
-
- /**
- * 0, 鏃犳彁绀�, 1鎻愮ず 褰撳墠鎵规鐨勬牱鍝佸凡妫�楠岃繃, 鍙互鍏嶆, 2 鎻愮ず 褰撳墠鎵规鐨勬牱鍝佸凡瓒�20鍚�, 闇�瑕佸绾у娆℃楠�
- *
- * 鍘熸潗鏂欎笅鍗曢�氱煡鍏嶆鎴栬�呭娆℃楠�
- * @param ifsInventoryId
- * @return
- */
- @Override
- public int notificationRawOrder(Integer ifsInventoryId) {
- IfsInventoryQuantity ifsInventory = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- // 鏌ヨ褰撳墠鎵规, 渚涘簲鍟�, 闆朵欢鍙风殑鍘熸潗鏂欐槸鍚﹁秴杩囦簡20鍚�, 瓒呰繃浜�20鍚ㄩ渶瑕佽繘琛屽娆℃楠屾彁閱�
- List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
- .eq(IfsInventoryQuantity::getPartNo, ifsInventory.getPartNo())
- .eq(IfsInventoryQuantity::getUpdateBatchNo, ifsInventory.getUpdateBatchNo())
- .eq(IfsInventoryQuantity::getSupplierId, ifsInventory.getSupplierId())
- .eq(IfsInventoryQuantity::getSupplierName, ifsInventory.getSupplierName()));
-
- // 鍒ゆ柇鏄惁澶т簬20鍚�
- BigDecimal bigDecimal = new BigDecimal("20000");
- BigDecimal count = BigDecimal.ZERO;
- for (IfsInventoryQuantity inventoryQuantity : quantityList) {
- // 鍒ゆ柇鍗曚綅鏄痥g鎴栬�卼
- if (inventoryQuantity.getBuyUnitMeas().equalsIgnoreCase("t")) {
- count = count.add(inventoryQuantity.getQtyArrived().multiply(new BigDecimal("1000")));
- } else if (inventoryQuantity.getBuyUnitMeas().equalsIgnoreCase("kg")) {
- count = count.add(inventoryQuantity.getQtyArrived());
- }
- }
-
- if (count.compareTo(bigDecimal) >= 0) {
- return 2;
- } else {
- // 鍒ゆ柇涔嬪墠鏄惁鍑鸿繃鎶ュ憡, 鍑鸿繃鎶ュ憡鍙互鍏嶆
- int reportCount = ifsInventoryQuantityMapper.selectReportCountById(ifsInventoryId);
- if (reportCount > 0) {
- return 1;
- }
- }
- return 0;
- }
-
- /**
- * 鎶ユ鍙互鏂板鎶ユ淇℃伅
- * @param ifsInventoryQuantity
- */
- @Override
- public void addIfsInventoryQuantity(IfsInventoryQuantity ifsInventoryQuantity) {
- ifsInventoryQuantity.setIsSource(0);
- ifsInventoryQuantity.setState(0);
- ifsInventoryQuantity.setIsFinish(0);
- ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
- }
-
- @Override
- public void shiftingParking(List<Integer> ids) {
- for (Integer id : ids) {
- InsOrder order = insOrderService.getById(id);
- // todo: ifs鐩存帴绉诲簱
- insReportService.isRawMaterial(order);
- }
- }
-
- /**
- * 閾滃崟涓濅笅鍗曞厤妫�
- * @param list
- * @param insOrder
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int addRawCopperOrderExemptionOrder(List<SampleProductDto> list, CopperInsOrderDto insOrder) {
- if (!insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
- throw new ErrorException("鍙湁杩涘巶妫�楠屾墠鑳藉厤妫�");
- }
- insOrder.setSendTime(LocalDateTime.now());
- // 淇敼璁㈠崟琛ㄧ洿鎺ヤ负宸叉楠�
- insOrder.setState(4);
- insOrder.setTypeSource(1);
-
- String code = "Y";
- // 鐢熸垚缂栧彿
- String no = numberGenerator.generateNumberWithPrefix(3,
- "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
- InsOrder::getEntrustCode);
-
- insOrderMapper.insert(insOrder); // 涓昏〃
-
- AtomicInteger count = new AtomicInteger();
- list.forEach(a -> {
- count.getAndIncrement();
- a.setId(null);
- a.setInsOrderId(insOrder.getId());
- if (StrUtil.isEmpty(a.getSampleCode())) {
- // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
- if (list.size() != 1) {
- a.setSampleCode(no + "-" + count.get());
- } else {
- a.setSampleCode(no);
- }
- }
- insSampleMapper.insert(a);
-
- if (!CollectionUtil.isEmpty(a.getInsProduct())) {
- throw new ErrorException("鍏嶆涓嶉渶瑕佸~鍐欐楠岄」");
- }
- });
- // 娣诲姞鍘熸潗鏂欎俊鎭�
- IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
- // 鍩烘湰淇℃伅
- ifsInventoryQuantity.setIsSource(0);
- ifsInventoryQuantity.setState(2);
- ifsInventoryQuantity.setIsInspect(1);
- ifsInventoryQuantity.setIsFinish(1);
- ifsInventoryQuantity.setIsCopper(1);
- ifsInventoryQuantity.setInspectStatus(1);
- ifsInventoryQuantity.setIsQuarter(0);
-
- ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
- ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
- ifsInventoryQuantity.setSupplierName(insOrder.getSupplierName());
- ifsInventoryQuantity.setUpdateBatchNo(insOrder.getUpdateBatchNo());
- ifsInventoryQuantity.setDeclareDate(insOrder.getDeclareDate());
-
- ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
-
- insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
- insOrder.setExamineTime(LocalDateTime.now());
-
- insOrder.setEntrustCode(no);
- insOrder.setIsExemption(1);
-
- insOrderMapper.updateById(insOrder);
-
- // 娣诲姞宸ユ椂
- addAuxiliary(insOrder, ifsInventoryQuantity);
-
- return insOrder.getId();
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean concessionRelease(Integer ifsInventoryId) {
- // 鏌ヨ鍘熸潗鏂欎俊鎭�
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- if (!ifsInventoryQuantity.getInspectStatus().equals(2)) {
- throw new ErrorException("涓嶅悎鏍肩殑鍘熸潗鏂欐墠鑳借姝ユ斁琛�");
- }
-
- // todo:闇�瑕佸垽鏂璷a娴佺▼鏄惁鏄姝ユ斁琛�
- String toLocation = insReportService.moveRawMaterial(ifsInventoryQuantity);
-
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getInspectStatus, 4)
- .set(IfsInventoryQuantity::getToLocation, toLocation)
- .eq(IfsInventoryQuantity::getId, ifsInventoryId));
-
- return true;
- }
-
- /**
- * 鍘熸潗鏂欒繘鍘傛挙閿�涓嬪崟
- * @param enterOrderId
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean repealEnterRawOrder(Integer enterOrderId) {
- // 鏌ヨ璁㈠崟
- InsOrder order = insOrderMapper.selectById(enterOrderId);
-
- // 鏌ヨ鍒ゆ柇鏄惁鏄摐鍗曚笣
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
- if (ifsInventoryQuantity.getIsCopper() != null && ifsInventoryQuantity.getIsCopper().equals(1)) {
- // 閾滃崟涓濈洿鎺ュ垹闄ゅ氨琛�
- ifsInventoryQuantityMapper.deleteById(order.getIfsInventoryId());
- } else {
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getState, 0)
- .set(IfsInventoryQuantity::getIsQuarter, 1)
- .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
- }
- insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
- .eq(InsOrder::getId, enterOrderId)
- .set(InsOrder::getState, -1)
- .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
-
- // 娓呴櫎涔嬪墠鐨勫伐鏃�
- auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
- .eq(AuxiliaryOutputWorkingHours::getOrderId, enterOrderId));
-
- // 娓呴櫎涔嬪墠鎶ュ憡
- insReportService.remove(Wrappers.<InsReport>lambdaQuery()
- .eq(InsReport::getInsOrderId, enterOrderId));
-
- return true;
- }
-
- /**
- * 鍘熸潗鏂欏搴︽挙閿�涓嬪崟
- * @param quarterOrderId
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean repealQuarterRawOrder(Integer quarterOrderId) {
- // 鏌ヨ璁㈠崟
- InsOrder order = insOrderMapper.selectById(quarterOrderId);
-
- Long count = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
- .eq(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
- .ne(InsOrder::getState, -1)
- .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY)
- .ne(InsOrder::getId, order.getId()));
- // 鍒ゆ柇涔嬪墠鏄惁鏈夎繘鍘傛楠�, 娌℃湁闇�瑕佷慨鏀瑰師鏉愭枡淇℃伅
- if (count == 0) {
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getState, 0)
- .set(IfsInventoryQuantity::getIsQuarter, 1)
- .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
- } else {
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getIsQuarter, 1)
- .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
- }
-
- insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
- .eq(InsOrder::getId, quarterOrderId)
- .set(InsOrder::getState, -1)
- .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
- auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
- .eq(AuxiliaryOutputWorkingHours::getOrderId, quarterOrderId));
- // 娓呴櫎涔嬪墠鎶ュ憡
- insReportService.remove(Wrappers.<InsReport>lambdaQuery()
- .eq(InsReport::getInsOrderId, quarterOrderId));
- return true;
- }
-
- /**
- * 鍘熸潗鏂欐姤妫�鍏ㄩ儴淇℃伅瀵煎嚭
- * @param ifsInventoryQuantityDto
- * @param response
- */
- @Override
- public void rawAllExport(IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto, HttpServletResponse response) throws UnsupportedEncodingException {
- //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
- String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
- String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
- ifsInventoryQuantityDto.setBeginDeclareDate(null);
- ifsInventoryQuantityDto.setEndDeclareDate(null);
- List<IfsInventoryQuantitySupplierDto> ifsByOverList = standardTreeMapper.getIfsByOverList(QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
-
- for (IfsInventoryQuantitySupplierDto dto : ifsByOverList) {
- dto.setSendTimeString(dto.getSendTime() == null ? "" : dto.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- dto.setReceiverDateString(dto.getReceiverDate() == null ? "" : dto.getReceiverDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- dto.setDeclareDateString(dto.getDeclareDate() == null ? "" : dto.getDeclareDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- switch (dto.getInspectStatus()) {
- case 1:
- dto.setInspectStatusString("鍚堟牸");
- break;
- case 2:
- dto.setInspectStatusString("涓嶅悎鏍�");
- // 鏌ヨ涓嶅悎鏍奸」
- List<String> unqualifiedList = insProductMapper.selectUnqualifiedList(dto.getEnterOrderId() == null ? dto.getQuarterOrderId() : dto.getEnterOrderId());
- dto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ","));
- break;
- case 3:
- dto.setInspectStatusString("鏈笅鍗�");
- break;
- case 4:
- dto.setInspectStatusString("璁╂鏀捐");
- break;
- case 0:
- dto.setInspectStatusString("妫�楠屼腑");
- break;
-
- }
- }
-
-
- response.setContentType("application/vnd.ms-excel");
- response.setCharacterEncoding("UTF-8");
- // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
- String fileName = URLEncoder.encode("鍘熸潗鏂欐娴嬩俊鎭鍑�", "UTF-8");
- response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
- try {
- //鏂板缓ExcelWriter
- ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
- //鑾峰彇sheet0瀵硅薄
- WriteSheet mainSheet = EasyExcel.writerSheet(0, "鍘熸潗鏂欐娴嬩俊鎭鍑�").head(IfsInventoryQuantitySupplierDto.class).build();
-
- //鍚憇heet0鍐欏叆鏁版嵁 浼犲叆绌簂ist杩欐牱鍙鍑鸿〃澶�
- excelWriter.write(ifsByOverList, mainSheet);
- //鍏抽棴娴�
- excelWriter.finish();
- } catch (IOException e) {
- throw new RuntimeException("瀵煎嚭澶辫触");
- }
- }
-
- /**
- * 鍘熸潗鏂欐煡璇㈠彲浠ュ搴︽楠岀殑鍐呭
- * @param page
- * @param ifsInventoryQuantityDto
- * @return
- */
- @Override
- public Map<String, Object> getIfsByQuarter(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
- Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("getIfsByStateOne");
- if (map1.get("look") == 1) {
- //涓汉
- ifsInventoryQuantityDto.setCreateUser(map1.get("userId"));
- }
- String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
- String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
- ifsInventoryQuantityDto.setBeginDeclareDate(null);
- ifsInventoryQuantityDto.setEndDeclareDate(null);
-
- Map<String, Object> map = new HashMap<>();
- map.put("head", PrintChina.printChina(IfsInventoryQuantitySupplierDto.class));
- map.put("body", standardTreeMapper.getIfsByQuarter(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate));
- return map;
- }
-
- /**
- * 鎻愬墠鍏ュ簱
- * @param ifsInventoryId
- * @return
- */
- @Override
- public boolean advancedGodown(Integer ifsInventoryId) {
- // 鏌ヨ鍘熸潗鏂欎俊鎭�
- IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
- if (!ifsInventoryQuantity.getInspectStatus().equals(0)
- && !ifsInventoryQuantity.getInspectStatus().equals(3)) {
- throw new ErrorException("鏈娴嬪畬鎴愭暟鎹墠鑳芥彁鍓嶅叆搴�");
- }
-
- // todo:闇�瑕佸垽鏂璷a娴佺▼鏄惁鏄姝ユ斁琛�
- String toLocation = insReportService.moveRawMaterial(ifsInventoryQuantity);
-
- ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
- .set(IfsInventoryQuantity::getInspectStatus, 1)
- .set(IfsInventoryQuantity::getIsFinish, 1)
- .set(IfsInventoryQuantity::getToLocation, toLocation)
- .eq(IfsInventoryQuantity::getId, ifsInventoryId));
-
- return true;
- }
-
-
- /**
- * 娣诲姞宸ユ椂
- * @param insOrder
- * @param ifsInventoryQuantity
- */
- private void addAuxiliary(InsOrder insOrder, IfsInventoryQuantity ifsInventoryQuantity) {
- AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
- auxiliaryOutputWorkingHours.setInspectionItemClass(ifsInventoryQuantity.getUpdateBatchNo() + "鍏嶆");//妫�娴嬮」鍒嗙被
- auxiliaryOutputWorkingHours.setSample(insOrder.getEntrustCode());//鏍峰搧缂栧彿
- auxiliaryOutputWorkingHours.setOrderId(insOrder.getId());//璁㈠崟id
- auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
-
- // 鍏嶆榛樿2
- auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal("2"));//闈炲姞鐝伐鏃�
- auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
- auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : BigDecimal.ZERO));//浜ч噺宸ユ椂
- 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(getLook.selectPowerByMethodAndUserId(null).get("userId"));//妫�娴嬩汉
- auxiliaryOutputWorkingHours.setPrice(new BigDecimal("1"));//鍗曚环
-
- auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
- }
-
- public static String getWeek(String dayStr) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try {
- Date date = sdf.parse(dayStr);
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
- int day = calendar.get(Calendar.DAY_OF_MONTH);
- return getWeekDay(dayOfWeek);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public static String getWeekDay(int dayOfWeek) {
- switch (dayOfWeek) {
- case Calendar.MONDAY:
- return "鍛ㄤ竴";
- case Calendar.TUESDAY:
- return "鍛ㄤ簩";
- case Calendar.WEDNESDAY:
- return "鍛ㄤ笁";
- case Calendar.THURSDAY:
- return "鍛ㄥ洓";
- case Calendar.FRIDAY:
- return "鍛ㄤ簲";
- case Calendar.SATURDAY:
- return "鍛ㄥ叚";
- case Calendar.SUNDAY:
- return "鍛ㄦ棩";
- default:
- return "鏈煡";
- }
- }
-}
+//package com.ruoyi.inspect.service.impl;
+//
+//import cn.hutool.core.collection.CollUtil;
+//import cn.hutool.core.collection.CollectionUtil;
+//import cn.hutool.core.date.DateTime;
+//import cn.hutool.core.date.DateUtil;
+//import cn.hutool.core.util.StrUtil;
+//import com.alibaba.excel.EasyExcel;
+//import com.alibaba.excel.ExcelWriter;
+//import com.alibaba.excel.write.metadata.WriteSheet;
+//import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.ruoyi.basic.dto.*;
+//import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+//import com.ruoyi.common.constant.InsOrderTypeConstants;
+//import com.ruoyi.common.core.domain.entity.User;
+//import com.ruoyi.common.utils.LimsDateUtil;
+//import com.ruoyi.common.utils.QueryWrappers;
+//import com.ruoyi.common.utils.SecurityUtils;
+//import com.ruoyi.common.utils.WxCpUtils;
+//import com.ruoyi.framework.properties.WechatProperty;
+//import com.ruoyi.inspect.dto.CopperInsOrderDto;
+//import com.ruoyi.inspect.dto.RawMaterialStandardTreeDto;
+//import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
+//import com.ruoyi.basic.mapper.StandardTreeMapper;
+//import com.ruoyi.inspect.dto.SampleProductDto;
+//import com.ruoyi.inspect.mapper.InsOrderMapper;
+//import com.ruoyi.inspect.mapper.InsProductMapper;
+//import com.ruoyi.inspect.mapper.InsSampleMapper;
+//import com.ruoyi.inspect.pojo.InsOrder;
+//import com.ruoyi.inspect.pojo.InsReport;
+//import com.ruoyi.inspect.service.InsOrderService;
+//import com.ruoyi.inspect.service.InsReportService;
+//import com.ruoyi.inspect.service.RawMaterialOrderService;
+//import com.ruoyi.common.numgen.NumberGenerator;
+//import com.ruoyi.framework.exception.ErrorException;
+//import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
+//import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
+//import com.ruoyi.system.mapper.UserMapper;
+//import lombok.AllArgsConstructor;
+//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+//import org.springframework.stereotype.Service;
+//import org.springframework.transaction.annotation.Transactional;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//import java.io.UnsupportedEncodingException;
+//import java.math.BigDecimal;
+//import java.net.URLEncoder;
+//import java.text.SimpleDateFormat;
+//import java.time.LocalDateTime;
+//import java.time.format.DateTimeFormatter;
+//import java.util.*;
+//import java.util.concurrent.atomic.AtomicInteger;
+//
+///**
+// * @Author zhuo
+// * @Date 2024/7/31
+// */
+//@Service
+//@AllArgsConstructor
+//public class RawMaterialOrderServiceImpl implements RawMaterialOrderService {
+//
+// private StandardTreeMapper standardTreeMapper;
+// private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
+// private UserMapper userMapper;
+// private InsOrderService insOrderService;
+// private InsOrderMapper insOrderMapper;
+// private InsSampleMapper insSampleMapper;
+// private final NumberGenerator<InsOrder> numberGenerator;
+// private InsReportService insReportService;
+// private WechatProperty wechatProperty;
+// private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+// private InsProductMapper insProductMapper;
+// private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
+//
+//
+// @Override
+// public RawMaterialStandardTreeDto selectStandardTreeListByPartNo(String partNo) {
+// if (StringUtils.isBlank(partNo)) {
+// throw new ErrorException("闆朵欢鍙蜂涪澶�");
+// }
+// List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeListByPartNo(partNo);
+// if (CollectionUtil.isEmpty(factoryDtos)) {
+// throw new ErrorException("闆朵欢鍙蜂负" + partNo + "鐨勫師鏉愭枡娌℃湁瀵瑰簲鐨勬爣鍑嗗簱閰嶇疆");
+// }
+// RawMaterialStandardTreeDto rawMaterialStandardTreeDto = new RawMaterialStandardTreeDto();
+// for (FactoryDto factoryDto : factoryDtos) {
+// for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
+// for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
+// if (sampleTypeDto.getChildren().size() == 0) {
+// sampleTypeDto.setChildren(standardTreeMapper.getStandardTree3(sampleTypeDto.getValue()));
+// }
+// // 鍒ゆ柇缁戝畾鐨勬槸鍚︽槸褰撳墠闆朵欢鍙�
+// if (sampleTypeDto.getPartNo() != null && sampleTypeDto.getPartNo().equals(partNo)) {
+// // 娣诲姞瀵硅薄
+// rawMaterialStandardTreeDto.setTreeName(factoryDto.getValue() + "-"
+// + laboratoryDto.getValue() + "-"
+// + sampleTypeDto.getValue());
+// rawMaterialStandardTreeDto.setCode(sampleTypeDto.getCode());
+// rawMaterialStandardTreeDto.setLabel(sampleTypeDto.getLabel());
+// rawMaterialStandardTreeDto.setValue(sampleTypeDto.getValue());
+// rawMaterialStandardTreeDto.setChildren1(sampleTypeDto.getChildren());
+// } else {
+// for (SampleDto sampleDto : sampleTypeDto.getChildren()) {
+// if (sampleDto.getPartNo() != null && sampleDto.getPartNo().equals(partNo)) {
+// // 娣诲姞瀵硅薄
+// rawMaterialStandardTreeDto.setTreeName(factoryDto.getValue() + "-"
+// + laboratoryDto.getValue() + "-"
+// + sampleTypeDto.getValue() + "-"
+// + sampleDto.getValue());
+// rawMaterialStandardTreeDto.setCode(sampleDto.getCode());
+// rawMaterialStandardTreeDto.setLabel(sampleDto.getLabel());
+// rawMaterialStandardTreeDto.setValue(sampleDto.getValue());
+// rawMaterialStandardTreeDto.setChildren2(sampleDto.getChildren());
+// }
+// }
+// }
+// }
+// }
+// }
+// return rawMaterialStandardTreeDto;
+// }
+//
+// @Override
+// public IPage<IfsInventoryQuantity> getWarehouseSubmit(IPage<IfsInventoryQuantity> page, IfsInventoryQuantity ifsInventoryQuantity) {
+// return standardTreeMapper.selectIfsPage(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
+// }
+//
+// @Override
+// public IPage<IfsInventoryQuantityDto> getIfsByStateOne(IPage<IfsInventoryQuantityDto> page, IfsInventoryQuantityDto ifsInventoryQuantityDto) {
+// return standardTreeMapper.getIfsByStateOne(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto));
+// }
+//
+//
+// /**
+// * 鎶ユ
+// * @param ids
+// * @return
+// */
+// @Override
+// public int inspectionReport(List<Integer> ids) {
+// Integer userId = SecurityUtils.getUserId().intValue();
+// ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+// .in(IfsInventoryQuantity::getId, ids)
+// .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
+// .set(IfsInventoryQuantity::getDeclareUserId, userId)
+// .set(IfsInventoryQuantity::getIsInspect, 1)
+// .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
+// );
+// threadPoolTaskExecutor.execute(() -> {
+// List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+// .in(IfsInventoryQuantity::getId, ids));
+// // 浼佷笟寰俊閫氱煡
+// String message = "";
+// message += "鏂板鎶ユ閫氱煡";
+// for (IfsInventoryQuantity inventoryQuantity : quantityList) {
+// message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
+// message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
+// message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
+//
+// // 鍒ゆ柇鏈夋病鏈夊埌20鍚�. 鎴栬�呰兘鍚﹀厤妫�
+// int result = notificationRawOrder(inventoryQuantity.getId());
+// switch (result) {
+// case 1:
+// message += "\n褰撳墠鏍峰搧宸叉楠岃繃, 鍙互鍏嶆";
+// break;
+// case 2:
+// message += "\n褰撳墠鏍峰搧宸茶秴杩�20鍚�";
+// break;
+// }
+// message += "\n";
+// }
+// WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
+// });
+// return 1;
+// }
+//
+// /**
+// * 鎾ら攢鎶ユ
+// * @param id
+// * @return
+// */
+// @Override
+// public int revokeInspectionReport(Integer id) {
+// return ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+// .eq(IfsInventoryQuantity::getId, id)
+// .set(IfsInventoryQuantity::getIsInspect, 0)
+// );
+// }
+//
+// /**
+// * 鎵撳嵃鏍囩鏌ヨ
+// * @param ids
+// * @return
+// */
+// @Override
+// public List<IfsInventoryQuantityDto> printLabel(List<Integer> ids) {
+// return ifsInventoryQuantityMapper.printLabel(ids);
+// }
+//
+// /**
+// * 鎶ユ
+// * @param ifsInventoryQuantity
+// * @return
+// */
+// @Override
+// public int inspectionReportOne(IfsInventoryQuantity ifsInventoryQuantity) {
+// Integer userId = SecurityUtils.getUserId().intValue();
+// ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
+// .eq(IfsInventoryQuantity::getId, ifsInventoryQuantity.getId())
+// .set(IfsInventoryQuantity::getDeclareUser, userMapper.selectById(userId).getName())
+// .set(IfsInventoryQuantity::getDeclareUserId, userId)
+// .set(IfsInventoryQuantity::getIsInspect, 1)
+// .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
+// .set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
+// );
+//
+// threadPoolTaskExecutor.execute(() -> {
+// IfsInventoryQuantity inventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryQuantity.getId());
+// // 浼佷笟寰俊閫氱煡
+// String message = "";
+// message += "鏂板鎶ユ閫氱煡";
+// message += "\n鎵规鍙�: " + inventoryQuantity.getUpdateBatchNo();
+// message += "\n闆朵欢鎻忚堪: " + inventoryQuantity.getPartDesc();
+// message += "\n鎶佃揪鏁伴噺: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
+// WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
+// });
+// return 1;
+// }
+//
+// /**
+// * 鑾峰彇閾滀骇涓氶摼妫�娴嬫暟鎹�
+// * @param id
+// * @return
+// */
+// @Override
+// public String getIndustryChain(Integer id) {
+// return ifsInventoryQuantityMapper.selectById(id).getIndustryChain();
+// }
+//
+// /**
+// * 鍘熸潗鏂欐挙閿�鎺ュ彛
+// * @param ifsInventoryId
+// * @return
+// */
+// @Override
+// public boolean repealRawOrder(Integer ifsInventoryId) {
+// // 鏌ヨ鍒ゆ柇鏄惁鏄摐鍗曚笣
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+// if (ifsInventoryQuantity.getIsCopper() != null && ifsInventoryQuantity.getIsCopper().equals(1)) {
+// // 閾滃崟涓濈洿鎺ュ垹闄ゅ氨琛�
+// ifsInventoryQuantityMapper.deleteById(ifsInventoryId);
+// } else {
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getState, 0)
+// .set(IfsInventoryQuantity::getIsQuarter, 1)
+// .eq(IfsInventoryQuantity::getId, ifsInventoryId));
+// }
+//
+// insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
+// .eq(InsOrder::getIfsInventoryId, ifsInventoryId)
+// .set(InsOrder::getState, -1)
+// .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
+// return true;
+// }
+//
+// /**
+// * 鍘熸潗鏂欏厤妫�涓嬪崟
+// * @param list
+// * @param insOrder
+// * @return
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public int addExemptionOrder(List<SampleProductDto> list, InsOrder insOrder) {
+// if (!insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
+// throw new ErrorException("鍙湁杩涘巶妫�楠屾墠鑳藉厤妫�");
+// }
+// insOrder.setSendTime(LocalDateTime.now());
+// // 淇敼璁㈠崟琛ㄧ洿鎺ヤ负宸叉楠�
+// insOrder.setState(4);
+// insOrder.setTypeSource(1);
+//
+// String code = "Y";
+// // 鐢熸垚缂栧彿
+// String no = numberGenerator.generateNumberWithPrefix(3,
+// "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
+// InsOrder::getEntrustCode);
+//
+// insOrderMapper.insert(insOrder); // 涓昏〃
+//
+// AtomicInteger count = new AtomicInteger();
+// list.forEach(a -> {
+// count.getAndIncrement();
+// a.setId(null);
+// a.setInsOrderId(insOrder.getId());
+// if (StrUtil.isEmpty(a.getSampleCode())) {
+// // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
+// if (list.size() != 1) {
+// a.setSampleCode(no + "-" + count.get());
+// } else {
+// a.setSampleCode(no);
+// }
+// }
+// insSampleMapper.insert(a);
+//
+// if (!CollectionUtil.isEmpty(a.getInsProduct())) {
+// throw new ErrorException("鍏嶆涓嶉渶瑕佸~鍐欐楠岄」");
+// }
+// });
+//
+// // 鍘熸潗鏂欎笅鍗�: 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId());
+// Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
+// User user = userMapper.selectById(declareUserId);
+// // 渚涘簲鍟嗗悕绉�
+// insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
+// // 濮旀墭浜哄悕绉�
+// insOrder.setPrepareUser(user.getName());
+// insOrder.setPhone(user.getPhone());
+//
+// // 淇敼鍘熸潗鏂欐暟鎹洿鎺ヤ负宸叉楠�
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>().set(IfsInventoryQuantity::getState, 2)
+// .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()));
+//
+// insOrder.setExamineTime(LocalDateTime.now());
+//
+// insOrder.setEntrustCode(no);
+// insOrder.setIsExemption(1);
+//
+// insOrderMapper.updateById(insOrder);
+//
+// // 娣诲姞宸ユ椂
+// addAuxiliary(insOrder, ifsInventoryQuantity);
+//
+// // todo: ifs鐩存帴绉诲簱
+// insReportService.isRawMaterial(insOrder);
+//
+// return insOrder.getId();
+// }
+//
+//
+// /**
+// * 鏌ヨ寰呬笅鍗�
+// * @param page
+// * @param ifsInventoryQuantity
+// * @return
+// */
+// @Override
+// public IPage<IfsInventoryQuantityCheckDto> selectIfsInventoryQuantity(Page<IfsInventoryQuantityCheckDto> page, IfsInventoryQuantityCheckDto ifsInventoryQuantity) {
+// return standardTreeMapper.selectIfsInventoryQuantity(page, QueryWrappers.queryWrappers(ifsInventoryQuantity));
+// }
+//
+// /**
+// * 鏌ヨ宸叉楠�
+// * @param page
+// * @param ifsInventoryQuantityDto
+// * @return
+// */
+// @Override
+// public IPage<IfsInventoryQuantitySupplierDto> getIfsByOver(Page<IfsInventoryQuantitySupplierDto> page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
+// // todo: 鍙湅鎴�
+// String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
+// String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
+// ifsInventoryQuantityDto.setBeginDeclareDate(null);
+// ifsInventoryQuantityDto.setEndDeclareDate(null);
+//
+// return standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+// }
+//
+// /**
+// * 鍒犻櫎鍘熸潗鏂欐姤妫�淇℃伅
+// * @param id
+// * @return
+// */
+// @Override
+// public int delIfsInventory(Integer id) {
+// return ifsInventoryQuantityMapper.deleteById(id);
+// }
+//
+// /**
+// * 鍘熸潗鏂欐斁琛屽厤妫�
+// * @param ifsInventoryId
+// * @return
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public boolean rawOrderRelease(Integer ifsInventoryId, String partDetail) {
+// // 淇敼鍘熸潗鏂欐暟鎹洿鎺ヤ负宸叉楠�
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getState, 2)
+// .set(IfsInventoryQuantity::getIsQuarter, 0)
+// .eq(IfsInventoryQuantity::getId, ifsInventoryId));
+//
+// // 鏌ヨ鍘熸潗鏂欎俊鎭�
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+// // 濮旀墭浜哄氨鏄姤妫�浜�, 鐢熶骇鍗曚綅灏辨槸渚涘簲鍟嗗崟浣�
+// Integer declareUserId = ifsInventoryQuantity.getDeclareUserId();
+// User user = userMapper.selectById(declareUserId);
+//
+// InsOrder insOrder = new InsOrder();
+// insOrder.setState(4);
+// insOrder.setTypeSource(1);
+// String code = "Y";
+// // 鐢熸垚缂栧彿
+// String no = numberGenerator.generateNumberWithPrefix(3,
+// "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
+// InsOrder::getEntrustCode);
+// insOrder.setExamineTime(LocalDateTime.now());
+// insOrder.setEntrustCode(no);
+// insOrder.setIsExemption(1);
+// // 渚涘簲鍟嗗悕绉�
+// insOrder.setProduction(ifsInventoryQuantity.getSupplierName());
+// // 濮旀墭浜哄悕绉�
+// insOrder.setPrepareUser(user.getName());
+// insOrder.setPhone(user.getPhone());
+// insOrder.setIfsInventoryId(ifsInventoryId);
+// insOrder.setPartDetail(partDetail);
+// insOrder.setSendTime(LocalDateTime.now());
+// insOrder.setSample(ifsInventoryQuantity.getPartDesc());
+// // 杩涘巶妫�楠�
+// insOrder.setOrderType(InsOrderTypeConstants.ENTER_THE_FACTORY);
+//
+// insOrderMapper.insert(insOrder);
+//
+// // 娣诲姞宸ユ椂
+// addAuxiliary(insOrder, ifsInventoryQuantity);
+//
+// // todo: ifs鐩存帴绉诲簱
+// insReportService.isRawMaterial(insOrder);
+// return true;
+// }
+//
+// /**
+// * 0, 鏃犳彁绀�, 1鎻愮ず 褰撳墠鎵规鐨勬牱鍝佸凡妫�楠岃繃, 鍙互鍏嶆, 2 鎻愮ず 褰撳墠鎵规鐨勬牱鍝佸凡瓒�20鍚�, 闇�瑕佸绾у娆℃楠�
+// *
+// * 鍘熸潗鏂欎笅鍗曢�氱煡鍏嶆鎴栬�呭娆℃楠�
+// * @param ifsInventoryId
+// * @return
+// */
+// @Override
+// public int notificationRawOrder(Integer ifsInventoryId) {
+// IfsInventoryQuantity ifsInventory = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+// // 鏌ヨ褰撳墠鎵规, 渚涘簲鍟�, 闆朵欢鍙风殑鍘熸潗鏂欐槸鍚﹁秴杩囦簡20鍚�, 瓒呰繃浜�20鍚ㄩ渶瑕佽繘琛屽娆℃楠屾彁閱�
+// List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
+// .eq(IfsInventoryQuantity::getPartNo, ifsInventory.getPartNo())
+// .eq(IfsInventoryQuantity::getUpdateBatchNo, ifsInventory.getUpdateBatchNo())
+// .eq(IfsInventoryQuantity::getSupplierId, ifsInventory.getSupplierId())
+// .eq(IfsInventoryQuantity::getSupplierName, ifsInventory.getSupplierName()));
+//
+// // 鍒ゆ柇鏄惁澶т簬20鍚�
+// BigDecimal bigDecimal = new BigDecimal("20000");
+// BigDecimal count = BigDecimal.ZERO;
+// for (IfsInventoryQuantity inventoryQuantity : quantityList) {
+// // 鍒ゆ柇鍗曚綅鏄痥g鎴栬�卼
+// if (inventoryQuantity.getBuyUnitMeas().equalsIgnoreCase("t")) {
+// count = count.add(inventoryQuantity.getQtyArrived().multiply(new BigDecimal("1000")));
+// } else if (inventoryQuantity.getBuyUnitMeas().equalsIgnoreCase("kg")) {
+// count = count.add(inventoryQuantity.getQtyArrived());
+// }
+// }
+//
+// if (count.compareTo(bigDecimal) >= 0) {
+// return 2;
+// } else {
+// // 鍒ゆ柇涔嬪墠鏄惁鍑鸿繃鎶ュ憡, 鍑鸿繃鎶ュ憡鍙互鍏嶆
+// int reportCount = ifsInventoryQuantityMapper.selectReportCountById(ifsInventoryId);
+// if (reportCount > 0) {
+// return 1;
+// }
+// }
+// return 0;
+// }
+//
+// /**
+// * 鎶ユ鍙互鏂板鎶ユ淇℃伅
+// * @param ifsInventoryQuantity
+// */
+// @Override
+// public void addIfsInventoryQuantity(IfsInventoryQuantity ifsInventoryQuantity) {
+// ifsInventoryQuantity.setIsSource(0);
+// ifsInventoryQuantity.setState(0);
+// ifsInventoryQuantity.setIsFinish(0);
+// ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
+// }
+//
+// @Override
+// public void shiftingParking(List<Integer> ids) {
+// for (Integer id : ids) {
+// InsOrder order = insOrderService.getById(id);
+// // todo: ifs鐩存帴绉诲簱
+// insReportService.isRawMaterial(order);
+// }
+// }
+//
+// /**
+// * 閾滃崟涓濅笅鍗曞厤妫�
+// * @param list
+// * @param insOrder
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public int addRawCopperOrderExemptionOrder(List<SampleProductDto> list, CopperInsOrderDto insOrder) {
+// if (!insOrder.getOrderType().equals(InsOrderTypeConstants.ENTER_THE_FACTORY)) {
+// throw new ErrorException("鍙湁杩涘巶妫�楠屾墠鑳藉厤妫�");
+// }
+// insOrder.setSendTime(LocalDateTime.now());
+// // 淇敼璁㈠崟琛ㄧ洿鎺ヤ负宸叉楠�
+// insOrder.setState(4);
+// insOrder.setTypeSource(1);
+//
+// String code = "Y";
+// // 鐢熸垚缂栧彿
+// String no = numberGenerator.generateNumberWithPrefix(3,
+// "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()),
+// InsOrder::getEntrustCode);
+//
+// insOrderMapper.insert(insOrder); // 涓昏〃
+//
+// AtomicInteger count = new AtomicInteger();
+// list.forEach(a -> {
+// count.getAndIncrement();
+// a.setId(null);
+// a.setInsOrderId(insOrder.getId());
+// if (StrUtil.isEmpty(a.getSampleCode())) {
+// // 濡傛灉鍙湁涓�涓牱鍝佸氨涓嶉渶瑕佹嫾鎺ユ暟瀛�
+// if (list.size() != 1) {
+// a.setSampleCode(no + "-" + count.get());
+// } else {
+// a.setSampleCode(no);
+// }
+// }
+// insSampleMapper.insert(a);
+//
+// if (!CollectionUtil.isEmpty(a.getInsProduct())) {
+// throw new ErrorException("鍏嶆涓嶉渶瑕佸~鍐欐楠岄」");
+// }
+// });
+// // 娣诲姞鍘熸潗鏂欎俊鎭�
+// IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
+// // 鍩烘湰淇℃伅
+// ifsInventoryQuantity.setIsSource(0);
+// ifsInventoryQuantity.setState(2);
+// ifsInventoryQuantity.setIsInspect(1);
+// ifsInventoryQuantity.setIsFinish(1);
+// ifsInventoryQuantity.setIsCopper(1);
+// ifsInventoryQuantity.setInspectStatus(1);
+// ifsInventoryQuantity.setIsQuarter(0);
+//
+// ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
+// ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
+// ifsInventoryQuantity.setSupplierName(insOrder.getSupplierName());
+// ifsInventoryQuantity.setUpdateBatchNo(insOrder.getUpdateBatchNo());
+// ifsInventoryQuantity.setDeclareDate(insOrder.getDeclareDate());
+//
+// ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
+//
+// insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
+// insOrder.setExamineTime(LocalDateTime.now());
+//
+// insOrder.setEntrustCode(no);
+// insOrder.setIsExemption(1);
+//
+// insOrderMapper.updateById(insOrder);
+//
+// // 娣诲姞宸ユ椂
+// addAuxiliary(insOrder, ifsInventoryQuantity);
+//
+// return insOrder.getId();
+// }
+//
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public boolean concessionRelease(Integer ifsInventoryId) {
+// // 鏌ヨ鍘熸潗鏂欎俊鎭�
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+// if (!ifsInventoryQuantity.getInspectStatus().equals(2)) {
+// throw new ErrorException("涓嶅悎鏍肩殑鍘熸潗鏂欐墠鑳借姝ユ斁琛�");
+// }
+//
+// // todo:闇�瑕佸垽鏂璷a娴佺▼鏄惁鏄姝ユ斁琛�
+// String toLocation = insReportService.moveRawMaterial(ifsInventoryQuantity);
+//
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getInspectStatus, 4)
+// .set(IfsInventoryQuantity::getToLocation, toLocation)
+// .eq(IfsInventoryQuantity::getId, ifsInventoryId));
+//
+// return true;
+// }
+//
+// /**
+// * 鍘熸潗鏂欒繘鍘傛挙閿�涓嬪崟
+// * @param enterOrderId
+// * @return
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public boolean repealEnterRawOrder(Integer enterOrderId) {
+// // 鏌ヨ璁㈠崟
+// InsOrder order = insOrderMapper.selectById(enterOrderId);
+//
+// // 鏌ヨ鍒ゆ柇鏄惁鏄摐鍗曚笣
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
+// if (ifsInventoryQuantity.getIsCopper() != null && ifsInventoryQuantity.getIsCopper().equals(1)) {
+// // 閾滃崟涓濈洿鎺ュ垹闄ゅ氨琛�
+// ifsInventoryQuantityMapper.deleteById(order.getIfsInventoryId());
+// } else {
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getState, 0)
+// .set(IfsInventoryQuantity::getIsQuarter, 1)
+// .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
+// }
+// insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
+// .eq(InsOrder::getId, enterOrderId)
+// .set(InsOrder::getState, -1)
+// .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
+//
+// // 娓呴櫎涔嬪墠鐨勫伐鏃�
+// auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+// .eq(AuxiliaryOutputWorkingHours::getOrderId, enterOrderId));
+//
+// // 娓呴櫎涔嬪墠鎶ュ憡
+// insReportService.remove(Wrappers.<InsReport>lambdaQuery()
+// .eq(InsReport::getInsOrderId, enterOrderId));
+//
+// return true;
+// }
+//
+// /**
+// * 鍘熸潗鏂欏搴︽挙閿�涓嬪崟
+// * @param quarterOrderId
+// * @return
+// */
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public boolean repealQuarterRawOrder(Integer quarterOrderId) {
+// // 鏌ヨ璁㈠崟
+// InsOrder order = insOrderMapper.selectById(quarterOrderId);
+//
+// Long count = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
+// .eq(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
+// .ne(InsOrder::getState, -1)
+// .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY)
+// .ne(InsOrder::getId, order.getId()));
+// // 鍒ゆ柇涔嬪墠鏄惁鏈夎繘鍘傛楠�, 娌℃湁闇�瑕佷慨鏀瑰師鏉愭枡淇℃伅
+// if (count == 0) {
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getState, 0)
+// .set(IfsInventoryQuantity::getIsQuarter, 1)
+// .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
+// } else {
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getIsQuarter, 1)
+// .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()));
+// }
+//
+// insOrderService.update(Wrappers.<InsOrder>lambdaUpdate()
+// .eq(InsOrder::getId, quarterOrderId)
+// .set(InsOrder::getState, -1)
+// .set(InsOrder::getEntrustCode, ""));// 鎾ら攢
+// auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
+// .eq(AuxiliaryOutputWorkingHours::getOrderId, quarterOrderId));
+// // 娓呴櫎涔嬪墠鎶ュ憡
+// insReportService.remove(Wrappers.<InsReport>lambdaQuery()
+// .eq(InsReport::getInsOrderId, quarterOrderId));
+// return true;
+// }
+//
+// /**
+// * 鍘熸潗鏂欐姤妫�鍏ㄩ儴淇℃伅瀵煎嚭
+// * @param ifsInventoryQuantityDto
+// * @param response
+// */
+// @Override
+// public void rawAllExport(IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto, HttpServletResponse response) throws UnsupportedEncodingException {
+// //鏌ヨ瀵煎嚭鐨勮垂鐢ㄧ粺璁℃暟鎹�
+// String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
+// String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
+// ifsInventoryQuantityDto.setBeginDeclareDate(null);
+// ifsInventoryQuantityDto.setEndDeclareDate(null);
+// List<IfsInventoryQuantitySupplierDto> ifsByOverList = standardTreeMapper.getIfsByOverList(QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+//
+// for (IfsInventoryQuantitySupplierDto dto : ifsByOverList) {
+// dto.setSendTimeString(dto.getSendTime() == null ? "" : dto.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+// dto.setReceiverDateString(dto.getReceiverDate() == null ? "" : dto.getReceiverDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+// dto.setDeclareDateString(dto.getDeclareDate() == null ? "" : dto.getDeclareDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+// switch (dto.getInspectStatus()) {
+// case 1:
+// dto.setInspectStatusString("鍚堟牸");
+// break;
+// case 2:
+// dto.setInspectStatusString("涓嶅悎鏍�");
+// // 鏌ヨ涓嶅悎鏍奸」
+// List<String> unqualifiedList = insProductMapper.selectUnqualifiedList(dto.getEnterOrderId() == null ? dto.getQuarterOrderId() : dto.getEnterOrderId());
+// dto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ","));
+// break;
+// case 3:
+// dto.setInspectStatusString("鏈笅鍗�");
+// break;
+// case 4:
+// dto.setInspectStatusString("璁╂鏀捐");
+// break;
+// case 0:
+// dto.setInspectStatusString("妫�楠屼腑");
+// break;
+//
+// }
+// }
+//
+//
+// response.setContentType("application/vnd.ms-excel");
+// response.setCharacterEncoding("UTF-8");
+// // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴
+// String fileName = URLEncoder.encode("鍘熸潗鏂欐娴嬩俊鎭鍑�", "UTF-8");
+// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+// try {
+// //鏂板缓ExcelWriter
+// ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
+// //鑾峰彇sheet0瀵硅薄
+// WriteSheet mainSheet = EasyExcel.writerSheet(0, "鍘熸潗鏂欐娴嬩俊鎭鍑�").head(IfsInventoryQuantitySupplierDto.class).build();
+//
+// //鍚憇heet0鍐欏叆鏁版嵁 浼犲叆绌簂ist杩欐牱鍙鍑鸿〃澶�
+// excelWriter.write(ifsByOverList, mainSheet);
+// //鍏抽棴娴�
+// excelWriter.finish();
+// } catch (IOException e) {
+// throw new RuntimeException("瀵煎嚭澶辫触");
+// }
+// }
+//
+// /**
+// * 鍘熸潗鏂欐煡璇㈠彲浠ュ搴︽楠岀殑鍐呭
+// * @param page
+// * @param ifsInventoryQuantityDto
+// * @return
+// */
+// @Override
+// public IPage<IfsInventoryQuantitySupplierDto> getIfsByQuarter(Page page, IfsInventoryQuantitySupplierDto ifsInventoryQuantityDto) {
+//
+// // todo: 鍙湅鎴�
+// String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate();
+// String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate();
+// ifsInventoryQuantityDto.setBeginDeclareDate(null);
+// ifsInventoryQuantityDto.setEndDeclareDate(null);
+//
+// return standardTreeMapper.getIfsByQuarter(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate);
+// }
+//
+// /**
+// * 鎻愬墠鍏ュ簱
+// * @param ifsInventoryId
+// * @return
+// */
+// @Override
+// public boolean advancedGodown(Integer ifsInventoryId) {
+// // 鏌ヨ鍘熸潗鏂欎俊鎭�
+// IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+// if (!ifsInventoryQuantity.getInspectStatus().equals(0)
+// && !ifsInventoryQuantity.getInspectStatus().equals(3)) {
+// throw new ErrorException("鏈娴嬪畬鎴愭暟鎹墠鑳芥彁鍓嶅叆搴�");
+// }
+//
+// // todo:闇�瑕佸垽鏂璷a娴佺▼鏄惁鏄姝ユ斁琛�
+// String toLocation = insReportService.moveRawMaterial(ifsInventoryQuantity);
+//
+// ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper<IfsInventoryQuantity>()
+// .set(IfsInventoryQuantity::getInspectStatus, 1)
+// .set(IfsInventoryQuantity::getIsFinish, 1)
+// .set(IfsInventoryQuantity::getToLocation, toLocation)
+// .eq(IfsInventoryQuantity::getId, ifsInventoryId));
+//
+// return true;
+// }
+//
+//
+// /**
+// * 娣诲姞宸ユ椂
+// * @param insOrder
+// * @param ifsInventoryQuantity
+// */
+// private void addAuxiliary(InsOrder insOrder, IfsInventoryQuantity ifsInventoryQuantity) {
+// AuxiliaryOutputWorkingHours auxiliaryOutputWorkingHours = new AuxiliaryOutputWorkingHours();
+// auxiliaryOutputWorkingHours.setInspectionItemClass(ifsInventoryQuantity.getUpdateBatchNo() + "鍏嶆");//妫�娴嬮」鍒嗙被
+// auxiliaryOutputWorkingHours.setSample(insOrder.getEntrustCode());//鏍峰搧缂栧彿
+// auxiliaryOutputWorkingHours.setOrderId(insOrder.getId());//璁㈠崟id
+// auxiliaryOutputWorkingHours.setOrderNo(insOrder.getEntrustCode());//闈炲姞鐝鎵樺崟鍙�
+//
+// // 鍏嶆榛樿2
+// auxiliaryOutputWorkingHours.setWorkTime(new BigDecimal("2"));//闈炲姞鐝伐鏃�
+// auxiliaryOutputWorkingHours.setAmount(1);//闈炲姞鐝暟閲�
+// auxiliaryOutputWorkingHours.setOutputWorkTime((ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getOvertimeWorkTime()) ? auxiliaryOutputWorkingHours.getOvertimeWorkTime() : BigDecimal.ZERO).add(ObjectUtils.isNotEmpty(auxiliaryOutputWorkingHours.getWorkTime()) ? auxiliaryOutputWorkingHours.getWorkTime() : BigDecimal.ZERO));//浜ч噺宸ユ椂
+// 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(SecurityUtils.getUserId().intValue());//妫�娴嬩汉
+// auxiliaryOutputWorkingHours.setPrice(new BigDecimal("1"));//鍗曚环
+//
+// auxiliaryOutputWorkingHoursMapper.insert(auxiliaryOutputWorkingHours);
+// }
+//
+// public static String getWeek(String dayStr) {
+// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// try {
+// Date date = sdf.parse(dayStr);
+// Calendar calendar = Calendar.getInstance();
+// calendar.setTime(date);
+// int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+// int day = calendar.get(Calendar.DAY_OF_MONTH);
+// return getWeekDay(dayOfWeek);
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// return null;
+// }
+//
+// public static String getWeekDay(int dayOfWeek) {
+// switch (dayOfWeek) {
+// case Calendar.MONDAY:
+// return "鍛ㄤ竴";
+// case Calendar.TUESDAY:
+// return "鍛ㄤ簩";
+// case Calendar.WEDNESDAY:
+// return "鍛ㄤ笁";
+// case Calendar.THURSDAY:
+// return "鍛ㄥ洓";
+// case Calendar.FRIDAY:
+// return "鍛ㄤ簲";
+// case Calendar.SATURDAY:
+// return "鍛ㄥ叚";
+// case Calendar.SUNDAY:
+// return "鍛ㄦ棩";
+// default:
+// return "鏈煡";
+// }
+// }
+//}
--
Gitblit v1.9.3