零件修改版本号规则

liweidong
liweidong-hj 1 week ago
parent 21fc81f5a9
commit ecc864c184
  1. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsPartRelationEntity.java
  2. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/entity/DsProcessMeasuringToolEntity.java
  3. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartRelationMapper.java
  4. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  5. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartRelationMapper.xml
  6. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartRelationService.java
  7. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartRelationServiceImpl.java
  8. 116
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsTaskingServiceImpl.java

@ -71,4 +71,12 @@ public class DsPartRelationEntity extends BaseEntity {
@Schema(description = "子件号")
private String childPartCode;
/**
* 定额
*/
@Schema(description = "定额")
private Double quota;
}

@ -86,7 +86,7 @@ public class DsProcessMeasuringToolEntity extends BaseEntity {
* 图纸尺寸
*/
@Schema(description = "图纸尺寸")
private String drawingSize;
private String ruleSize;
/**
* 备注

@ -33,6 +33,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
import java.util.List;
/**
@ -68,4 +70,6 @@ public interface DsPartRelationMapper extends BaseMapper<DsPartRelationEntity> {
@Param("bPartVersion")String bPartVersion,
@Param("zPartVersion") String zPartVersion,
@Param("zPartIdList")List<Long> zPartIdList);
PartRelationEntity selectByPartCodeAndSubCode(@Param("partCode") String parentPartCode,@Param("subCode") String subCode);
}

@ -394,7 +394,7 @@
src.PART_CODE, src.SUB_CODE, src.SUB_NAME, src.QUOTA,
src.SUB_TYPE, src.PRODUCT_TYPE, src.AREA, src.CONFIG_NO, src.PLATE,
src.MATERIAL, src.PLATE_CODE, src.SIN_TER_TYPE
FROM MJMES.DS_PART_SUB src where src.PART_CODE = #{partCode}
FROM TOOL_MES.DS_PART_SUB src where src.PART_CODE = #{partCode}
</select>
<select id="selectListPartByCodeLike" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartEntity">
SELECT

@ -79,6 +79,12 @@
</foreach>
</if>
</select>
<select id="selectByPartCodeAndSubCode"
resultType="org.springblade.scheduling.pojo.entity.PartRelationEntity">
select * from DS_PART_RELATION where is_deleted = 0
and PART_CODE = #{partCode}
and CHILD_PART_CODE = #{subCode}
</select>
</mapper>

@ -32,6 +32,8 @@ import org.springblade.desk.dashboard.pojo.vo.DsPartRelationVO;
import org.springblade.desk.dashboard.excel.DsPartRelationExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
import java.util.List;
/**
@ -76,4 +78,12 @@ public interface IDsPartRelationService extends BaseService<DsPartRelationEntity
*/
List<DsPartBomVO> selectDsPartRelationByPartCodeAndChildPartCode
(String bPartCode, String zPartCode, String bPartVersion, String zPartVersion,List<Long> zPartId);
/**
* 根据部件和子件查询
* @param parentPartCode
* @param subCode
* @return
*/
PartRelationEntity selectByPartCodeAndSubCode(String parentPartCode, String subCode);
}

@ -32,6 +32,7 @@ import org.springblade.desk.dashboard.pojo.vo.DsPartRelationVO;
import org.springblade.desk.dashboard.excel.DsPartRelationExcel;
import org.springblade.desk.dashboard.mapper.DsPartRelationMapper;
import org.springblade.desk.dashboard.service.IDsPartRelationService;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -78,4 +79,9 @@ public class DsPartRelationServiceImpl extends BaseServiceImpl<DsPartRelationMap
return partRelationMapper.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode,bPartVersion,zPartVersion,zPartIdList);
}
@Override
public PartRelationEntity selectByPartCodeAndSubCode(String parentPartCode, String subCode) {
return partRelationMapper.selectByPartCodeAndSubCode(parentPartCode,subCode);
}
}

@ -49,6 +49,8 @@ import org.springblade.desk.dashboard.pojo.dto.DsTaskingDTO;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.MeasurementRecordsEntity;
import org.springblade.desk.device.service.IMeasurementRecordsService;
import org.springblade.desk.logistics.pojo.vo.TaskVO;
import org.springblade.desk.order.pojo.entity.MoldDemand;
import org.springblade.desk.order.pojo.entity.YieldOrder;
@ -60,6 +62,7 @@ import org.springblade.desk.quality.pojo.dto.PpmReportDetailDTO;
import org.springblade.desk.quality.pojo.request.ReviewSheetErpSearch;
import org.springblade.desk.quality.service.IReviewSheetService;
import org.springblade.erpdata.feign.IErpDataReworkTaskClient;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
import org.springblade.scheduling.pojo.entity.WorkOrderEntity;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springblade.system.feign.IUserClient;
@ -171,6 +174,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
@Autowired
ILocallyPlatedPartService locallyPlatedPartService;
@Autowired
IMeasurementRecordsService measurementRecordsService;
@Override
public IPage<DsTaskingVO> selectAssignList(IPage<DsTaskingVO> page, DsTaskingVO dsTasking) {
List<DsTaskingVO> dsTaskingVOS = baseMapper.selectDsTaskingPage(page, dsTasking);
@ -1892,7 +1898,6 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
* 递归处理零件及其子件
* 核心逻辑处理基础信息 -> 生成版本号 -> 创建新零件 -> 创建版本记录 -> 同步工艺 -> 处理子件
*/
// 同时补充修正 processPartRecursively 中对空数据的兼容逻辑
private DsPartEntity processPartRecursively(DsPartEntity oldMesPart) {
String partCode = oldMesPart.getPartCode();
Long oldMesPartId = oldMesPart.getId();
@ -1906,7 +1911,8 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
}
// 2. 生成新版本号(线程安全)
String newVersion = generateNewVersion(partCode);
// String newVersion = generateNewVersion(partCode);
String newVersion = "1";
log.info("零件 {} 生成新版本号:{}", partCode, newVersion);
// 3. 创建新零件(兼容空数据)
@ -1954,6 +1960,10 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
for (DsPartSub subPartInfo : subPartList) {
String subCode = subPartInfo.getSubCode();
log.info("开始处理子件:{}", subCode);
PartRelationEntity partRelation = partRelationService.selectByPartCodeAndSubCode(parentPartCode,subCode);
if(null != partRelation){
continue;
}
try {
// 1. 处理子件数据进行赋值
@ -1990,7 +2000,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
// 3. 建立父子关联关系
if (!createPartRelation(parentNewPart.getId(), parentNewPart.getPartCode(),
newSubPart.getId(), newSubPart.getPartCode())) {
newSubPart.getId(), newSubPart.getPartCode(),subPartInfo.getQuota())) {
log.error("建立父子关联关系失败:父{},子{},跳过该子件关联", parentNewPart.getPartCode(), subCode);
continue;
}
@ -2028,6 +2038,11 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
log.info("零件 {} 有 {} 个工艺待同步", newPart.getPartCode(), oldCraftList.size());
for (DsCraftEntity oldCraft : oldCraftList) {
DsCraftEntity partCraft = craftService.getPartCraft(newPart.getId(), oldCraft.getRank(),oldCraft.getRoamNo());
if(null != partCraft){
continue;
}
Long oldMesCraftId = oldCraft.getId();
// 重置工艺ID 不使用老mesID
oldCraft.setId(null);
@ -2083,6 +2098,9 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
processMeasuringToolList.forEach(item -> {
item.setId(null);
item.setProcessId(dsProcessEntity.getId());
MeasurementRecordsEntity measurementRecords = measurementRecordsService.getById(item.getMtId());
item.setToolInfo(measurementRecords.getMcName());
item.setToolSize(measurementRecords.getNorms());
});
if(!CollectionUtils.isEmpty(processMeasuringToolList)){
boolean measuringToolSaveBatch = processMeasuringToolService.saveBatch(processMeasuringToolList);
@ -2151,52 +2169,83 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
* 创建新零件
*/
private DsPartEntity createNewPart(DsPartEntity oldMesPart, String newVersion) {
try {
Long oldId = oldMesPart.getId();
oldMesPart.setId(null);
boolean saved = partService.save(oldMesPart);
if (!saved) {
log.error("零件新增失败:{}", oldMesPart.getPartCode());
return null;
}
// 1. 根据零件编码 + 新版本号查询是否已存在
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(oldMesPart.getPartCode(), newVersion);
DsPartEntity newPart = partService.getById(oldMesPart.getId());
log.info("零件新增成功,oldId:{} -> newId:{}", oldId, newPart.getId());
if (null == partEntity) {
try {
//查询老mes零件
List<DsPartEntity> dsPartEntityList = taskingMapper.getOldMesAllPart(null,null,Arrays.asList(oldMesPart.getPartCode()));
if(!CollectionUtils.isEmpty(dsPartEntityList)){
DsPartEntity oldMesPartEntity = dsPartEntityList.get(0);
Long oldId = oldMesPartEntity.getId();
oldMesPartEntity.setId(null);
boolean saved = partService.save(oldMesPartEntity);
if (!saved) {
log.error("零件新增失败:{}", oldMesPartEntity.getPartCode());
return null;
}
return newPart;
} catch (Exception e) {
log.error("创建新零件异常:{}", oldMesPart.getPartCode(), e);
return null;
DsPartEntity newPart = partService.getById(oldMesPartEntity.getId());
log.info("零件新增成功,oldId:{} -> newId:{}", oldId, oldMesPartEntity.getId());
return newPart;
}else {
Long oldId = oldMesPart.getId();
oldMesPart.setId(null);
boolean saved = partService.save(oldMesPart);
if (!saved) {
log.error("零件新增失败:{}", oldMesPart.getPartCode());
return null;
}
DsPartEntity newPart = partService.getById(oldMesPart.getId());
log.info("零件新增成功,oldId:{} -> newId:{}", oldId, oldMesPart.getId());
return newPart;
}
} catch (Exception e) {
log.error("创建新零件异常:{}", oldMesPart.getPartCode(), e);
return null;
}
}
return partEntity;
}
/**
* 创建版本号记录
*/
private boolean createPartVersion(Long partId, String partCode, String version) {
try {
DsPartVersionEntity partVersion = new DsPartVersionEntity();
partVersion.setPartId(partId);
partVersion.setPartCode(partCode);
partVersion.setPartVersion(version);
boolean saved = partVersionService.save(partVersion);
if (saved) {
log.info("版本号记录创建成功:{} -> 版本{}", partCode, version);
} else {
log.error("版本号记录创建失败:{} -> 版本{}", partCode, version);
// 1. 根据零件编码 + 新版本号查询是否已存在
DsPartEntity partEntity = partService.selectDsPartByPatCodeAndVersion(partCode, version);
if(partEntity == null){
try {
DsPartVersionEntity partVersion = new DsPartVersionEntity();
partVersion.setPartId(partId);
partVersion.setPartCode(partCode);
partVersion.setPartVersion(version);
boolean saved = partVersionService.save(partVersion);
if (saved) {
log.info("版本号记录创建成功:{} -> 版本{}", partCode, version);
} else {
log.error("版本号记录创建失败:{} -> 版本{}", partCode, version);
}
return saved;
} catch (Exception e) {
log.error("创建版本号记录异常:{}", partCode, e);
return false;
}
return saved;
} catch (Exception e) {
log.error("创建版本号记录异常:{}", partCode, e);
return false;
}{
log.info("版本号已存在,无需新增:{} -> 版本{}", partCode, version);
return true;
}
}
/**
* 创建零件-子件关联关系
*/
private boolean createPartRelation(Long partId, String partCode, Long childPartId, String childPartCode) {
private boolean createPartRelation(Long partId, String partCode, Long childPartId, String childPartCode,Double quota) {
try {
DsPartRelationEntity relation = new DsPartRelationEntity();
relation.setPartId(partId);
@ -2206,6 +2255,7 @@ public class DsTaskingServiceImpl extends BaseServiceImpl<DsTaskingMapper, DsTas
relation.setCreateTime(new Date());
relation.setStatus(1);
relation.setIsDeleted(0);
relation.setQuota(quota);
boolean saved = partRelationService.save(relation);
if (saved) {

Loading…
Cancel
Save