修改烧结磨具计划

liweidong
liweidong-hj 19 hours ago
parent 87a53cd5fd
commit c7894d9539
  1. 4
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  3. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/MoldDemandMapper.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/MoldDemandMapper.xml
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  6. 124
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java

@ -12,9 +12,9 @@ public interface LauncherConstant {
/**
* nacos 命名空间
*/
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// 生产环境
String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
// String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";

@ -342,4 +342,14 @@ public class YieldOrderController extends BladeController {
List<String> list = yieldOrderService.getToolByPartCode(partCode);
return R.data(list);
}
/**
* 根据零件号获取工装
*/
@GetMapping("/test")
public R test(@RequestParam String test) {
String code = yieldOrderService.generateMdCode();
return R.data(code);
}
}

@ -34,4 +34,6 @@ public interface MoldDemandMapper extends BaseMapper<MoldDemand> {
List<MoldDemand> pageNearlyMonth(IPage page, MoldDemand entity);
MoldDemand getDetailById(String id);
String getMaxMdCodeByDate(@Param("today")String today);
}

@ -188,4 +188,8 @@
IS_DELETED = 0
and a.id = #{id}
</select>
<select id="getMaxMdCodeByDate" resultType="java.lang.String">
SELECT MAX(md_code) FROM MES_MOLD_DEMAND WHERE md_code LIKE #{today} || '%'
</select>
</mapper>

@ -292,4 +292,6 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
void calculateCoatingMaterial();
List<YieldOrderCraft> confirm(String cardNo,String mark);
String generateMdCode();
}

@ -57,6 +57,7 @@ import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -65,8 +66,10 @@ import java.text.MessageFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@ -544,6 +547,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
moldDemand.setMafType(MoldDemandEnum.MAF_TYPE_RB.getCode());
moldDemand.setNeedDate(yieldOrder.getDemandDate());
moldDemand.setQuaLevel(yieldOrder.getProductIdent());
moldDemand.setMdCode(generateMdCode());
moldDemandMapper.insert(moldDemand);
}else{
moldDemand.setDemandNum(moldDemand.getDemandNum() + subPart.getQuota() * yieldOrder.getYpQty());
@ -560,34 +564,112 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}else if(YieldOrderEnum.YIELD_TYPE_3.getCode() == yieldOrder.getYieldType()){
List<DsProcessMoldToolEntity> processMoldToolList = dsPartService.getClassCakeWork(yieldOrder.getPartCode(),yieldOrder.getRoamNo(),yieldOrder.getPartVersion());
if(CollectionUtils.isNotEmpty(processMoldToolList)){
MoldDemand moldDemand = moldDemandMapper.selectOne(Wrappers.<MoldDemand>lambdaQuery().eq(MoldDemand::getPartCode,yieldOrder.getPartCode()).eq(MoldDemand::getMafStatus,MoldDemandEnum.MAF_STATUS_CREATE.getCode()));
if(moldDemand == null){
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());
for (DsProcessMoldToolEntity dsProcessMoldToolEntity : processMoldToolList) {
MoldDemand moldDemand = moldDemandMapper.selectOne(Wrappers.<MoldDemand>lambdaQuery().eq(MoldDemand::getPartCode,dsProcessMoldToolEntity.getMoldCode()).eq(MoldDemand::getMafStatus,MoldDemandEnum.MAF_STATUS_CREATE.getCode()));
if(moldDemand == null){
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.setMafType(MoldDemandEnum.MAF_TYPE_RB.getCode());
moldDemand.setNeedDate(yieldOrder.getDemandDate());
moldDemand.setQuaLevel(yieldOrder.getProductIdent());
moldDemandMapper.insert(moldDemand);
}else{
moldDemand.setDemandNum(moldDemand.getDemandNum() + yieldOrder.getYpQty());
moldDemand.setLinkOrderIds(moldDemand.getLinkOrderIds().concat(",").concat(yieldOrder.getId().toString()));
moldDemandMapper.updateById(moldDemand);
moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode());
moldDemand.setMafType(MoldDemandEnum.MAF_TYPE_RB.getCode());
moldDemand.setNeedDate(yieldOrder.getDemandDate());
moldDemand.setQuaLevel(yieldOrder.getProductIdent());
moldDemand.setMdCode(generateMdCode());
moldDemandMapper.insert(moldDemand);
}else{
moldDemand.setDemandNum(moldDemand.getDemandNum() + yieldOrder.getYpQty());
moldDemand.setLinkOrderIds(moldDemand.getLinkOrderIds().concat(",").concat(yieldOrder.getId().toString()));
moldDemandMapper.updateById(moldDemand);
}
yieldOrder.setToolsDemand(BigDecimal.valueOf(moldDemand.getDemandNum()));
this.updateById(yieldOrder);
}
yieldOrder.setToolsDemand(BigDecimal.valueOf(moldDemand.getDemandNum()));
this.updateById(yieldOrder);
}
}else if(YieldOrderEnum.YIELD_TYPE_6.getCode() == yieldOrder.getYieldType()){
List<DsPartEntity> subPartList = dsPartService.getPartSubList(yieldOrder.getPartCode(),yieldOrder.getPartVersion());
if(CollectionUtils.isNotEmpty(subPartList)){
for(DsPartEntity subPart : subPartList){
MoldDemand moldDemand = moldDemandMapper.selectOne(Wrappers.<MoldDemand>lambdaQuery().eq(MoldDemand::getPartCode,subPart.getPartCode()).eq(MoldDemand::getMafStatus,MoldDemandEnum.MAF_STATUS_CREATE.getCode()));
if(moldDemand == null){
moldDemand = new MoldDemand();
moldDemand.setMoCode(null);
moldDemand.setPartCode(yieldOrder.getPartCode());
moldDemand.setPartName(yieldOrder.getPartName());
moldDemand.setToolCode(subPart.getPartCode());
moldDemand.setToolName(subPart.getPartName());
moldDemand.setDemandNum(subPart.getQuota() * yieldOrder.getYpQty());
moldDemand.setLinkOrderIds(yieldOrder.getId().toString());
moldDemand.setMafStatus(MoldDemandEnum.MAF_STATUS_CREATE.getCode());
moldDemand.setMafType(MoldDemandEnum.MAF_TYPE_RB.getCode());
moldDemand.setNeedDate(yieldOrder.getDemandDate());
moldDemand.setQuaLevel(yieldOrder.getProductIdent());
moldDemand.setMdCode(generateMdCode());
moldDemandMapper.insert(moldDemand);
}else{
moldDemand.setDemandNum(moldDemand.getDemandNum() + subPart.getQuota() * yieldOrder.getYpQty());
moldDemand.setLinkOrderIds(moldDemand.getLinkOrderIds().concat(",").concat(yieldOrder.getId().toString()));
moldDemandMapper.updateById(moldDemand);
}
yieldOrder.setToolsDemand(BigDecimal.valueOf(moldDemand.getDemandNum()));
this.updateById(yieldOrder);
}
}
}
return Boolean.TRUE;
}
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* 生成模具单号
* @return 单号 202604280001
*/
@Override
public String generateMdCode() {
// 1. 获取当前日期(用于单号中的日期部分)
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
// 2. 获取当天的流水号
String key = "md_code:" + today;
Long seq = redisTemplate.opsForValue().increment(key);
// 3. 如果是当天第一个,设置过期时间为2天(避免Redis内存堆积)
if (seq == 1) {
redisTemplate.expire(key, 2, TimeUnit.DAYS);
// 同时从数据库查询当天最大流水号(防止Redis数据丢失后重复)
seq = getMaxSeqFromDb(today) + 1;
redisTemplate.opsForValue().set(key, String.valueOf(seq), 2, TimeUnit.DAYS);
}
// 4. 格式化流水号(4位,不足补0)
String serial = String.format("%04d", seq);
// 5. 拼接单号
return today + serial;
}
/**
* 从数据库查询当天最大流水号用于重启后恢复
*/
private Long getMaxSeqFromDb(String today) {
String maxCode = moldDemandMapper.getMaxMdCodeByDate(today);
if (maxCode == null || maxCode.isEmpty()) {
return 0L;
}
// 提取流水号部分(日期共8位,后面的是流水号)
String serialStr = maxCode.substring(today.length());
return Long.parseLong(serialStr);
}
@Override
public Boolean verifyYieldOrderResource(YieldOrder yieldOrder) {
// 根据生产订单,给各工序分派作业中心||外协

Loading…
Cancel
Save