diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsCraftAbilityEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsCraftAbilityEntity.java
index 12eba44b..82fb7aac 100644
--- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsCraftAbilityEntity.java
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/BsCraftAbilityEntity.java
@@ -70,4 +70,6 @@ public class BsCraftAbilityEntity extends BaseEntity {
@Schema(description = "厂内应分比例")
private Double inFactoryPercent;
+
+
}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
index d523f8b4..fddc7713 100644
--- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartEntity.java
@@ -159,7 +159,7 @@ public class DsPartEntity extends BaseEntity {
* 镀层厚度
*/
@Schema(description = "镀层厚度")
- private String plateThickness;
+ private Double plateThickness;
/**
* 镀层物料
*/
@@ -271,7 +271,7 @@ public class DsPartEntity extends BaseEntity {
* 面积2
*/
@Schema(description = "面积2")
- private BigDecimal areaTwo;
+ private Double areaTwo;
/**
@@ -342,6 +342,6 @@ public class DsPartEntity extends BaseEntity {
* 镀层厚度2
*/
@Schema(description = "镀层厚度2")
- private BigDecimal plateThicknessTwo;
+ private Double plateThicknessTwo;
}
diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java
index 631676a1..3842338d 100644
--- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java
+++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClient.java
@@ -22,6 +22,7 @@ public interface IErpYieldOrderClient {
String API_PREFIX = "/feign/erp/yieldOrder";
String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake";
+ String GET_CHILD_ROAM_NO_BY_PART_CODE = API_PREFIX + "/getChildRoamNoByPartCode";
/**
* 生成玻璃饼订单
@@ -49,4 +50,7 @@ public interface IErpYieldOrderClient {
@RequestParam("partCode") String partCode,
@RequestParam("quota") Double quota);
+ @GetMapping(GET_CHILD_ROAM_NO_BY_PART_CODE)
+ String getChildRoamNoByPartCode(@RequestParam("partCode") String partCode);
+
}
diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java
index c20fcbb5..dc714ce6 100644
--- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java
+++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpYieldOrderClientFallback.java
@@ -15,4 +15,9 @@ public class IErpYieldOrderClientFallback implements IErpYieldOrderClient {
public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) {
}
+
+ @Override
+ public String getChildRoamNoByPartCode(String partCode) {
+ return null;
+ }
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.java
new file mode 100644
index 00000000..f60b06c9
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.java
@@ -0,0 +1,41 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
+
+/**
+ * 质量等级表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2025-12-18
+ */
+public interface QualityGradeMapper extends BaseMapper {
+
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.xml
new file mode 100644
index 00000000..8194ad84
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/QualityGradeMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IQualityGradeService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IQualityGradeService.java
new file mode 100644
index 00000000..0a8e3794
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IQualityGradeService.java
@@ -0,0 +1,40 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.service;
+
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
+
+/**
+ * 质量等级表 服务类
+ *
+ * @author BladeX
+ * @since 2025-12-18
+ */
+public interface IQualityGradeService extends BaseService {
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BatConfigServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BatConfigServiceImpl.java
index 4fb221ec..a86a9009 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BatConfigServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BatConfigServiceImpl.java
@@ -6,6 +6,7 @@ package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
@@ -68,10 +69,12 @@ public class BatConfigServiceImpl extends BaseServiceImpl batConfigList = baseMapper.selectList(wrapper);
+ if(CollectionUtils.isEmpty(batConfigList)){
+ return null;
+ }
+ return batConfigList.get(0);
}
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/QualityGradeServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/QualityGradeServiceImpl.java
new file mode 100644
index 00000000..076a0bbc
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/QualityGradeServiceImpl.java
@@ -0,0 +1,45 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.service.impl;
+
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.desk.basic.mapper.QualityGradeMapper;
+import org.springblade.desk.basic.service.IQualityGradeService;
+import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
+import org.springframework.stereotype.Service;
+
+/**
+ * 质量等级表 服务实现类
+ *
+ * @author BladeX
+ * @since 2025-12-18
+ */
+@Service
+public class QualityGradeServiceImpl extends BaseServiceImpl implements IQualityGradeService {
+
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java
index b7571ae7..f77680e1 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/WorkCenterServiceImpl.java
@@ -5,17 +5,17 @@ package org.springblade.desk.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
-import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.excel.WorkCenterExcel;
import org.springblade.desk.basic.mapper.WorkCenterMapper;
import org.springblade.desk.basic.pojo.entity.BatConfig;
-import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.vo.WorkCenterVO;
import org.springblade.desk.basic.service.IBatConfigService;
@@ -27,7 +27,6 @@ import org.springframework.stereotype.Service;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
/**
* [作业中心] 服务实现类
@@ -62,14 +61,12 @@ public class WorkCenterServiceImpl extends BaseServiceImpl selectByAbility(Long abilityId, Double ypQty, Double ypArea, String partCode, String PrimaryCraft, Integer yieldType, Boolean rxlSpace) {
- List abilityList = oemCraftAbilityService.findByAbility(abilityId);
- if (Func.isEmpty(abilityList)) {
+
+ List workCenterList = this.list(Wrappers.lambdaQuery().like(WorkCenter::getCraftAbilityId,abilityId));
+ if(CollectionUtils.isEmpty(workCenterList)){
return null;
}
- List companyIdList = abilityList.stream().map(OemCraftAbilityEntity::getOtherId).collect(Collectors.toList());
- List workCenterList = this.listByIds(companyIdList);
-
Double area = ypQty * ypArea;
Map wcMap = new LinkedHashMap<>();
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
index 18de1a05..29a55b68 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
@@ -31,6 +31,7 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.excel.DsPartExcel;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.*;
+import org.springblade.desk.order.pojo.entity.YieldOrder;
import java.util.List;
@@ -250,7 +251,7 @@ public interface IDsPartService extends BaseService {
* @param partVersion 版本号
* @return
*/
- PartCraftVO selectPartCraft(String partCode, String roamNo, String rank, String partVersion);
+ PartCraftVO selectPartCraft(YieldOrder yieldOrder, String partCode, String roamNo, String rank, String partVersion);
/**
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
index b9e0035d..4f8ed230 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
@@ -1,28 +1,34 @@
package org.springblade.desk.dashboard.service.impl;
-import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
+import org.springblade.common.constant.CommonConstant;
import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
+import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.common.constant.BizTypeConstant;
import org.springblade.desk.common.service.IMesNotifyMessageService;
import org.springblade.desk.dashboard.constant.TaskingConstant;
import org.springblade.desk.dashboard.excel.DsPartExcel;
import org.springblade.desk.dashboard.mapper.DsPartMapper;
import org.springblade.desk.dashboard.pojo.entity.*;
+import org.springblade.desk.dashboard.pojo.enums.DsCraftEnum;
import org.springblade.desk.dashboard.pojo.enums.PartCraftStatusEnum;
import org.springblade.desk.dashboard.pojo.vo.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.dashboard.utils.DateUtils;
+import org.springblade.desk.order.pojo.entity.YieldOrder;
+import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.erpdata.feign.IErpDataPartClient;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springblade.system.pojo.entity.UserInfo;
@@ -33,6 +39,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -85,6 +92,10 @@ public class DsPartServiceImpl extends BaseServiceImpl caIdList = processEntities.stream().map(DsProcessEntity::getCaId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+ List craftAbilityList = craftAbilityService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,caIdList));
+ if(!CollectionUtils.isEmpty(craftAbilityList)){
+ Double levConfirmVal = craftAbilityList.stream().filter(Objects::nonNull).map(CraftAbilityEntity::getLocalArea).filter(Objects::nonNull).findFirst().orElse(BigDecimal.ZERO).doubleValue();
+ if (levConfirmVal > 0) {
+ // 计算生产订单总面积
+ Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty();
+ if (totalArea > levConfirmVal) {
+ rank = String.valueOf(DsCraftEnum.RANK_ONE.getCode());
+ craftByRank = selectCraftByPriority(dsCraftList, rank);
+ if (craftByRank == null) {
+ return PartCraftVO.build(PartCraftStatusEnum.NO_CRAFT_RANK_INFO.getCode());
+ }
+ processEntities = processService.selectDsProcessByCraftId(craftByRank.getId());
+ if (CollectionUtils.isEmpty(processEntities)) {
+ return PartCraftVO.build(PartCraftStatusEnum.NO_PROCEDURE_INFO.getCode());
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+
+ // 9. 返回工艺
return PartCraftVO.build(PartCraftStatusEnum.SUCCESS.getCode(),craftByRank);
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
index d5a8e281..22fffc63 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
@@ -178,6 +178,17 @@ public class YieldOrderController extends BladeController {
return R.status(result);
}
+ /**
+ * 批量确认
+ */
+ @PostMapping("/automaticDispatch")
+ @Operation(summary = "批量确认", description = "传入ids")
+ public R automaticDispatch(@Parameter(description = "主键集合", required = true) @RequestParam Long id) {
+ YieldOrder yieldOrder = yieldOrderService.getById(id);
+ Boolean result = yieldOrderService.verifyYieldOrderResource(yieldOrder);
+ return R.status(result);
+ }
+
/**
* 批量关闭
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java
index 3517b9b0..574236b3 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java
@@ -1,12 +1,12 @@
package org.springblade.desk.order.feign;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
+import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Feign 排产相关定时任务接口
@@ -140,6 +141,9 @@ public class ApsOrderClient implements IApsOrderClient {
@Override
public void saveOrderList(List yieldOrderList) {
yieldOrderService.saveOrUpdateBatch(yieldOrderList);
+ //合规性校验
+ List ids = yieldOrderList.stream().map(BaseEntity::getId).collect(Collectors.toList());
+ yieldOrderService.dataVerify(ids);
}
@Override
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
index 12cb4de3..6f1e10ac 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
@@ -12,7 +12,7 @@
RECSEQ_NO, yo.MANUAL_INCREASE, yo.YIELD_TYPE, yo.FATHER_YO_ID, yo.NEW_LEV_FLAG, yo.PRODUCE_BOOL, yo.USE_DEPT_CODE, yo.YP_PRODUCT_LINE,
YP_MEMO, yo.SJ_MOLD_PREPARATION, yo.SJ_KIT_PREPARATION, yo.PK_USERNAME, yo.PK_DATE, yo.KIT_PREPARATION_MAN, yo.KIT_PREPARATION_TIME,
PRIORITY_APS, yo.PRIORITY_ERP, yo.VALIDATION_RESULT, yo.VALIDATION_MOMO, yo.VALIDATION_TIME, yo.VALIDATION_USER, yo.RECEIVE_STATUS,
- WORK_CENTER_ID, yo.ERROR_INFO, yo.RECEIVE_USER, yo.RECEIVE_TIME, yo.GOODS_DEMAND, yo.TOOLS_DEMAND, yo.PLATE_GOODS_CODE
+ WORK_CENTER_ID, yo.ERROR_INFO, yo.RECEIVE_USER, yo.RECEIVE_TIME, yo.GOODS_DEMAND, yo.TOOLS_DEMAND, yo.PLATE_GOODS_CODE, yo.PART_VERSION
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
index 7f209b1f..b1505588 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java
@@ -2,8 +2,12 @@ package org.springblade.desk.order.service.impl;
import com.alibaba.cloud.commons.lang.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.common.constant.CommonConstant;
import org.springblade.common.utils.StringPrefixUtils;
+import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
@@ -12,14 +16,20 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.pojo.entity.CoatingThickness;
import org.springblade.desk.basic.pojo.entity.MaterialQuota;
import org.springblade.desk.basic.service.ICoatingThicknessService;
+import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.basic.service.IMaterialQuotaService;
+import org.springblade.desk.basic.service.IQualityGradeService;
import org.springblade.desk.dashboard.pojo.entity.BsPlatingEntity;
import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
-import org.springblade.desk.dashboard.service.*;
+import org.springblade.desk.dashboard.service.IBsPlatingService;
+import org.springblade.desk.dashboard.service.IDsCraftService;
+import org.springblade.desk.dashboard.service.IDsPartService;
+import org.springblade.desk.dashboard.service.IDsProcessService;
import org.springblade.desk.order.constant.PlateGoodsConst;
import org.springblade.desk.order.mapper.PlateGoodsRecordMapper;
+import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@@ -27,13 +37,16 @@ import org.springblade.desk.order.pojo.enums.PlateGoodsEnum;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IPlateGoodsRecordDetailService;
import org.springblade.desk.order.service.IPlateGoodsRecordService;
-import org.springblade.desk.order.service.IYieldOrderService;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
+import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
+import org.springblade.system.cache.DictCache;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -43,16 +56,19 @@ import java.util.stream.Collectors;
*/
@RequiredArgsConstructor
@Service
+@Slf4j
public class PlateGoodsRecordServiceImpl extends BaseServiceImpl implements IPlateGoodsRecordService {
private final IPlateGoodsRecordDetailService detailService;
- private final IYieldOrderService yieldOrderService;
+ private final YieldOrderMapper yieldOrderMapper;
private final IDsPartService dsPartService;
private final IBsPlatingService bsPlatingService;
private final ICoatingThicknessService coatingThicknessService;
private final IDsCraftService dsCraftService;
private final IDsProcessService dsProcessService;
private final IMaterialQuotaService materialQuotaService;
+ private final ICraftAbilityService craftAbilityService;
+ private final IQualityGradeService qualityGradeService;
@Override
public IPage selectPage(IPage page, PlateGoodsRecord entity) {
List dataList = baseMapper.selectPage(page, entity);
@@ -134,7 +150,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl yieldOrderIds = detailList.stream().map(PlateGoodsRecordDetail::getYoId).collect(Collectors.toList());
// 再根据明细中的生产订单id查询订单
- List yieldOrderList = yieldOrderService.listByIds(yieldOrderIds);
+ List yieldOrderList = yieldOrderMapper.selectByIds(yieldOrderIds);
return yieldOrderList;
}
@@ -158,13 +174,221 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl=30){
+ //是大批量
+ batchFlag=1;
+ }else{
+ //是小批量
+ batchFlag=0;
+ }
+ //根据零件号查询零件
+ DsPartEntity dsPart = dsPartService.selectDsPartByPatCodeAndVersion(partCode,partVersion);
+ if(null==dsPart){
+ return false;
+ }
+ //镀层物料编码
+ String plateGoodsCode=dsPart.getPlateGoodsCode();
+ //工艺能力
+ String abilityName = null;
+ //零件工序对应工艺能力类型是否包含镀金、镀银
+ boolean isContains = false;
+ //局部镀面积
+ double localArea = 0;
+
+ //查询零件工艺
+ DsCraftEntity dsCraftEntity = dsCraftService.selectDsCraftByPartCodeAndVersion(dsPart.getId(),partVersion);
+ //工艺表(DS_CRAFT)id
+ Long dsCraftId=dsCraftEntity.getId();
+ //查询生产工序列表
+ List dsProcessList=dsProcessService.selectDsProcessByCraftId(dsCraftId);
+ // 1. 空列表校验
+ if (CollectionUtils.isEmpty(dsProcessList)) {
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("未查询到生产工序信息");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ } else{
+ List caIdList = dsProcessList.stream().map(DsProcessEntity::getCaId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+ List craftAbilityList = craftAbilityService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,caIdList));
+ if(CollectionUtils.isEmpty(craftAbilityList)){
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("未查询到工艺能力信息");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }else{
+ for(CraftAbilityEntity craftAbility : craftAbilityList){
+ if(StringUtils.isNotEmpty(craftAbility.getWxLimit())){
+ abilityName = DictCache.getValue("ProcessCapabilityType",craftAbility.getWxLimit());
+ if(abilityName.contains("镀金") || abilityName.contains("镀银")){
+ localArea = craftAbility.getLocalArea().doubleValue();
+ isContains = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if(StringUtils.isNotEmpty(plateGoodsCode) && isContains){
+ Double h1 = dsPart.getPlateThickness();
+ Double h2 = dsPart.getPlateThicknessTwo();
+ Double s1 = dsPart.getArea();
+ Double s2 = dsPart.getAreaTwo();
+ boolean isLocal = false;
+ boolean isThickness = false;
+ //判断订单质量等级是否局部镀
+ QualityGradeEntity qualityGrade = qualityGradeService.getOne(Wrappers.lambdaQuery().eq(QualityGradeEntity::getQualityGrade,productIdent));
+ if(qualityGrade != null){
+ if("1".equals(qualityGrade.getIsLocal())){
+ isLocal = true;
+ }
+ if("1".equals(qualityGrade.getIsThickness())){
+ isThickness = true;
+ }
+ }
+ if(h1 == null){
+ //根据配置码查询镀种信息
+ BsPlatingEntity bsPlatingEntity =bsPlatingService.selectBsPlatingConfigNo(dsPart.getConfigCode());
+ if(bsPlatingEntity == null){
+ log.info("配置码"+dsPart.getConfigCode()+"未查询到镀种信息");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("配置码"+dsPart.getConfigCode()+"未查询到镀种信息");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ //镀层代码
+ String matCode=bsPlatingEntity.getMatCode();
+ //根据零件号、镀层代码、质量等级,从镀层厚度对应表中查询镀层厚度
+ int start_f21e8=0;
+ if(partCode.startsWith("21E8-210")){
+ start_f21e8=1;
+ }
+ CoatingThickness CoatingThickness=coatingThicknessService.queryCoatingThickness(matCode,productIdent,start_f21e8);
+ if(CoatingThickness == null){
+ log.info("零件"+partCode+"未找到对应的镀层厚度");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("零件"+partCode+"未找到对应的镀层厚度");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ //镀层厚度
+ h1=CoatingThickness.getThickness().doubleValue();
+ }
+ double demand = 0;
+ //零件有镀金标识 && { 订单面积>工艺能力对应【局部镀订单面积】 || 订单质量等级为【局部镀】} --局部镀
+ if (CommonConstant.BOOLEAN_TRUE.equals(dsPart.getGoldMark()) && ((localArea != 0 && yieldOrder.getYpArea() > localArea) || isLocal)) {
+ double quota1 = 0;
+ double quota2 = 0;
+ if(isThickness){
+ h1 = Double.valueOf(DictCache.getKey("thickness","h1"));
+ }
+ if(h2 == null){
+ h2 = Double.valueOf(DictCache.getKey("thickness","h2"));
+ }
+ List materialQuotaList1 = materialQuotaService.list(Wrappers.lambdaQuery().eq(MaterialQuota::getQuotaType,1).eq(MaterialQuota::getThickness,h1));
+ List materialQuotaList2 = materialQuotaService.list(Wrappers.lambdaQuery().eq(MaterialQuota::getQuotaType,1).eq(MaterialQuota::getThickness,h2));
+ if(CollectionUtils.isEmpty(materialQuotaList1)){
+ log.info("镀层物料需求计算,镀金局部镀、镀层厚度"+h1+"未匹配到物料定额");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ if(CollectionUtils.isEmpty(materialQuotaList2)){
+ log.info("镀层物料需求计算,镀金局部镀、镀层厚度"+h2+"未匹配到物料定额");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("镀层物料需求计算,镀金局部镀、镀层厚度"+h2+"未匹配到物料定额");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ quota1 = materialQuotaList1.get(0).getLocalBatQuota().doubleValue();
+ quota2 = materialQuotaList2.get(0).getLocalBatQuota().doubleValue();
+
+ if(batchFlag == 0){
+ demand = (s2*yieldOrder.getYpQty()*quota1 + (s1-s2)*yieldOrder.getYpQty()*quota2)*0.2829*1.2;
+ }else{
+ demand = (s2*yieldOrder.getYpQty()*quota1 + (s1-s2)*yieldOrder.getYpQty()*quota2)*0.2829;
+ }
+
+ }else{
+ double quota = 0;
+ if(abilityName.contains("镀银")){
+ List materialQuotaList = materialQuotaService.list(Wrappers.lambdaQuery().eq(MaterialQuota::getQuotaType,2).eq(MaterialQuota::getThickness,h1));
+ if(CollectionUtils.isEmpty(materialQuotaList)){
+ log.info("镀层物料需求计算,镀银、镀层厚度"+h1+"未匹配到物料定额");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("镀层物料需求计算,镀银、镀层厚度"+h1+"未匹配到物料定额");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ if(abilityName.contains("滚振镀银")){
+ quota = materialQuotaList.get(0).getQuota().doubleValue();
+ }else{
+ quota = materialQuotaList.get(0).getSmallBatQuota().doubleValue();
+ }
+ demand = singleArea*quota*0.105;
+
+ }else{
+ List materialQuotaList = materialQuotaService.list(Wrappers.lambdaQuery().eq(MaterialQuota::getQuotaType,1).eq(MaterialQuota::getThickness,String.valueOf(h1)));
+ if(CollectionUtils.isEmpty(materialQuotaList)){
+ log.info("镀层物料需求计算,镀金非局部镀、镀层厚度"+h1+"未匹配到物料定额");
+ //将订单状态标记为数据异常,记录异常原因,并退出
+ yieldOrder.setValidationMomo("镀层物料需求计算,镀金非局部镀、镀层厚度"+h1+"未匹配到物料定额");
+ this.updateYieldOrder(yieldOrder);
+ return false;
+ }
+ if(abilityName.contains("滚振镀金")){
+ quota = materialQuotaList.get(0).getQuota().doubleValue();
+ }else if(abilityName.contains("挂镀金")){
+ quota = materialQuotaList.get(0).getSmallBatQuota().doubleValue();
+ }else{
+ quota = materialQuotaList.get(0).getBigBatQuota().doubleValue();
+ }
+ if(batchFlag == 0){
+ demand = singleArea*quota*0.2829*1.2;
+ }else{
+ demand = singleArea*quota*0.2829;
+ }
+ }
+ }
+ //构建镀层物料需求申报对象, 调用保存方法,保存镀层物料需求申报
+ PlateGoodsRecord plateGoodsRecord=new PlateGoodsRecord();
+ plateGoodsRecord.setGoodsCode(plateGoodsCode);
+ plateGoodsRecord.setGoodsName(plateGoodsCode.equals(PlateGoodsConst.GOLD_POTASSIUM)?"氢化亚金钾":"氢化银钾");
+ plateGoodsRecord.setGoodsDemand(BigDecimal.valueOf(demand));
+ plateGoodsRecord.setDeclaredStatus((long) PlateGoodsEnum.STATUS_WAITING.getCode());
+ plateGoodsRecord.setWcId(yieldOrder.getWorkCenterId());
+ List detailList=new ArrayList<>();
+ PlateGoodsRecordDetail plateGoodsRecordDetail=new PlateGoodsRecordDetail();
+ plateGoodsRecordDetail.setYoId(yieldOrder.getId());
+ this.save(plateGoodsRecord, detailList);
+ }else{
+ return true;
+ }
+
+ return true;
+ }
/**
* 生成订单-计算镀层物料
* @param yieldOrder
* @return
*/
- @Override
- public boolean calculateCoatingMaterial(YieldOrder yieldOrder){
+ public boolean calculateCoatingMaterial1(YieldOrder yieldOrder){
//零件号
String partCode=yieldOrder.getPartCode();
//零件版本
@@ -230,6 +454,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl ids) {
List yieldOrderList = new ArrayList<>();
-
- ids.forEach(id -> {
- YieldOrder yieldOrder = new YieldOrder();
- yieldOrder.setId(id);
+ for(Long id : ids){
+ YieldOrder yieldOrder = this.getById(id);
+ if (!this.verifyYieldOrderResource(yieldOrder)) {
+ return false;
+ }
yieldOrder.setReceiveStatus(YieldOrderEnum.RECEIVE_STATUS_YES.getCode());
yieldOrderList.add(yieldOrder);
- });
+ }
return this.updateBatchById(yieldOrderList);
}
@@ -249,7 +263,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl yieldOrderCheckList = baseMapper.selectList(wrapper);
+ if (CollectionUtils.isNotEmpty(yieldOrderCheckList)) {
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("已存在该流程卡号的数据");
@@ -346,7 +360,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl subPartList = dsPartService.getPartSubList(yieldOrder.getPartCode(),yieldOrder.getPartVersion());
+ if(CollectionUtils.isNotEmpty(subPartList)){
+ for(DsPartEntity subPart : subPartList){
+ if(DsPartConstant.SIN_TER_TYPE_SMM == subPart.getSinTerType() && subPart.getQuota() != 0){
+ MoldDemand moldDemand = new MoldDemand();
+ moldDemand.setMoCode(null);
+ moldDemand.setPartCode(subPart.getPartCode());
+ moldDemand.setPartName(subPart.getPartName());
+ moldDemand.setDemandNum(subPart.getQuota() * yieldOrder.getYpQty());
+ moldDemand.setLinkOrderIds(yieldOrder.getId().toString());
+ moldDemand.setStatus(MoldDemandEnum.STATUS_WAITING.getCode());
+ moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode());
+ moldDemand.setNeedDate(yieldOrder.getDemandDate());
+ moldDemand.setQuaLevel(yieldOrder.getProductIdent());
+ moldDemandMapper.insert(moldDemand);
+ }
+ }
- // TODO 生成模具计划
- // TODO 生成物料需求
+ }
+ }else if(YieldOrderEnum.YIELD_TYPE_3.getCode() == yieldOrder.getYieldType()){
+ List processMoldToolList = dsPartService.getClassCakeWork(yieldOrder.getPartCode(),yieldOrder.getRoamNo(),yieldOrder.getPartVersion());
+ if(CollectionUtils.isNotEmpty(processMoldToolList)){
+ MoldDemand moldDemand = new MoldDemand();
+ moldDemand.setMoCode(null);
+ moldDemand.setPartCode(yieldOrder.getPartCode());
+ moldDemand.setPartName(yieldOrder.getPartName());
+ moldDemand.setDemandNum(yieldOrder.getYpQty());
+ moldDemand.setToolCode(processMoldToolList.get(0).getMoldCode());
+ moldDemand.setToolName(processMoldToolList.get(0).getMoldName());
+ moldDemand.setLinkOrderIds(yieldOrder.getId().toString());
+ moldDemand.setStatus(MoldDemandEnum.STATUS_WAITING.getCode());
+ moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode());
+ moldDemand.setNeedDate(yieldOrder.getDemandDate());
+ moldDemand.setQuaLevel(yieldOrder.getProductIdent());
+ moldDemandMapper.insert(moldDemand);
+ }
+ }
return Boolean.TRUE;
}
@@ -438,18 +495,25 @@ public class YieldOrderServiceImpl extends BaseServiceImpl subList = new ArrayList<>();
- subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模"));
- subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体"));
- subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针"));
+// List subList = new ArrayList<>();
+// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_SMM, "石墨模"));
+// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_KT, "壳体"));
+// subList.addAll(this.checkSub(yieldOrder.getPartCode(), DsPartConstant.SIN_TER_TYPE_CZ, "插针"));
+
+ DsPartVersionEntity partVersion = partVersionService.getOne(Wrappers.lambdaQuery()
+ .eq(DsPartVersionEntity::getPartCode,yieldOrder.getPartCode())
+ .eq(DsPartVersionEntity::getPartVersion,yieldOrder.getPartVersion()));
+ List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(DsPartRelationEntity::getPartId,partVersion.getPartId()));
+ List childPartIdList = partRelationList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
+ List subList = dsPartService.list(Wrappers.lambdaQuery().in(BaseEntity::getId,childPartIdList));
if (subList.size() == 0) {
throw new BusinessException("未找到烧结前处理子件信息,请联系工艺编制!");
}
//获取已经产生的烧结子件清单
- List subYieldOrderList = this.listByFatherYoId(yieldOrder.getFatherYoId());
+ List subYieldOrderList = this.listByFatherYoId(yieldOrder.getId());
List keyLst = new ArrayList<>();
List returnList = new ArrayList<>();
if (subYieldOrderList.size() > 0) {
@@ -935,6 +999,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl subList, Boolean isManual, Long receiveUser) throws BusinessException {
List dsCraftList;
+ List idList = new ArrayList<>();
for (DsPartEntity dsPartSub : subList) {
//如果子件号为空或者是无,则跳过
if (StringUtils.isBlank(dsPartSub.getPartCode()) || dsPartSub.getPartCode().equals("无")) {
@@ -968,7 +1033,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl {
+ this.dataVerify(idList);
+ });
}
}
@@ -1110,7 +1182,9 @@ public class YieldOrderServiceImpl extends BaseServiceImpl levConfirmVal) {
+// Integer levConfirmVal = 20;
+// if (levConfirmVal != null) {
+// // 计算生产订单总面积
+// Double totalArea = yieldOrder.getYpArea() * yieldOrder.getYpQty();
+//
+// if (totalArea > levConfirmVal) {
+// return DsCraftEnum.RANK_ONE.getCode();
+// } else {
+// if (Func.isNotEmpty(yieldOrder.getProductIdent())) {
+// // 若局部镀质量等级存在, 返回一级工艺
+// return DsCraftEnum.RANK_ONE.getCode();
+// }
+// }
+// }
+ if (Func.isNotEmpty(yieldOrder.getProductIdent())) {
+ //根据订单的质量等级去质量等级表查询是否局部镀
+ QualityGradeEntity qualityGrade = qualityGradeService.getOne(Wrappers.lambdaQuery().eq(QualityGradeEntity::getQualityGrade,yieldOrder.getProductIdent()));
+ if(qualityGrade != null && "1".equals(qualityGrade.getIsLocal())){
+ // 若局部镀质量等级存在, 返回一级工艺
return DsCraftEnum.RANK_ONE.getCode();
- } else {
- if (Func.isNotEmpty(yieldOrder.getProductIdent())) {
- // 若局部镀质量等级存在, 返回一级工艺
- return DsCraftEnum.RANK_ONE.getCode();
- }
}
}
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java
index 3f87cf95..e90dddd5 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/service/impl/FmProjectMilestoneServiceImpl.java
@@ -28,7 +28,6 @@ package org.springblade.desk.process.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
@@ -50,7 +49,6 @@ import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -173,7 +171,7 @@ public class FmProjectMilestoneServiceImpl extends BaseServiceImpl 0) {
for (FmProjectMilestoneEntity projectMilestone : fmProjectMilestoneList) {
- if (projectMilestone.getGrade().equals(FmProjectMilestoneEntity.GRADE_NO)) {
+ if (FmProjectMilestoneEntity.GRADE_NO.equals(projectMilestone.getGrade())) {
isOk = Boolean.FALSE;
}
}
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java
index 7a08f72d..dc9465c7 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpYieldOrderClientImpl.java
@@ -28,4 +28,9 @@ public class ErpYieldOrderClientImpl implements IErpYieldOrderClient {
public void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate, String planUser, String ypCode, Long poQty, String partCode, Double quota) {
erpYieldOrderService.saveGlassCake(yoCode, cardNo, batchNo, prodIdent, demandDate, planUser, ypCode, poQty, partCode, quota);
}
+
+ @Override
+ public String getChildRoamNoByPartCode(String partCode) {
+ return erpYieldOrderService.getChildRoamNoByPartCode(partCode);
+ }
}
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java
index f95b3b93..3a96972c 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.java
@@ -18,4 +18,6 @@ public interface ErpYieldOrderMapper extends Mapper {
*/
void saveGlassCake(Map params);
+ String getChildRoamNoByPartCode(String partCode);
+
}
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml
index b7dd5a24..369800a3 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpYieldOrderMapper.xml
@@ -27,4 +27,23 @@
#{v_use_deptcode, mode=IN, jdbcType=VARCHAR}
)}
+
+
+ SELECT
+ b.firseq
+ FROM
+ (
+ SELECT
+ a.*
+ FROM
+ dba_mgr.v_mes_rb_partoplink
+ WHERE
+ a.prtno = #{partCode}
+ AND a.firseqname NOT LIKE '库%'
+ ORDER BY
+ a.firseqno DESC
+ ) b
+ WHERE
+ ROWNUM =1
+
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java
index 9f64dc76..36fa8231 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpYieldOrderService.java
@@ -26,4 +26,6 @@ public interface IErpYieldOrderService {
*/
void saveGlassCake(String yoCode, String cardNo, String batchNo, String prodIdent, Date demandDate,
String planUser, String ypCode, Long poQty, String partCode, Double quota);
+
+ String getChildRoamNoByPartCode(String partCode);
}
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
index 60837cdc..f88ad1a9 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
@@ -4,11 +4,9 @@ import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springblade.core.tool.api.R;
-import org.springblade.desk.dashboard.pojo.entity.DsCraftEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.order.feign.IApsOrderClient;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@@ -16,17 +14,17 @@ import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.pojo.enums.YieldPlanEnum;
import org.springblade.erpdata.mapper.ErpMesRbWoMapper;
-import org.springblade.erpdata.pojo.dto.table.Rrbwoerptomes;
import org.springblade.erpdata.pojo.dto.table.Wo;
import org.springblade.erpdata.pojo.dto.view.*;
import org.springblade.erpdata.service.*;
-import org.springblade.system.cache.DictCache;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
/**
* @author lqk
@@ -300,6 +298,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setReceiveUser(2038615120549822465L);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder = updateYieldType(yieldOrder,mesRbPurtoso.getPrtno(),mesRbPurtoso.getFirseq());
/*List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbPurtoso.getPrtno());
//若零件不为空,查询零件的工艺路线
@@ -364,6 +363,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
yieldOrder.setReceiveUser(2038615120549822465L);
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
DsPartEntity part = apsOrderClient.getDsCraftListByCode(mesRbPacturnrecord.getPrtno());
if(part != null && part.getCraftWay() != null && part.getCraftWay().contains("封接")){
yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
@@ -423,6 +423,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
yieldOrder.setReceiveUser(2038615120549822465L);
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder.setRoamNoNext( "");
if(StringUtils.isNotEmpty(mesRbtoso.getFirseq())){
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbtoso.getPrtno(),mesRbtoso.getFirseq());
@@ -477,6 +478,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setReceiveUser(2038615120549822465L);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder = updateYieldType(yieldOrder,mesRbWxpromotion.getPrtno(),mesRbWxpromotion.getFirseq());
/*List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbWxpromotion.getPrtno());
yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
@@ -539,6 +541,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setReceiveUser(2038615120549822465L);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder = updateYieldType(yieldOrder,mesRbSodelrecwx.getPrtno(),mesRbSodelrecwx.getFirseq());
/*List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelrecwx.getPrtno());
if(CollectionUtils.isNotEmpty(dsPartList)&&dsPartList.get(0).getCraftWay().contains("封接")){
@@ -604,6 +607,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setReceiveUser(2038615120549822465L);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder = updateYieldType(yieldOrder,mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq());
/*//从零件表中查询零件信息
List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelreczg.getPrtno());
@@ -675,6 +679,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setReceiveUser(2038615120549822465L);
yieldOrder.setPriorityAps(YieldOrderEnum.PRIORITY_APS_NORMAL.getCode());
yieldOrder.setPriorityErp(YieldOrderEnum.PRIORITY_ERP_NORMAL.getCode());
+ yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_NO.getCode());
yieldOrder.setRoamNoNext("");
if(StringUtils.isNotEmpty(mesRbPk.getFirseq())){
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPk.getPrtno(),mesRbPk.getFirseq());
diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java
index 720c1572..24a23fe2 100644
--- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java
+++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpYieldOrderServiceImpl.java
@@ -55,4 +55,9 @@ public class ErpYieldOrderServiceImpl implements IErpYieldOrderService {
paramMap.put("v_yo_qty", quota * poQty);
yieldOrderMapper.saveGlassCake(paramMap);
}
+
+ @Override
+ public String getChildRoamNoByPartCode(String partCode) {
+ return yieldOrderMapper.getChildRoamNoByPartCode(partCode);
+ }
}
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
index ac1ad44a..cb4d6acd 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
@@ -54,17 +54,15 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.desk.basic.feign.IWorkCenterClient;
import org.springblade.desk.basic.pojo.entity.TeamSet;
+import org.springblade.system.config.RoleConfig;
import org.springblade.system.excel.UserExcel;
import org.springblade.system.excel.UserImporter;
import org.springblade.system.pojo.entity.Post;
import org.springblade.system.pojo.entity.User;
-import org.springblade.system.pojo.vo.PostVO;
import org.springblade.system.pojo.vo.UserVO;
import org.springblade.system.service.IPostService;
import org.springblade.system.service.IUserExtService;
import org.springblade.system.service.IUserService;
-import org.springblade.system.config.RoleConfig;
-import org.springblade.system.wrapper.PostWrapper;
import org.springblade.system.wrapper.UserWrapper;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -208,8 +206,8 @@ public class UserController {
})
@ApiOperationSupport(order = 3)
@Operation(summary = "列表", description = "传入account和realName")
- public R> page(@Parameter(hidden = true) User user, Query query, Long deptId, BladeUser bladeUser) {
- IPage pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
+ public R> page(@Parameter(hidden = true) User user, Query query, Long deptId, BladeUser bladeUser, String ids) {
+ IPage pages = userService.selectUserPage(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()), ids);
return R.data(UserWrapper.build().pageVO(pages));
// IPage pages = userService.selectUserPageVo(Condition.getPage(query), user, deptId, (bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? StringPool.EMPTY : bladeUser.getTenantId()));
// return R.data(pages);
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.java b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.java
index 45e1e006..3a14eb63 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.java
@@ -51,7 +51,7 @@ public interface UserMapper extends BaseMapper {
* @param tenantId
* @return
*/
- List selectUserPage(IPage page, @Param("user") User user, @Param("deptIdList") List deptIdList, @Param("tenantId") String tenantId);
+ List selectUserPage(IPage page, @Param("user") User user, @Param("deptIdList") List deptIdList, @Param("tenantId") String tenantId,@Param("idList") List idList);
List selectUserPageVo(IPage page, @Param("user") User user, @Param("deptIdList") List deptIdList, @Param("tenantId") String tenantId);
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.xml b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.xml
index 0b730a5a..e8715ce0 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.xml
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserMapper.xml
@@ -103,6 +103,12 @@
)
+
+ and id in
+
+ #{item}
+
+
ORDER BY id
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserService.java
index dfdc8ff2..30115651 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserService.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserService.java
@@ -79,7 +79,7 @@ public interface IUserService extends BaseService {
* @param tenantId
* @return
*/
- IPage selectUserPage(IPage page, User user, Long deptId, String tenantId);
+ IPage selectUserPage(IPage page, User user, Long deptId, String tenantId,String ids);
IPage selectUserPageVo(IPage page, User user, Long deptId, String tenantId);
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserServiceImpl.java
index 095cd617..b6d8d204 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserServiceImpl.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserServiceImpl.java
@@ -28,10 +28,10 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.common.cache.CacheNames;
import org.springblade.common.constant.CommonConstant;
import org.springblade.common.constant.TenantConstant;
@@ -66,10 +66,8 @@ import org.springblade.system.wrapper.UserWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
@@ -187,9 +185,13 @@ public class UserServiceImpl extends BaseServiceImpl implement
}
@Override
- public IPage selectUserPage(IPage page, User user, Long deptId, String tenantId) {
+ public IPage selectUserPage(IPage page, User user, Long deptId, String tenantId,String ids) {
+ List idList = null;
+ if(StringUtils.isNotEmpty(ids)){
+ idList = Arrays.stream(ids.split(",")).map(String::trim).map(Long::valueOf).collect(Collectors.toList());
+ }
List deptIdList = SysCache.getDeptChildIds(deptId);
- return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId));
+ return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId,idList));
}
@Override