生成订单计算镀层物料需求方法 开发人:张高

liweidong
DESKTOP-10680M4\Admin 1 month ago
parent 413db2e5a1
commit 2d8eea3584
  1. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CoatingThicknessMapper.java
  2. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/CoatingThicknessMapper.xml
  3. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/MaterialQuotaMapper.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/MaterialQuotaMapper.xml
  5. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICoatingThicknessService.java
  6. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IMaterialQuotaService.java
  7. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CoatingThicknessServiceImpl.java
  8. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/MaterialQuotaServiceImpl.java
  9. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsPlatingMapper.java
  10. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/CraftMapper.xml
  11. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsCraftMapper.java
  12. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PlatingMapper.xml
  13. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsPlatingService.java
  14. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsCraftService.java
  15. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
  16. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsPlatingServiceImpl.java
  17. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsCraftServiceImpl.java
  18. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  19. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/PlateGoodsRecordController.java
  20. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IPlateGoodsRecordService.java
  21. 185
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java

@ -37,4 +37,13 @@ public interface CoatingThicknessMapper extends BaseMapper<CoatingThickness> {
* @return List<CoatingThicknessExcel> * @return List<CoatingThicknessExcel>
*/ */
List<CoatingThicknessExcel> exportCoatingThickness(@Param("ew") Wrapper<CoatingThickness> queryWrapper); List<CoatingThicknessExcel> exportCoatingThickness(@Param("ew") Wrapper<CoatingThickness> queryWrapper);
/**
* 根据镀层代码质量等级查询镀层厚度对应表
* @param matCode
* @param productIdent
* @param start_f21e8 是否是21E8-210开头的零件号
* @return
*/
CoatingThickness queryCoatingThickness(@Param("matCode") String matCode, @Param("productIdent") String productIdent, @Param("start_f21e8") int start_f21e8);
} }

@ -20,4 +20,9 @@
<select id="exportCoatingThickness" resultType="org.springblade.desk.basic.excel.CoatingThicknessExcel"> <select id="exportCoatingThickness" resultType="org.springblade.desk.basic.excel.CoatingThicknessExcel">
SELECT * FROM BA_COATING_THICKNESS ${ew.customSqlSegment} SELECT * FROM BA_COATING_THICKNESS ${ew.customSqlSegment}
</select> </select>
<select id="queryCoatingThickness"
resultType="org.springblade.desk.basic.pojo.entity.CoatingThickness">
SELECT * FROM BS_COATING_THICKNESS WHERE THICKNESS_CODE=#{matCode} AND LEVEL_NUM=#{productIdent} and START_F21E8=#{start_f21e8} and ROWNUM = 1
</select>
</mapper> </mapper>

@ -37,4 +37,12 @@ public interface MaterialQuotaMapper extends BaseMapper<MaterialQuota> {
* @return List<MaterialQuotaExcel> * @return List<MaterialQuotaExcel>
*/ */
List<MaterialQuotaExcel> exportMaterialQuota(@Param("ew") Wrapper<MaterialQuota> queryWrapper); List<MaterialQuotaExcel> exportMaterialQuota(@Param("ew") Wrapper<MaterialQuota> queryWrapper);
/**
* 根据镀层厚度工艺能力查询
* @param thickness
* @param dsProcessId
* @return
*/
MaterialQuota queryMaterialQuota(@Param("thickness")Long thickness,@Param("dsProcessId") Long dsProcessId);
} }

@ -22,4 +22,8 @@
<select id="exportMaterialQuota" resultType="org.springblade.desk.basic.excel.MaterialQuotaExcel"> <select id="exportMaterialQuota" resultType="org.springblade.desk.basic.excel.MaterialQuotaExcel">
SELECT * FROM BA_MATERIAL_QUOTA ${ew.customSqlSegment} SELECT * FROM BA_MATERIAL_QUOTA ${ew.customSqlSegment}
</select> </select>
<select id="queryMaterialQuota"
resultType="org.springblade.desk.basic.pojo.entity.MaterialQuota">
SELECT * FROM BS_MATERIAL_QUOTA WHERE THICKNESS=#{thickness} AND PROCESS_ABILITY_ID=#{dsProcessId} AND ROWNUM = 1
</select>
</mapper> </mapper>

@ -41,4 +41,13 @@ public interface ICoatingThicknessService extends BaseService<CoatingThickness>
* @param vo * @param vo
*/ */
void setVOValue(CoatingThicknessVO vo); void setVOValue(CoatingThicknessVO vo);
/**
* 根据镀层代码质量等级查询镀层厚度对应表
* @param matCode
* @param productIdent
* @param start_f21e8 是否是21E8-210开头的零件号
* @return
*/
CoatingThickness queryCoatingThickness(String matCode,String productIdent,int start_f21e8);
} }

@ -41,4 +41,12 @@ public interface IMaterialQuotaService extends BaseService<MaterialQuota> {
* @param vo * @param vo
*/ */
void setVOValue(MaterialQuotaVO vo); void setVOValue(MaterialQuotaVO vo);
/**
* 根据镀层厚度工艺能力查询
* @param thickness
* @param dsProcessId
* @return
*/
MaterialQuota queryMaterialQuota(Long thickness, Long dsProcessId);
} }

@ -58,4 +58,15 @@ public class CoatingThicknessServiceImpl extends BaseServiceImpl<CoatingThicknes
public void setVOValue(CoatingThicknessVO vo) { public void setVOValue(CoatingThicknessVO vo) {
} }
/**
* 根据镀层代码质量等级查询镀层厚度对应表
* @param matCode
* @param productIdent
* @param start_f21e8 是否是21E8-210开头的零件号
* @return
*/
public CoatingThickness queryCoatingThickness(String matCode,String productIdent,int start_f21e8){
return baseMapper.queryCoatingThickness(matCode,productIdent,start_f21e8);
}
} }

@ -58,4 +58,15 @@ public class MaterialQuotaServiceImpl extends BaseServiceImpl<MaterialQuotaMappe
public void setVOValue(MaterialQuotaVO vo) { public void setVOValue(MaterialQuotaVO vo) {
} }
/**
* 根据镀层厚度工艺能力查询
* @param thickness
* @param dsProcessId
* @return
*/
@Override
public MaterialQuota queryMaterialQuota(Long thickness, Long dsProcessId){
return baseMapper.queryMaterialQuota(thickness,dsProcessId);
}
} }

@ -66,4 +66,10 @@ public interface BsPlatingMapper extends BaseMapper<BsPlatingEntity> {
* @return * @return
*/ */
BsPlatingEntity selectBsPlatingByPlate(@Param("plate")String plate); BsPlatingEntity selectBsPlatingByPlate(@Param("plate")String plate);
/**
* 根据配置码查询镀种信息
* @param configNo
* @return
*/
BsPlatingEntity selectBsPlatingConfigNo(@Param("configNo")String configNo);
} }

@ -79,6 +79,8 @@
and PART_ID = #{partId} and PART_ID = #{partId}
and REWORK_ORDER = #{changeNo} and REWORK_ORDER = #{changeNo}
</select> </select>
<select id="selectDsCraftByPartCodeAndVersion" resultType="org.springblade.desk.dashboard.pojo.entity.DsCraftEntity">
SELECT * FROM DS_CRAFT WHERE PART_ID=#{partCode} AND PART_VERSIONS=#{partVersion} and ROWNUM = 1
</select>
</mapper> </mapper>

@ -74,5 +74,11 @@ public interface DsCraftMapper extends BaseMapper<DsCraftEntity> {
DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank); DsCraftEntity getPartCraft(@Param("partId")Long partId, @Param("rank")String rank);
DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo); DsCraftEntity getReworkCraft(@Param("partId")Long partId,@Param("changeNo") String changeNo);
/**
* 根据零件号零件版本查询
* @param partCode
* @param partVersion
* @return
*/
DsCraftEntity selectDsCraftByPartCodeAndVersion(@Param("partCode")Long partCode,@Param("partVersion")String partVersion);
} }

@ -43,4 +43,10 @@
select * from BS_PLATING where PLATE= #{plate} and ROWNUM = 1 select * from BS_PLATING where PLATE= #{plate} and ROWNUM = 1
</select> </select>
<select id="selectBsPlatingConfigNo"
resultType="org.springblade.desk.dashboard.pojo.entity.BsPlatingEntity">
select * from BS_PLATING where config_no= #{configNo} and ROWNUM = 1
</select>
</mapper> </mapper>

@ -64,4 +64,11 @@ public interface IBsPlatingService extends BaseService<BsPlatingEntity> {
* @return * @return
*/ */
BsPlatingEntity selectBsPlatingByPlate(String plate); BsPlatingEntity selectBsPlatingByPlate(String plate);
/**
* 根据配置码查询镀种信息
* @param configNo
* @return
*/
BsPlatingEntity selectBsPlatingConfigNo(String configNo);
} }

@ -176,4 +176,12 @@ public interface IDsCraftService extends BaseService<DsCraftEntity> {
* @return * @return
*/ */
boolean craftBatchRemoval(String id); boolean craftBatchRemoval(String id);
/**
* 根据零件号零件版本查询
* @param partCode
* @param partVersion
* @return
*/
DsCraftEntity selectDsCraftByPartCodeAndVersion(Long partCode,String partVersion);
} }

@ -213,4 +213,11 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
// List<DsPartTreeVO> getSimpleTree(String partCode); // List<DsPartTreeVO> getSimpleTree(String partCode);
/**
* 根据零件号查询零件
* @param partCode
* @return
*/
DsPartEntity selectDsPartByPatCode(String partCode);
} }

@ -69,5 +69,14 @@ public class BsPlatingServiceImpl extends BaseServiceImpl<BsPlatingMapper, BsPla
public BsPlatingEntity selectBsPlatingByPlate(String plate) { public BsPlatingEntity selectBsPlatingByPlate(String plate) {
return bsPlatingMapper.selectBsPlatingByPlate(plate); return bsPlatingMapper.selectBsPlatingByPlate(plate);
} }
/**
* 根据配置码查询镀种信息
* @param configNo
* @return
*/
@Override
public BsPlatingEntity selectBsPlatingConfigNo(String configNo){
return bsPlatingMapper.selectBsPlatingConfigNo(configNo);
}
} }

@ -340,4 +340,15 @@ public class DsCraftServiceImpl extends BaseServiceImpl<DsCraftMapper, DsCraftEn
return results; return results;
} }
/**
* 根据零件号零件版本查询
* @param partCode
* @param partVersion
* @return
*/
@Override
public DsCraftEntity selectDsCraftByPartCodeAndVersion(Long partCode,String partVersion){
return craftMapper.selectDsCraftByPartCodeAndVersion(partCode,partVersion);
}
} }

@ -89,38 +89,38 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
public IPage<DsPartVO> selectDsPartPage(IPage<DsPartVO> page, DsPartVO dsPart) { public IPage<DsPartVO> selectDsPartPage(IPage<DsPartVO> page, DsPartVO dsPart) {
List<Long> partIds = null; List<Long> partIds = null;
if(null != dsPart.getProjectCode()){ if (null != dsPart.getProjectCode()) {
//查询工序项目 //查询工序项目
List<DsProcessProjectEntity> processProjectEntities = processProjectService.selectDsProcessProjectByProcessCode(dsPart.getProjectCode()); List<DsProcessProjectEntity> processProjectEntities = processProjectService.selectDsProcessProjectByProcessCode(dsPart.getProjectCode());
if(!CollectionUtils.isEmpty(processProjectEntities)){ if (!CollectionUtils.isEmpty(processProjectEntities)) {
List<Long> processIds = processProjectEntities.stream().map(DsProcessProjectEntity::getProcessId).collect(Collectors.toList()); List<Long> processIds = processProjectEntities.stream().map(DsProcessProjectEntity::getProcessId).collect(Collectors.toList());
//查询零件工艺工序信息 //查询零件工艺工序信息
List<DsProcessEntity> processList = processService.selectDsProcessByIds(processIds); List<DsProcessEntity> processList = processService.selectDsProcessByIds(processIds);
if(!CollectionUtils.isEmpty(processList)){ if (!CollectionUtils.isEmpty(processList)) {
List<Long> craftIds = processList.stream().map(DsProcessEntity::getCraftId).collect(Collectors.toList()); List<Long> craftIds = processList.stream().map(DsProcessEntity::getCraftId).collect(Collectors.toList());
List<DsCraftEntity> craftList = craftService.selectDsCraftByIds(craftIds); List<DsCraftEntity> craftList = craftService.selectDsCraftByIds(craftIds);
if(!CollectionUtils.isEmpty(craftList)){ if (!CollectionUtils.isEmpty(craftList)) {
partIds = craftList.stream().map(DsCraftEntity::getPartId).collect(Collectors.toList()); partIds = craftList.stream().map(DsCraftEntity::getPartId).collect(Collectors.toList());
} }
} }
} }
} }
if(null != partIds){ if (null != partIds) {
dsPart.setPartIds(partIds); dsPart.setPartIds(partIds);
} }
List<DsPartVO> dsPartVOS = baseMapper.selectDsPartPage(page, dsPart); List<DsPartVO> dsPartVOS = baseMapper.selectDsPartPage(page, dsPart);
if(!CollectionUtils.isEmpty(dsPartVOS)){ if (!CollectionUtils.isEmpty(dsPartVOS)) {
for (DsPartVO dsPartVO : dsPartVOS) { for (DsPartVO dsPartVO : dsPartVOS) {
dsPartVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVO.getUpdateUser())).getData().getUser().getName()); dsPartVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVO.getUpdateUser())).getData().getUser().getName());
String isSintering = dsPartVO.getIsSintering(); String isSintering = dsPartVO.getIsSintering();
if(TaskingConstant.IS_SINTERING.equals(isSintering)){ if (TaskingConstant.IS_SINTERING.equals(isSintering)) {
//查询子件信息 //查询子件信息
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(dsPartVO.getId()); List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(dsPartVO.getId());
//获取所有子件ID //获取所有子件ID
List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList()); List<Long> idList = partRelationEntityList.stream().map(DsPartRelationEntity::getChildPartId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(idList)){ if (!CollectionUtils.isEmpty(idList)) {
List<DsPartVersionVO> dsPartEntityList = dsPartMapper.selectDsPartVersionByIds(idList); List<DsPartVersionVO> dsPartEntityList = dsPartMapper.selectDsPartVersionByIds(idList);
for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) { for (DsPartVersionVO dsPartVersionVO : dsPartEntityList) {
dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName()); dsPartVersionVO.setUpdateUserStr(userClient.userInfo(Func.toLong(dsPartVersionVO.getUpdateUser())).getData().getUser().getName());
@ -149,9 +149,9 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
} }
@Override @Override
public DsPartEntity selectDsPartByPatCodeAndVersion(String partCode,String version) { public DsPartEntity selectDsPartByPatCodeAndVersion(String partCode, String version) {
//查询最新版本号 对应的零件 //查询最新版本号 对应的零件
if(StringUtils.isEmpty(version)){ if (StringUtils.isEmpty(version)) {
List<DsPartVersionEntity> partVersionEntityList = partVersionService.selectByPartCode(partCode); List<DsPartVersionEntity> partVersionEntityList = partVersionService.selectByPartCode(partCode);
Optional<DsPartVersionEntity> maxEntity = partVersionEntityList.stream() Optional<DsPartVersionEntity> maxEntity = partVersionEntityList.stream()
.filter(entity -> entity.getPartVersion() != null) .filter(entity -> entity.getPartVersion() != null)
@ -164,15 +164,15 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
} }
} }
DsPartEntity part = dsPartMapper.selectByPartCodeAndVersion(partCode,version); DsPartEntity part = dsPartMapper.selectByPartCodeAndVersion(partCode, version);
return part; return part;
} }
@Override @Override
public List<DsPartEntity> selectDsPartByPatCode(String partCode, Integer sinTerType) { public List<DsPartEntity> selectDsPartByPatCode(String partCode, Integer sinTerType) {
LambdaQueryWrapper<DsPartEntity> queryWrapper = Wrappers.lambdaQuery(DsPartEntity.class) LambdaQueryWrapper<DsPartEntity> queryWrapper = Wrappers.lambdaQuery(DsPartEntity.class)
.eq(DsPartEntity::getPartCode, partCode); .eq(DsPartEntity::getPartCode, partCode);
if (Func.isNotEmpty(sinTerType)) { if (Func.isNotEmpty(sinTerType)) {
queryWrapper.eq(DsPartEntity::getSinTerType, sinTerType); queryWrapper.eq(DsPartEntity::getSinTerType, sinTerType);
@ -194,7 +194,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// 查询零件信息 // 查询零件信息
Date startDate = DateUtils.getPreviousDayStartDate(1); Date startDate = DateUtils.getPreviousDayStartDate(1);
Date endDate = DateUtils.getPreviousDayEndDate(1); Date endDate = DateUtils.getPreviousDayEndDate(1);
List<DsPartEntity> partList = dsPartMapper.selectPartByDate(startDate,endDate); List<DsPartEntity> partList = dsPartMapper.selectPartByDate(startDate, endDate);
return true; return true;
@ -208,7 +208,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// 2. 加三天 // 2. 加三天
LocalDate futureDate = currentDate.plusDays(TaskingConstant.PART_EARLY_WARNING); LocalDate futureDate = currentDate.plusDays(TaskingConstant.PART_EARLY_WARNING);
//查询即将过期的零件信息 //查询即将过期的零件信息
List<DsPartEntity> dsPartEntityList = dsPartMapper.selectDsPartLoseEfficacy(currentDate,futureDate); List<DsPartEntity> dsPartEntityList = dsPartMapper.selectDsPartLoseEfficacy(currentDate, futureDate);
for (DsPartEntity partEntity : dsPartEntityList) { for (DsPartEntity partEntity : dsPartEntityList) {
//获取工艺员 //获取工艺员
String technician = partEntity.getTechnician(); String technician = partEntity.getTechnician();
@ -229,7 +229,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Override @Override
public boolean updateNextDueByIds(String nextDue, List<Long> Ids) { public boolean updateNextDueByIds(String nextDue, List<Long> Ids) {
return dsPartMapper.updateNextDueByIds(nextDue,Ids); return dsPartMapper.updateNextDueByIds(nextDue, Ids);
} }
@ -245,7 +245,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// 格式化输出 // 格式化输出
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<DsCraftExpireVO> expireVOList = dsPartMapper.selectDsPartByNextDue(currentDate,futureDate); List<DsCraftExpireVO> expireVOList = dsPartMapper.selectDsPartByNextDue(currentDate, futureDate);
return expireVOList; return expireVOList;
} }
@ -253,7 +253,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Override @Override
public boolean updateNextDueByIds(String nextDue, String ids) { public boolean updateNextDueByIds(String nextDue, String ids) {
List<DsPartEntity> partEntityList = dsPartMapper.selectDsPartByIds(Func.toLongList(ids)); List<DsPartEntity> partEntityList = dsPartMapper.selectDsPartByIds(Func.toLongList(ids));
if(CollectionUtils.isEmpty(partEntityList)){ if (CollectionUtils.isEmpty(partEntityList)) {
throw new NullPointerException("零件信息为空"); throw new NullPointerException("零件信息为空");
} }
@ -263,8 +263,8 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
Date date1 = formatter.parse(nextDue); Date date1 = formatter.parse(nextDue);
Date date2 = partEntity.getNextDue(); Date date2 = partEntity.getNextDue();
int num = compareDateOnly(date1, date2); int num = compareDateOnly(date1, date2);
if(num<=0){ if (num <= 0) {
throw new ServiceException(partEntity.getPartCode()+"到期日期错误 :小于之前到期日期"); throw new ServiceException(partEntity.getPartCode() + "到期日期错误 :小于之前到期日期");
} }
} catch (ParseException e) { } catch (ParseException e) {
@ -283,12 +283,12 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Override @Override
public List<DsPartBomVO> sinteringPart(String bPartCode, String zPartCode) { public List<DsPartBomVO> sinteringPart(String bPartCode, String zPartCode) {
if(!StringUtils.isEmpty(bPartCode) && !StringUtils.isEmpty(zPartCode)){ if (!StringUtils.isEmpty(bPartCode) && !StringUtils.isEmpty(zPartCode)) {
return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode,zPartCode); return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(bPartCode, zPartCode);
} }
if(!StringUtils.isEmpty(zPartCode)){ if (!StringUtils.isEmpty(zPartCode)) {
return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null,zPartCode); return partRelationService.selectDsPartRelationByPartCodeAndChildPartCode(null, zPartCode);
} }
return new ArrayList<>(); return new ArrayList<>();
@ -310,12 +310,12 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
@Override @Override
public boolean updateDsPart(DsPartEntity dsPart, List<DsPartEntity> zPartList) { public boolean updateDsPart(DsPartEntity dsPart, List<DsPartEntity> zPartList) {
DsPartEntity partEntity = dsPartMapper.selectDsPartByPartIdAndPartCode(dsPart.getId(),dsPart.getPartCode()); DsPartEntity partEntity = dsPartMapper.selectDsPartByPartIdAndPartCode(dsPart.getId(), dsPart.getPartCode());
if(null == partEntity){ if (null == partEntity) {
throw new ServiceException("零件ID与零件号有误"); throw new ServiceException("零件ID与零件号有误");
} }
Long userId = AuthUtil.getUser().getUserId(); Long userId = AuthUtil.getUser().getUserId();
if(null != dsPart.getExpirationPeriod()){ if (null != dsPart.getExpirationPeriod()) {
//到期时间 //到期时间
Date futureDate = addDaysToCurrentDate(dsPart.getExpirationPeriod().intValue()); Date futureDate = addDaysToCurrentDate(dsPart.getExpirationPeriod().intValue());
dsPart.setNextDue(futureDate); dsPart.setNextDue(futureDate);
@ -325,27 +325,26 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
dsPart.setPfStatus(TaskingConstant.STATUS_NEW); dsPart.setPfStatus(TaskingConstant.STATUS_NEW);
updateById(dsPart); updateById(dsPart);
if (!TaskingConstant.IS_SINTERING.equals(dsPart.getIsSintering())) { if (!TaskingConstant.IS_SINTERING.equals(dsPart.getIsSintering())) {
if((org.apache.commons.lang3.StringUtils.isNotBlank(dsPart.getCraftWay()) && dsPart.getCraftWay().contains("4"))) { if ((org.apache.commons.lang3.StringUtils.isNotBlank(dsPart.getCraftWay()) && dsPart.getCraftWay().contains("4"))) {
getErpDataPartClient().sendingPartGiveErp(dsPart); getErpDataPartClient().sendingPartGiveErp(dsPart);
} }
} }
if(!CollectionUtils.isEmpty(zPartList)){ if (!CollectionUtils.isEmpty(zPartList)) {
updateBatchById(zPartList); updateBatchById(zPartList);
} }
return true; return true;
} }
@Override @Override
public DsPartSynthesisVO detail(String partCode, String partVersion) { public DsPartSynthesisVO detail(String partCode, String partVersion) {
DsPartVersionEntity partVersionEntity = partVersionService.selectByPartCodeAndPartVersion(partCode,partVersion); DsPartVersionEntity partVersionEntity = partVersionService.selectByPartCodeAndPartVersion(partCode, partVersion);
//零件信息 //零件信息
DsPartEntity partEntity = dsPartMapper.selectById(partVersionEntity.getPartId()); DsPartEntity partEntity = dsPartMapper.selectById(partVersionEntity.getPartId());
DsPartSynthesisVO dsPartSynthesisVO = new DsPartSynthesisVO(); DsPartSynthesisVO dsPartSynthesisVO = new DsPartSynthesisVO();
//查询子件信息 //查询子件信息
if(TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())){ if (TaskingConstant.IS_SINTERING.equals(partEntity.getIsSintering())) {
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId());
List<Long> idList = partRelationEntityList.stream() List<Long> idList = partRelationEntityList.stream()
.map(DsPartRelationEntity::getChildPartId) .map(DsPartRelationEntity::getChildPartId)
@ -474,11 +473,11 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
public int compareDateOnly(Date date1, Date date2) { public int compareDateOnly(Date date1, Date date2) {
LocalDate localDate1 = date1.toInstant() LocalDate localDate1 = date1.toInstant()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
LocalDate localDate2 = date2.toInstant() LocalDate localDate2 = date2.toInstant()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toLocalDate(); .toLocalDate();
return localDate1.compareTo(localDate2); return localDate1.compareTo(localDate2);
} }
@ -491,6 +490,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// sb.append(" ) b where rownum=1 "); // sb.append(" ) b where rownum=1 ");
return null; return null;
} }
@Override @Override
public String findNameByRoamNo(String partCode, String roamNo) { public String findNameByRoamNo(String partCode, String roamNo) {
//TODO 到ERP数据中查询数据 //TODO 到ERP数据中查询数据
@ -498,4 +498,15 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
// sb.append(" where a.prtno=:partCode and a.firseq=:roamNo "); // sb.append(" where a.prtno=:partCode and a.firseq=:roamNo ");
return null; return null;
} }
/**
* 根据零件号查询零件
*
* @param partCode
* @return
*/
@Override
public DsPartEntity selectDsPartByPatCode(String partCode) {
return dsPartMapper.selectDsPartByPatCode(partCode);
}
} }

@ -140,4 +140,23 @@ public class PlateGoodsRecordController extends BladeController {
Boolean result = goodsRecordService.changeStatus(Func.toLongList(ids), PlateGoodsEnum.STATUS_CLOSE.getCode()); Boolean result = goodsRecordService.changeStatus(Func.toLongList(ids), PlateGoodsEnum.STATUS_CLOSE.getCode());
return R.status(result); return R.status(result);
} }
/**
* 生成订单-计算镀层物料测试方法
* @return
*/
@PostMapping("/testCalculateCoatingMaterial")
public R testCalculateCoatingMaterial(){
YieldOrder yieldOrder=new YieldOrder();
yieldOrder.setId(2020699009243373570L);
yieldOrder.setPartCode("21E8-164-486-E9");
yieldOrder.setPartVersion("V2.1");
yieldOrder.setWorkCenterId(111l);
// yieldOrder.setProductIdent("JII");
yieldOrder.setProductIdent("2");//生产标识即质量等级
yieldOrder.setYpArea(100.0);
yieldOrder.setYpQty(1.0);
Boolean result = goodsRecordService.calculateCoatingMaterial(yieldOrder);
return R.status(result);
}
} }

@ -76,4 +76,11 @@ public interface IPlateGoodsRecordService extends BaseService<PlateGoodsRecord>
* @return * @return
*/ */
List<YieldOrder> listDetailYieldOrder(Long id); List<YieldOrder> listDetailYieldOrder(Long id);
/**
* 生成订单-计算镀层物料
* @param yieldOrder
* @return
*/
boolean calculateCoatingMaterial(YieldOrder yieldOrder);
} }

@ -8,16 +8,34 @@ import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; 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.IMaterialQuotaService;
import org.springblade.desk.dashboard.pojo.entity.DsProcessEntity;
import org.springblade.desk.dashboard.service.IDsCraftService;
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.service.IBsPlatingService;
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.constant.YieldOrderConst;
import org.springblade.desk.order.mapper.PlateGoodsRecordMapper; import org.springblade.desk.order.mapper.PlateGoodsRecordMapper;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecord; import org.springblade.desk.order.pojo.entity.PlateGoodsRecord;
import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail; import org.springblade.desk.order.pojo.entity.PlateGoodsRecordDetail;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.PlateGoodsEnum; 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.IPlateGoodsRecordDetailService;
import org.springblade.desk.order.service.IPlateGoodsRecordService; import org.springblade.desk.order.service.IPlateGoodsRecordService;
import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -33,7 +51,12 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
private final IPlateGoodsRecordDetailService detailService; private final IPlateGoodsRecordDetailService detailService;
private final IYieldOrderService yieldOrderService; private final IYieldOrderService yieldOrderService;
private final IDsPartService dsPartService;
private final IBsPlatingService bsPlatingService;
private final ICoatingThicknessService coatingThicknessService;
private final IDsCraftService dsCraftService;
private final IDsProcessService dsProcessService;
private final IMaterialQuotaService materialQuotaService;
@Override @Override
public IPage<PlateGoodsRecord> selectPage(IPage<PlateGoodsRecord> page, PlateGoodsRecord entity) { public IPage<PlateGoodsRecord> selectPage(IPage<PlateGoodsRecord> page, PlateGoodsRecord entity) {
List<PlateGoodsRecord> dataList = baseMapper.selectPage(page, entity); List<PlateGoodsRecord> dataList = baseMapper.selectPage(page, entity);
@ -137,4 +160,164 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl<PlateGoodsRecor
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len); return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
} }
/**
* 生成订单-计算镀层物料
* @param yieldOrder
* @return
*/
@Override
public boolean calculateCoatingMaterial(YieldOrder yieldOrder){
//零件号
String partCode=yieldOrder.getPartCode();
//零件版本
String partVersion=yieldOrder.getPartVersion();
//生产标识/质量等级
String productIdent=yieldOrder.getProductIdent();
//根据零件号查询零件
DsPartEntity dsPart = dsPartService.selectDsPartByPatCode(partCode);
if(null==dsPart){
return false;
}
//镀层物料编码
String plateGoodsCode=dsPart.getPlateGoodsCode();
//面积(㎡)
Double ypArea=yieldOrder.getYpArea();
//生产数量
Double ypQty=yieldOrder.getYpQty();
//计算单批面积(d㎡)
Double singleArea=ypArea*ypQty*100;
//大批量/小批量标志
int batchFlag=0;//大批量1;小批量0
//判断是否是大批量
if(singleArea>=30){
//是大批量
batchFlag=1;
}else{
//是小批量
batchFlag=0;
}
//金钾、银钾标志
int goldSilverFlag=0;//金钾1;银钾0
//判断是否有镀层物料编码
if(Func.isEmpty(plateGoodsCode)){
//查询不到镀层物料编码
return false;
}else{
//可以查询到镀层物料编码
//判断是否是金钾或银钾
if(plateGoodsCode.equals(PlateGoodsConst.GOLD_POTASSIUM)||plateGoodsCode.equals(PlateGoodsConst.SILVER_POTASSIUM)){
//是金钾或银钾
if(plateGoodsCode.equals(PlateGoodsConst.GOLD_POTASSIUM)){
goldSilverFlag=1;
}else{
goldSilverFlag=0;
}
//从零件号获取配置码
if(partCode.contains("-")){
String partCodeArr[]=partCode.split("-");
//配置码
String configCode=partCodeArr[partCodeArr.length-1];
//根据配置码查询镀种信息
BsPlatingEntity bsPlatingEntity =bsPlatingService.selectBsPlatingConfigNo(configCode);
//镀层代码
String matCode=bsPlatingEntity.getMatCode();
//根据零件号、镀层代码、质量等级,从镀层厚度对应表中查询镀层厚度
int start_f21e8=0;
if(partCode.startsWith("21E8-210")){
start_f21e8=1;
}
CoatingThickness CoatingThickness=coatingThicknessService.queryCoatingThickness(matCode,productIdent,start_f21e8);
//镀层厚度
Long thickness=CoatingThickness.getThickness();
//未找到镀层厚度
if(Func.isEmpty(thickness)){
//将订单状态标记为数据异常,记录异常原因,并退出
this.updateYieldOrder(yieldOrder);
return false;
}else{
//根据生产订单(YieldOrder)对象中的零件号和零件版本(与关系),查询DS_CRAFT表
DsCraftEntity dsCraftEntity = dsCraftService.selectDsCraftByPartCodeAndVersion(dsPart.getId(),partVersion);
//工艺表(DS_CRAFT)id
Long dsCraftId=dsCraftEntity.getId();
//查询生产工序列表
List<DsProcessEntity> dsProcessList=dsProcessService.selectDsProcessByCraftId(dsCraftId);
// 1. 空列表校验
if (CollectionUtils.isEmpty(dsProcessList)) {
//将订单状态标记为数据异常,记录异常原因,并退出
this.updateYieldOrder(yieldOrder);
return false;
}
else{
//取出工艺能力
for (DsProcessEntity process : dsProcessList) {
//DS_PROCESS表id
Long dsProcessId=process.getCaId();
//工艺能力编码
String craftCode=process.getCraftCode();
//根据镀层厚度、工艺能力,到物料定额表中查询定额
MaterialQuota materialQuota=materialQuotaService.queryMaterialQuota(thickness,dsProcessId);
if(null==materialQuota){
this.updateYieldOrder(yieldOrder);
return false;
}
//定额
Long quota=materialQuota.getQuota();
//未找到定额
if(Func.isEmpty(quota)){
this.updateYieldOrder(yieldOrder);
return false;
}else{
//计算物料需求
Double demand=0.0;
if(goldSilverFlag==0){
//银钾
demand=singleArea*quota*0.105;
}else{
//金钾
//小批量且工艺能力为(E379、E10120、E10060、E007、E9600、E12340)
if(batchFlag==0&&(craftCode.equals("E379")||craftCode.equals("E10120")||craftCode.equals("E10060")||craftCode.equals("E007")||craftCode.equals("E9600")||craftCode.equals("E12340"))){
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<PlateGoodsRecordDetail> detailList=new ArrayList<>();
PlateGoodsRecordDetail plateGoodsRecordDetail=new PlateGoodsRecordDetail();
plateGoodsRecordDetail.setYoId(yieldOrder.getId());
this.save(plateGoodsRecord, detailList);
}
}
}
}
}else{
//查询不到配置码
return false;
}
}else {
//不是金钾或银钾
return false;
}
}
//保存成功
return true;
}
/**
* 将订单状态标记为数据异常记录异常原因
* @param yieldOrder
*/
public void updateYieldOrder(YieldOrder yieldOrder){
yieldOrder.setStatus(YieldOrderEnum.STATUS_EXCEPTION.getCode());
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_DATA.getCode());
yieldOrderService.updateById(yieldOrder);
}
} }

Loading…
Cancel
Save