增加审批流和修改统计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") // @SaCheckPermission("cailiaoshebei:materialsorder:cs")
@Log(title = "测试", businessType = BusinessType.UPDATE) // @Log(title = "测试", businessType = BusinessType.UPDATE)
@RepeatSubmit() // @RepeatSubmit()
@PutMapping("/cs") // @PutMapping("/cs")
public R<Void> cs(@Validated(EditGroup.class) @RequestBody MaterialsorderPcPlanEditReq req) { // public R<Void> cs(@Validated(EditGroup.class) @RequestBody MaterialsorderPcPlanEditReq req) {
busMaterialsorderService.extractDataNewAddition(req.getCbatchNumber(),req.getCprojectId() ); // busMaterialsorderService.extractDataNewAddition(req.getCbatchNumber(),req.getCprojectId() );
return toAjax(true); // return toAjax(true);
} // }
/** /**

View File

@ -62,6 +62,11 @@ public class BusCailiaoshebeiPici extends BaseEntity {
*/ */
private String approvalProject; 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 List<BusMaterialsorder> list;
/** // /**
* 不管 // * 不管
*/ // */
private Long cprojectId; // private Long cprojectId;
//
/** // /**
* 不管 // * 不管
*/ // */
private String cbatchNumber; // private String cbatchNumber;
} }

View File

@ -5,12 +5,14 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.BusSuppliesprice; import org.dromara.cailiaoshebei.domain.BusSuppliesprice;
import org.dromara.cailiaoshebei.domain.bo.*; import org.dromara.cailiaoshebei.domain.bo.*;
import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto; import org.dromara.cailiaoshebei.domain.dto.BusCailiaoshebeiEditPlanDto;
import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes; import org.dromara.cailiaoshebei.domain.vo.BusCailiaoshebeiListPlanRes;
import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceAddPlanSonRes; import org.dromara.cailiaoshebei.domain.vo.BusSuppliespriceAddPlanSonRes;
import org.dromara.cailiaoshebei.domain.vo.MasterDataListRes; import org.dromara.cailiaoshebei.domain.vo.MasterDataListRes;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusRepertoryService; import org.dromara.cailiaoshebei.service.IBusRepertoryService;
import org.dromara.cailiaoshebei.service.IBusSuppliespriceService; import org.dromara.cailiaoshebei.service.IBusSuppliespriceService;
import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent;
@ -54,6 +56,7 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
private final BusCailiaoshebeiMapper baseMapper; private final BusCailiaoshebeiMapper baseMapper;
private final IBusSuppliespriceService busSuppliespriceService; private final IBusSuppliespriceService busSuppliespriceService;
private final IBusRepertoryService busRepertoryService; private final IBusRepertoryService busRepertoryService;
private final IBusCailiaoshebeiPiciService busCailiaoshebeiPiciService;
/** /**
@ -264,11 +267,15 @@ public class BusCailiaoshebeiServiceImpl extends ServiceImpl<BusCailiaoshebeiMap
* *
* @param processEvent 参数 * @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) { public void processHandler(ProcessEvent processEvent) {
log.info("技术标准文件审核任务执行了{}", processEvent.toString()); log.info("物资设计审核任务执行了{}", processEvent.toString());
//1、根据批次号改编审核状态 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 参数 * @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) { 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 参数 * @param processDeleteEvent 参数
*/ */
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('technical')") @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('materialDesign')")
public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { 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 cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.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.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo; import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo;
@ -31,10 +39,15 @@ import java.util.Collection;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl<BusMaterialbatchdemandplanMapper, BusMaterialbatchdemandplan> implements IBusMaterialbatchdemandplanService { public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl<BusMaterialbatchdemandplanMapper, BusMaterialbatchdemandplan> implements IBusMaterialbatchdemandplanService {
private final BusMaterialbatchdemandplanMapper baseMapper; 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("新增失败"); 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 cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici;
import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan; import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan;
import org.dromara.cailiaoshebei.domain.bo.MaterialsorderPcPlanEditReq; import org.dromara.cailiaoshebei.domain.bo.MaterialsorderPcPlanEditReq;
import org.dromara.cailiaoshebei.domain.vo.GrossOutputRes; import org.dromara.cailiaoshebei.domain.vo.GrossOutputRes;
import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService;
import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; 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.domain.model.LoginUser;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -22,6 +26,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.common.utils.BatchNumberGenerator;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialsorderBo; import org.dromara.cailiaoshebei.domain.bo.BusMaterialsorderBo;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialsorderVo; import org.dromara.cailiaoshebei.domain.vo.BusMaterialsorderVo;
@ -41,6 +46,7 @@ import java.util.*;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class BusMaterialsorderServiceImpl extends ServiceImpl<BusMaterialsorderMapper, BusMaterialsorder> implements IBusMaterialsorderService { public class BusMaterialsorderServiceImpl extends ServiceImpl<BusMaterialsorderMapper, BusMaterialsorder> implements IBusMaterialsorderService {
private final BusMaterialsorderMapper baseMapper; private final BusMaterialsorderMapper baseMapper;
@ -246,4 +252,77 @@ public class BusMaterialsorderServiceImpl extends ServiceImpl<BusMaterialsorderM
} }
return resBigDecimal; 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 id="grossOutput" resultType="org.dromara.cailiaoshebei.domain.vo.GrossOutputRes">
select select
a.acceptanceQuantity, a.acceptance_quantity as acceptanceQuantity,
b.unitPrice b.unit_price as unitPrice
from from
bus_materialsorder a bus_materialsorder a
left join bus_suppliesprice b on a.suppliesprice_id = b.id left join bus_suppliesprice b on a.suppliesprice_id = b.id