烧结子件下达

liweidong
liweidong-hj 1 day ago
parent 73314f80fd
commit 1a1a38d36f
  1. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java
  2. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/enums/YieldOrderEnum.java
  3. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java
  4. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java
  5. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  6. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml
  7. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java
  8. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
  9. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java
  10. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  11. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  12. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  13. 81
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java

@ -514,6 +514,9 @@ public class YieldOrder extends BaseEntity {
@Schema(description = "原生产订单ID") @Schema(description = "原生产订单ID")
private Long oldYoId; private Long oldYoId;
@Schema(description = "一级工序名称状态")
private Integer firseqNameStatus;
@JsonSerialize(nullsUsing = NullSerializer.class) @JsonSerialize(nullsUsing = NullSerializer.class)
private Double plateThickness1; private Double plateThickness1;

@ -84,6 +84,13 @@ public enum YieldOrderEnum {
VALIDATION_RESULT_DELIVERY("交期冲突", 16005), VALIDATION_RESULT_DELIVERY("交期冲突", 16005),
VALIDATION_RESULT_LESS_MATERIAL("物料需求异常", 16006), VALIDATION_RESULT_LESS_MATERIAL("物料需求异常", 16006),
VALIDATION_RESULT_PASS("验证完成", 16007), VALIDATION_RESULT_PASS("验证完成", 16007),
/**
* 一级工序状态
*/
FIRSEQ_NAME_EXIST("存在",17001),
FIRSEQ_NAME_NOT_EXIST ("不存在",17002)
; ;
final String name; final String name;
final int code; final int code;

@ -155,4 +155,6 @@ public interface DsPartMapper extends BaseMapper<DsPartEntity> {
List<DsPartEntity> selectListPartByCodeLike(@Param("zPartCode") String zPartCode); List<DsPartEntity> selectListPartByCodeLike(@Param("zPartCode") String zPartCode);
List<DsPartSub> selectOldMesPartSubBySubCode(@Param("subCode") String subCode); List<DsPartSub> selectOldMesPartSubBySubCode(@Param("subCode") String subCode);
List<DsPartEntity> selectDsPartByPartCodeList(@Param("partCodeList") List<String> partCodeList);
} }

@ -72,4 +72,6 @@ public interface DsPartRelationMapper extends BaseMapper<DsPartRelationEntity> {
@Param("zPartIdList")List<Long> zPartIdList); @Param("zPartIdList")List<Long> zPartIdList);
DsPartRelationEntity selectByPartCodeAndSubCode(@Param("partCode") String parentPartCode,@Param("subCode") String subCode); DsPartRelationEntity selectByPartCodeAndSubCode(@Param("partCode") String parentPartCode,@Param("subCode") String subCode);
List<PartRelationEntity> selectDsPartRelationByPartIdList(@Param("partIdList") List<Long> partIdList);
} }

@ -419,6 +419,15 @@
src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE
FROM MJMES.DS_PART_SUB src where src.SUB_CODE = #{subCode} FROM MJMES.DS_PART_SUB src where src.SUB_CODE = #{subCode}
</select> </select>
<select id="selectDsPartByPartCodeList"
resultType="org.springblade.desk.dashboard.pojo.entity.DsPartEntity">
select * from DS_PART
where is_deleted = 0
and part_code in
<foreach collection="partCodeList" item="partCode" open="(" close=")" separator=",">
#{partCode}
</foreach>
</select>
</mapper> </mapper>

@ -85,6 +85,14 @@
and PART_CODE = #{partCode} and PART_CODE = #{partCode}
and CHILD_PART_CODE = #{subCode} and CHILD_PART_CODE = #{subCode}
</select> </select>
<select id="selectDsPartRelationByPartIdList"
resultType="org.springblade.scheduling.pojo.entity.PartRelationEntity">
select * from DS_PART_RELATION where is_deleted = 0
and PART_ID in
<foreach collection="partIdList" item="partId" open="(" close=")" separator=",">
#{partId}
</foreach>
</select>
</mapper> </mapper>

@ -86,4 +86,11 @@ public interface IDsPartRelationService extends BaseService<DsPartRelationEntity
* @return * @return
*/ */
DsPartRelationEntity selectByPartCodeAndSubCode(String partCode, String subCode); DsPartRelationEntity selectByPartCodeAndSubCode(String partCode, String subCode);
/**
* 根据零件号查询子件
* @param partIdList
* @return
*/
List<PartRelationEntity> selectDsPartRelationByPartIdList(List<Long> partIdList);
} }

@ -309,4 +309,11 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
* @return * @return
*/ */
List<DsPartSub> selectOldMesPartSubBySubCode(String subCode); List<DsPartSub> selectOldMesPartSubBySubCode(String subCode);
/**
* 根据零件号查询
* @param partCodeList
* @return
*/
List<DsPartEntity> selectDsPartByPartCodeList(List<String> partCodeList);
} }

@ -84,4 +84,9 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl<DsPartRelationMap
return partRelationMapper.selectByPartCodeAndSubCode(parentPartCode,subCode); return partRelationMapper.selectByPartCodeAndSubCode(parentPartCode,subCode);
} }
@Override
public List<PartRelationEntity> selectDsPartRelationByPartIdList(List<Long> partIdList) {
return partRelationMapper.selectDsPartRelationByPartIdList(partIdList);
}
} }

@ -936,6 +936,11 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
return dsPartMapper.selectOldMesPartSubBySubCode(subCode); return dsPartMapper.selectOldMesPartSubBySubCode(subCode);
} }
@Override
public List<DsPartEntity> selectDsPartByPartCodeList(List<String> partCodeList) {
return dsPartMapper.selectDsPartByPartCodeList(partCodeList);
}
/** /**
* 根据工艺获取工序ID列表支持返工工艺和正常工艺 * 根据工艺获取工序ID列表支持返工工艺和正常工艺
*/ */

@ -375,4 +375,10 @@ public class YieldOrderController extends BladeController {
public R createBlbYieldOrder(@RequestParam String partCode,@RequestParam Double qty,@RequestParam String memo) { public R createBlbYieldOrder(@RequestParam String partCode,@RequestParam Double qty,@RequestParam String memo) {
return R.data(yieldOrderService.createBlbYieldOrder(partCode,qty,memo)); return R.data(yieldOrderService.createBlbYieldOrder(partCode,qty,memo));
} }
@PostMapping("/subItemAssignment")
@Operation(summary = "子件下达", description = "")
public R subItemAssignment(@Parameter(description = "主键", required = true) @RequestParam String id) {
return R.data(yieldOrderService.subItemAssignment(id));
}
} }

@ -309,4 +309,11 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @return * @return
*/ */
List<YieldOrder> selectByFatherYoId(Long yieldOrderId); List<YieldOrder> selectByFatherYoId(Long yieldOrderId);
/**
* 下达子件
* @param id
* @return
*/
boolean subItemAssignment(String id);
} }

@ -1,5 +1,6 @@
package org.springblade.desk.order.service.impl; package org.springblade.desk.order.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@ -374,16 +375,18 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
this.updateById(yieldOrder); this.updateById(yieldOrder);
} }
//查询一级工序名称 //查询一级工序名称
String roamNoText = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo()); String firseqName = dsPartService.findNameByRoamNo(yieldOrder.getPartCode(), yieldOrder.getRoamNo());
if(StringUtils.isEmpty(roamNoText)){ if(StringUtils.isEmpty(firseqName)){
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode()); yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrder.setValidationTime(DateUtil.now()); yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("未查询一级工序名称"); yieldOrder.setValidationMomo("未查询一级工序名称");
this.updateById(yieldOrder); this.updateById(yieldOrder);
}else {
yieldOrder.setFirseqNameStatus(YieldOrderEnum.FIRSEQ_NAME_NOT_EXIST.getCode());
} }
// 验证烧结订单的b号描述,如果包含封接字样则验证子件,不包含则不验证 // 验证烧结订单的b号描述,如果包含封接字样则验证子件,不包含则不验证
if (roamNoText.contains(YieldOrderConst.ROAMNO_TEXT_FJ)) { if (firseqName.contains(YieldOrderConst.ROAMNO_TEXT_FJ)) {
DsPartEntity partEntity = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion()); DsPartEntity partEntity = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion());
// 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】 // 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】
if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){ if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){
@ -1820,6 +1823,78 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return baseMapper.selectByFatherYoId(yieldOrderId); return baseMapper.selectByFatherYoId(yieldOrderId);
} }
@Override
public boolean subItemAssignment(String yieldOrderId) {
// 查询需要下发的订单
YieldOrder yieldOrder = this.getById(yieldOrderId);
if (yieldOrder == null) {
throw new ServiceException("无下发订单信息");
}
// 检查一级工序状态
if (yieldOrder.getFirseqNameStatus().equals(YieldOrderEnum.FIRSEQ_NAME_NOT_EXIST.getCode())) {
throw new ServiceException("子件无法下发,一级工序名称不存在");
}
// 查询零件
DsPartEntity part = dsPartService.selectDsPartByPatCode(yieldOrder.getPartCode())
.stream()
.findFirst()
.orElseThrow(() -> new ServiceException("暂无零件信息"));
// 查询子件
List<DsPartRelationEntity> partRelationList = partRelationService.selectDsPartRelationByPartId(part.getId());
if (partRelationList.isEmpty()) {
throw new ServiceException("暂无子件信息");
}
// 获取所有子件编码
Set<String> childPartCodeSet = partRelationList.stream()
.map(DsPartRelationEntity::getChildPartCode)
.filter(Objects::nonNull)
.filter(code -> !code.isEmpty())
.collect(Collectors.toSet());
// 查询已生成的子件订单
List<YieldOrder> yieldOrderList = baseMapper.selectByFatherYoId(Long.valueOf(yieldOrderId));
// 获取已生成订单中的零件编码
Set<String> existingPartCodeSet = yieldOrderList.stream()
.filter(order -> order.getPartCode() != null)
.map(YieldOrder::getPartCode)
.collect(Collectors.toSet());
// 需要创建的子件编码 = 子件编码集合 - 已存在的订单编码
List<String> partSubCodeList = childPartCodeSet.stream()
.filter(code -> !existingPartCodeSet.contains(code))
.collect(Collectors.toList());
// 如果没有需要创建的子件,直接返回
if (partSubCodeList.isEmpty()) {
log.info("所有子件订单都已存在,无需创建");
return true;
}
// 批量查询子件零件信息
List<DsPartEntity> dsPartEntityList = dsPartService.selectDsPartByPartCodeList(partSubCodeList);
if (dsPartEntityList.isEmpty()) {
log.warn("未查询到子件零件信息,子件编码:{}", partSubCodeList);
return true;
}
// 创建子件订单
try {
createSubYieldOrder(yieldOrder, dsPartEntityList, true, AuthUtil.getUser().getUserId());
log.info("子件订单创建成功,父订单ID:{},创建子件数量:{}", yieldOrderId, dsPartEntityList.size());
} catch (BusinessException e) {
log.error("创建子件订单失败,父订单ID:{}", yieldOrderId, e);
throw new ServiceException("创建子件订单失败:" + e.getMessage());
}
return true;
}
/** /**
* @param codeType 0:订单号1流程卡号2批次号 * @param codeType 0:订单号1流程卡号2批次号
* @return String * @return String

Loading…
Cancel
Save