From 7299b1b4e0730fecb92021c4ae95e2ac1a13ea3d Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期一, 26 五月 2025 00:26:27 +0800 Subject: [PATCH] 人员培训修改成电子签 --- inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java | 1694 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 847 insertions(+), 847 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 1faaee4..fb5bfdc 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,847 +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.*; -//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 "鏈煡"; -// } -// } -//} +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.Result; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.config.WechatProperty; +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.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 Result selectStandardTreeListByPartNo(String partNo) { + List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeListByPartNo(partNo); + if (CollectionUtil.isEmpty(factoryDtos)) { + return Result.success(null, "闆朵欢鍙蜂负" + 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 Result.success(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); + + IPage<IfsInventoryQuantitySupplierDto> ifsByOver = standardTreeMapper.getIfsByOver(page, QueryWrappers.queryWrappers(ifsInventoryQuantityDto), beginDeclareDate, endDeclareDate); + return ifsByOver; + } + + /** + * 鍒犻櫎鍘熸潗鏂欐姤妫�淇℃伅 + * @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); + } + + + + + /** + * 閾滃崟涓濅笅鍗曞厤妫� + * @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 { + // 鍒ゆ柇鏄惁鏄牴鎹�夋嫨鐨勫鍑� + List<IfsInventoryQuantitySupplierDto> ifsByOverList = new ArrayList<>(); + if (StringUtils.isNotBlank(ifsInventoryQuantityDto.getIds())) { + List<String> ifsIds = StrUtil.split(ifsInventoryQuantityDto.getIds(), ","); + ifsByOverList = standardTreeMapper.getIfsByIds(ifsIds); + } else { + String beginDeclareDate = ifsInventoryQuantityDto.getBeginDeclareDate(); + String endDeclareDate = ifsInventoryQuantityDto.getEndDeclareDate(); + ifsInventoryQuantityDto.setBeginDeclareDate(null); + ifsInventoryQuantityDto.setEndDeclareDate(null); + ifsInventoryQuantityDto.setIds(null); + 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