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} )} + + 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