增加审批流和修改统计bug

This commit is contained in:
2025-08-07 11:05:04 +08:00
parent 0eeab2aadf
commit 86f0f21f86
8 changed files with 238 additions and 31 deletions

View File

@ -44,17 +44,17 @@ public class BusMaterialsorderController extends BaseController {
//================================订货================================
/**
* 测试
*/
@SaCheckPermission("cailiaoshebei:materialsorder:cs")
@Log(title = "测试", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/cs")
public R<Void> cs(@Validated(EditGroup.class) @RequestBody MaterialsorderPcPlanEditReq req) {
busMaterialsorderService.extractDataNewAddition(req.getCbatchNumber(),req.getCprojectId() );
return toAjax(true);
}
// /**
// * 测试
// */
// @SaCheckPermission("cailiaoshebei:materialsorder:cs")
// @Log(title = "测试", businessType = BusinessType.UPDATE)
// @RepeatSubmit()
// @PutMapping("/cs")
// public R<Void> cs(@Validated(EditGroup.class) @RequestBody MaterialsorderPcPlanEditReq req) {
// busMaterialsorderService.extractDataNewAddition(req.getCbatchNumber(),req.getCprojectId() );
// return toAjax(true);
// }
/**

View File

@ -62,6 +62,11 @@ public class BusCailiaoshebeiPici extends BaseEntity {
*/
private String approvalProject;
/**
* 审批订货
*/
private String approvalOrder;
/**
* 备注
*/

View File

@ -84,7 +84,7 @@ public class BusMaterialsorder extends BaseEntity {
/**
* 订货数量
*/
private Long orderQuantity;
private int orderQuantity;
/**
* 预计到货时间

View File

@ -48,15 +48,15 @@ public class MaterialsorderPcPlanEditReq implements Serializable {
private List<BusMaterialsorder> list;
/**
* 不管
*/
private Long cprojectId;
/**
* 不管
*/
private String cbatchNumber;
// /**
// * 不管
// */
// private Long cprojectId;
//
// /**
// * 不管
// */
// private String cbatchNumber;
}

View File

@ -5,12 +5,14 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.cailiaoshebei.domain.bo.*;
import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceAddPlanSonRes;
import org.dromara.cailiaoshebei.domain.vo.MasterDataListRes;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusRepertoryService;
import org.dromara.cailiaoshebei.service.IBusSuppliespriceService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
@ -54,6 +56,7 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
private final BusCailiaoshebeiMapper baseMapper;
private final IBusSuppliespriceService busSuppliespriceService;
private final IBusRepertoryService busRepertoryService;
private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService;
/**
@ -264,11 +267,15 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('technical')")
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('materialDesign')")
public void processHandler(ProcessEvent processEvent) {
log.info("技术标准文件审核任务执行了{}", processEvent.toString());
//1、根据批次号改编审核状态
log.info("物资设计审核任务执行了{}", processEvent.toString());
String businessId = processEvent.getBusinessId();
//1、根据批次ID改编审核状态
BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici();
busCailiaoshebeiPici.setId(Long.valueOf(businessId));
busCailiaoshebeiPici.setApprovalDesign(processEvent.getStatus());
busCailiaoshebeiPiciService.updateById(busCailiaoshebeiPici);
}
/**
@ -281,9 +288,9 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('technical')")
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('materialDesign')")
public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
log.info("技术标准文件审核任务创建了{}", processTaskEvent.toString());
log.info("物资设计审核任务创建了{}", processTaskEvent.toString());
}
/**
@ -293,9 +300,54 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('technical')")
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('materialDesign')")
public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("监听删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
log.info("监听物资设计删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('materialsPlans')")
public void processPlansHandler(ProcessEvent processEvent) {
log.info("物资计划审核任务执行了{}", processEvent.toString());
String businessId = processEvent.getBusinessId();
//1、根据批次ID改编审核状态
BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici();
busCailiaoshebeiPici.setId(Long.valueOf(businessId));
busCailiaoshebeiPici.setApprovalPlan(processEvent.getStatus());
busCailiaoshebeiPiciService.updateById(busCailiaoshebeiPici);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('materialsPlans')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("物资计划审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('materialsPlans')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("监听物资计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -2,7 +2,14 @@ package org.dromara.cailiaoshebei.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanAddReq;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusMaterialsorderService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +18,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo;
@ -31,10 +39,15 @@ import java.util.Collection;
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl<BusMaterialbatchdemandplanMapper, BusMaterialbatchdemandplan> implements IBusMaterialbatchdemandplanService {
private final BusMaterialbatchdemandplanMapper baseMapper;
private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService;
private final IBusMaterialsorderService busMaterialsorderService;
/**
* 查询物资-批次需求计划
*
@ -158,4 +171,62 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl<BusMateri
}
throw new RuntimeException("新增失败");
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('batchRequirements')")
public void processPlansHandler(ProcessEvent processEvent) {
log.info("批次需求审核任务执行了{}", processEvent.toString());
String businessId = processEvent.getBusinessId();
//1、根据批次ID改编审核状态
BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici();
busCailiaoshebeiPici.setId(Long.valueOf(businessId));
busCailiaoshebeiPici.setApprovalProject(processEvent.getStatus());
busCailiaoshebeiPiciService.updateById(busCailiaoshebeiPici);
//2、如果状态为已完成
if (processEvent.getStatus().equals("finish")){
//2-1、根据批次ID获取到批次数据
BusCailiaoshebeiPici req = busCailiaoshebeiPiciService.getById(Long.valueOf(businessId));
if (req == null){
return;
}
//2-2、根据批次号得到订货数据信息
busMaterialsorderService.extractDataNewAddition(req.getBatchNumber(),req.getProjectId());
}
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('batchRequirements')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("批次需求审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('batchRequirements')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("监听批次需求删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -5,12 +5,16 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan;
import org.dromara.cailiaoshebei.domain.bo.MaterialsorderPcPlanEditReq;
import org.dromara.cailiaoshebei.domain.vo.GrossOutputRes;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -22,6 +26,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.utils.BatchNumberGenerator;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialsorderBo;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialsorderVo;
@ -41,6 +46,7 @@ import java.util.*;
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class BusMaterialsorderServiceImpl extends ServiceImpl<BusMaterialsorderMapper, BusMaterialsorder> implements IBusMaterialsorderService {
private final BusMaterialsorderMapper baseMapper;
@ -246,4 +252,77 @@ public class BusMaterialsorderServiceImpl extends ServiceImpl<BusMaterialsorderM
}
return resBigDecimal;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('equipmentOrdering')")
public void processPlansHandler(ProcessEvent processEvent) {
log.info("批次需求审核任务执行了{}", processEvent.toString());
String businessId = processEvent.getBusinessId();
//1、根据批次ID改编审核状态
BusCailiaoshebeiPici busCailiaoshebeiPici = new BusCailiaoshebeiPici();
busCailiaoshebeiPici.setId(Long.valueOf(businessId));
busCailiaoshebeiPici.setApprovalOrder(processEvent.getStatus());
busCailiaoshebeiPiciService.updateById(busCailiaoshebeiPici);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('equipmentOrdering')")
public void processTaskPlansHandler(ProcessTaskEvent processTaskEvent) {
log.info("批次需求审核任务创建了{}", processTaskEvent.toString());
// //1、先根据审批id获取到审批号
// String businessId = processTaskEvent.getBusinessId();
// BusCailiaoshebeiPici busCailiaoshebeiPici = busCailiaoshebeiPiciService.getById(Long.valueOf(businessId));
// if(busCailiaoshebeiPici == null){
// throw new RuntimeException("批次需求审核数据不存在");
// }
// //2、根据审批号获取到下面的所有数据
// List<BusMaterialsorder> list = baseMapper.selectList(new LambdaQueryWrapper<BusMaterialsorder>()
// .eq(BusMaterialsorder::getBatchNumber, busCailiaoshebeiPici.getBatchNumber())
// );
// if(list.isEmpty()){
// return;
// }
// //3、判断数据是否都有填写订货量、预计到货时间、预计生产时间
// for (BusMaterialsorder busMaterialsorder : list) {
// if (busMaterialsorder.getOrderQuantity()<=0){
// throw new RuntimeException("订货量不能小于等于0");
// }
// if(busMaterialsorder.getExpectedArrival() == null){
// throw new RuntimeException("预计到货时间不能为空");
// }
// if(busMaterialsorder.getProductionTime() == null){
// throw new RuntimeException("预计生产时间不能为空");
// }
// }
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('equipmentOrdering')")
public void processDeletePlansHandler(ProcessDeleteEvent processDeleteEvent) {
log.info("监听批次需求删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -6,8 +6,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="grossOutput" resultType="org.dromara.cailiaoshebei.domain.vo.GrossOutputRes">
select
a.acceptanceQuantity,
b.unitPrice
a.acceptance_quantity as acceptanceQuantity,
b.unit_price as unitPrice
from
bus_materialsorder a
left join bus_suppliesprice b on a.suppliesprice_id = b.id