Browse Source

[fix]

生产加工 生产订单
修改生产订单添加委外计划页面提交函数,遍历子表,根据bom层阶关系循环获取委外计划物料及其1阶物料集合;
修改获取生产bom列表mapper方法,添加id查询条件;
修改生成委外计划service方法和根据委外计划详情更新生产订单bom委外数service方法,根据层级关系设置父级id;
dev
王晓迪 2 months ago
parent
commit
eff09f197e
  1. 34
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java
  2. 1
      ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml
  3. 61
      ruoyi-admin/src/main/resources/templates/system/makeorder/addOutsourcePlan.html

34
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java

@ -808,8 +808,10 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
// 生成委外计划
@Override
@Transactional(rollbackFor = Exception.class)
public int addOutsourcePlan(OutsourcePlan outsourcePlan) {
String outsourcePlanCode = redisCache.generateBillNo("WWJH");
Long parentId = 0L;
outsourcePlan.setOutsourcePlanCode(outsourcePlanCode);
outsourcePlan.setCreateTime(DateUtils.getNowDate());
outsourcePlan.setCreateBy(ShiroUtils.getLoginName());
@ -819,11 +821,14 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
}
int materialAmount = 0;
int processAmount = 0;
BigDecimal materialSum = BigDecimal.ZERO;
int materialSum = 0;
Set<String> uniqueProcessNos = new HashSet<>(); // 用于存储唯一的 processNo
for (OutsourcePlanDetail detail:planDetails) {
materialAmount ++;
detail.setOutsourcePlanCode(outsourcePlanCode);
detail.setCreateBy(ShiroUtils.getLoginName());
detail.setCreateTime(DateUtils.getNowDate());
if(detail.getLevel() == 0){
materialAmount ++;
List<OutsourceMaterial> materials = outsourceMaterialMapper.selectProcessNoByNo(detail.getMaterialNo());
if(StringUtils.isEmpty(materials)){
throw new BusinessException("委外物料工序数量为空!添加失败");
@ -831,17 +836,25 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
for (OutsourceMaterial material : materials) {
uniqueProcessNos.add(material.getOutsourceProcessNo());
}
materialSum = materialSum.add(detail.getPlannedOutsourceAmount());
materialSum = materialSum + detail.getPlannedOutsourceAmount();
detail.setOutsourceProcessType(materials.size());
detail.setOutsourceProcessAmount(materials.size());
detail.setCreateBy(ShiroUtils.getLoginName());
detail.setCreateTime(DateUtils.getNowDate());
processAmount += detail.getOutsourceProcessAmount();
int insertResult = outsourcePlanMapper.insertOutsourcePlanDetail(detail);
if(insertResult <= 0){
throw new BusinessException("添加委外计划详情失败!");
}
int batchResult = outsourcePlanMapper.batchOutsourcePlanDetail(planDetails);
if(batchResult <= 0){
parentId = detail.getOutsourcePlanDetailId();
}else if(detail.getLevel() == 1){
detail.setParentId(parentId);
int insertResult = outsourcePlanMapper.insertOutsourcePlanDetail(detail);
if(insertResult <= 0){
throw new BusinessException("添加委外计划详情失败!");
}
}
}
// 更新生产订单bom的已委外数信息
changeOrderBomOutNum(planDetails,outsourcePlan.getAssociateOrderNo());
@ -864,13 +877,18 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService
private int changeOrderBomOutNum(List<OutsourcePlanDetail> planDetails, String makeNo){
int updateResult = 0;
for (OutsourcePlanDetail detail: planDetails) {
if(detail.getLevel()==0){
SysMakeorderBom tempBom = new SysMakeorderBom();
tempBom.setMakeNo(makeNo);
tempBom.setMaterialNo(detail.getMaterialNo());
tempBom.setId(detail.getMakeBomId());
SysMakeorderBom makeorderBom = makeorderBomMapper.selectSysMakeorderBomByNo(tempBom);
makeorderBom.setHasOutNum(detail.getPlannedOutsourceAmount().intValue());
int hasOutSum = Optional.ofNullable(makeorderBom.getHasOutNum()).orElse(0);
hasOutSum = hasOutSum + makeorderBom.getHasOutNum();
makeorderBom.setHasOutNum(hasOutSum);
updateResult += makeorderBomMapper.updateSysMakeorderBom(makeorderBom);
}
}
return updateResult;
}

1
ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml

@ -202,6 +202,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSysMakeorderBomByNo" parameterType="SysMakeorderBom" resultMap="SysMakeorderBomResult">
<include refid="selectSysMakeorderBomVo"/>
<where>
<if test="id != null and id != ''"> and id = #{id}</if>
<if test="makeNo != null and makeNo != ''"> and make_no = #{makeNo}</if>
<if test="materialNo != null and materialNo != ''"> and material_no = #{materialNo}</if>
</where>

61
ruoyi-admin/src/main/resources/templates/system/makeorder/addOutsourcePlan.html

@ -421,18 +421,24 @@
applicant: sales,
}
var hasValue = false;
childTableIdList.forEach(function (tableId,index){
childTableIdList.forEach(function (tableId,index) {
var processDatas = $("#" + tableId).bootstrapTable('getData');
processDatas.forEach(function (data){
if(data.processNum != 0 && (data.processMethod == "2"||data.processMethod == "4")){
var resultList = [];
var i = 0;
while (i < processDatas.length) {
var data = processDatas[i];
// 检查是否满足条件
if (data.processNum != 0 && (data.processMethod == "2" || data.processMethod == "4")) {
var key = tableId + '_' + data.materialNo + '_outNum';
var outNum = sessionStorage.getItem(key);
if(outNum === null||outNum === ""){
return;
}
if (outNum !== null && outNum !== "") {
hasValue = true;
var process ={
var process = {
makeBomId: data.id,
materialNo: data.materialNo,
materialName: data.materialName,
materialType: data.materialType,
@ -441,13 +447,44 @@
brand: data.brand,
processMethod: data.processMethod,
unit: data.unit,
plannedOutsourceAmount: outNum,
level: 0,
};
resultList.push(process); // 添加符合条件的记录
// 定义当前层级
var currentLevel = data.level;
// 内部循环处理后续记录
for (var j = i + 1; j < processDatas.length; j++) {
var nextData = processDatas[j];
// 如果下一条记录的层级是 currentLevel + 1,则添加到结果列表
if (nextData.level === currentLevel + 1) {
var nextProcess = {
makeBomId: nextData.id,
materialNo: nextData.materialNo,
materialName: nextData.materialName,
materialType: nextData.materialType,
materialPhotourl: nextData.photoUrl,
description: nextData.describe,
brand: nextData.brand,
processMethod: nextData.processMethod,
unit: nextData.unit,
plannedOutsourceAmount: outNum,
level: 1,
};
resultList.push(nextProcess);
} else if(nextData.level === currentLevel){
break;
}
process.plannedOutsourceAmount = outNum;
outsourcePlan.outsourcePlanDetailList.push(process);
}
})
})
// console.log(outsourcePlan);
// 跳过已经处理过的记录
i = j - 1; // 因为外层循环会自动 i++,所以这里减1
}
}
i++;
}
});
console.log(outsourcePlan);
if(hasValue){
$.operate.saveJson(ctx + "system/makeorder/addOutsourcePlan", JSON.stringify(outsourcePlan));
}else{

Loading…
Cancel
Save