修改bug

This commit is contained in:
z 2025-06-29 17:05:14 +08:00
parent 773bed8910
commit 6a80317365
22 changed files with 282 additions and 127 deletions

View File

@ -151,7 +151,7 @@ public class bdgzsomthingController {
BeanUtils.toBean(list, bdgzsomthingRespVO.class));
}
@Scheduled(fixedRate = 10800000)
// @Scheduled(fixedRate = 10800000)
public void scheduledTask() {
bdgzsomthingService.selectds();
}
@ -159,15 +159,15 @@ public class bdgzsomthingController {
//@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次
@PostConstruct
public void init() {
selectHasPrice();
selectSafeStorageAndDeliverOneYear();
// selectHasPrice();
// selectSafeStorageAndDeliverOneYear();
}
@Scheduled(cron = "0 0 2 * * ?")
// @Scheduled(cron = "0 0 2 * * ?")
public void selectHasPrice(){
bdgzsomthingService.selectHasPrice();
}
@Scheduled(cron = "0 0 0 * * ?")
// @Scheduled(cron = "0 0 0 * * ?")
public void selectSafeStorageAndDeliverOneYear(){bdgzsomthingService.selectSafeStorageAndDeliverOneYear();}
@PostMapping("/getMessage")
@Operation(summary = "小程序消息")

View File

@ -115,12 +115,12 @@ public class PurchaseOrderMakeController {
public CommonResult<Boolean> updatePartCheckNo(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) {
return success(partPurchaseOrderService.updatePartCheckStatusNo(updateReqVO));
}
@PutMapping("/reject")
@GetMapping("/reject")
@Operation(summary = "采购审批驳回")
public CommonResult<Boolean> reject(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) {
return success(partPurchaseOrderService.reject(updateReqVO));
public CommonResult<Boolean> reject(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.reject(id));
}
@PutMapping("/approval")
@GetMapping("/approval")
@Operation(summary = "采购单批准")
public CommonResult<Boolean> approval(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.approval(id));
@ -135,8 +135,20 @@ public class PurchaseOrderMakeController {
@PostMapping("/createPurchaseOrderMakeAndDetail")
@Operation(summary = "零件采购单送审生成")
// @PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<Boolean> createPurchaseOrderMakeAndDetail(@Valid @RequestBody List<PurchaseOrderMakeSaveReqVO> saveReqVOs) {
return success(partPurchaseOrderService.createPurchaseOrderMakeAndDetailBatch(saveReqVOs));
}
@GetMapping("/review")
@Operation(summary = "小程序采购单审核分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make:query')")
public CommonResult<PageResult<PurchaseOrderMakeRespVO>> review(@Valid PurchaseOrderMakePageReqVO pageReqVO) {
PageResult<PurchaseOrderMakeDO> pageResult = purchaseOrderMakeService.review(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderMakeRespVO.class));
}
@GetMapping("/obtainReviewDetails")
@Operation(summary = "小程序采购单审核详情")
public CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(@RequestParam("id") Long id) {
return partPurchaseOrderService.obtainReviewDetails(id);
}
}

View File

@ -0,0 +1,13 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;
@Data
public class Log {
private String operation;
private String operationName;
private LocalDateTime operationTime;
}

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -101,5 +102,10 @@ public class PurchaseOrderMakeRespVO {
@Schema(description = "项目名称简码")
@ExcelProperty("项目名称简码")
private String projectNameSim;
@Schema(description = "送审人姓名")
@ExcelProperty("送审人姓名")
private String submitUserName;
@Schema(description = "采购单类型")
@ExcelProperty("采购单类型")
private String purchaseOrderType;
}

View File

@ -1,5 +1,7 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
@ -111,5 +113,12 @@ public class PurchaseOrderMakeDO extends BaseDO {
* 项目名称简码
*/
private String projectNameSim;
@TableField(exist = false)
private String submitUserName;
@TableField(exist = false)
private List<PurchaseOrderMakeDetailDO> purchaseOrderMakeDetailDOList;
@TableField(exist = false)
private List<Log> logList;
@TableField(exist = false)
private String purchaseOrderType;
}

View File

@ -156,5 +156,10 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
*/
@TableField(exist = false)
private Long materialId;
/**
* 工序名称
*/
@TableField(exist = false)
private Long procedureName;
}

View File

@ -9,6 +9,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*;
@ -88,10 +89,26 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX<PurchaseOrderMakeDO
.eq(Objects.nonNull(reqVO.getProjectNameSim()), PurchaseOrderMakeDO::getProjectNameSim, reqVO.getProjectNameSim())
.groupBy(PurchaseOrderMakeDO::getId)
.orderByDesc(PurchaseOrderMakeDO::getId);
// 使用 selectJoinPage 进行分页查询
// 使用 selectJoinPage 进行分页查询
return selectJoinPage(reqVO, PurchaseOrderMakeDO.class, wrapper);
}
default PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO){
// 引入 MPJLambdaWrapperMyBatis-Plus-Join 提供
MPJLambdaWrapper<PurchaseOrderMakeDO> wrapper = new MPJLambdaWrapper<>();
// 构建查询条件
wrapper.selectAll(PurchaseOrderMakeDO.class)
.select(
"CASE " +
"WHEN a.goods_type = 1 THEN '物料' " +
"WHEN a.goods_type = 2 THEN '加工件' " +
"ELSE '其他' " +
"END AS purchaseOrderType"
)
.select("u.nickname as submitUserName")// 查询主表所有字段
.leftJoin(AdminUserDO.class,"u", AdminUserDO::getId, PurchaseOrderMakeDO::getSubmitUserId);
wrapper.eq(PurchaseOrderMakeDO::getStatus, pageReqVO.getStatus())
.eq(PurchaseOrderMakeDO::getSubmitUserId,pageReqVO.getSubmitUserId() );
return selectPage(pageReqVO, wrapper);
}
}

View File

@ -22,6 +22,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.Purchas
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail.PurchaseOrderMakeDetailService;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
@ -143,4 +144,14 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(partPurchaseOrderPageReqVO, PartPurchaseOrderPageRespVO.class, query);
return pageResult;
}
default List<PurchaseOrderMakeDetailDO> getByPurchaseOrderId(Long id){
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderMakeDetailDO.class)
.select("p.name as procedureName,s.name as supplierName")
.leftJoin(ProcedureDO.class,"p", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
.leftJoin(SupplierDO.class,"s", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId);
query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id);
return selectJoinList(PurchaseOrderMakeDetailDO.class, query);
}
}

View File

@ -1,9 +1,11 @@
package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import java.util.List;
@ -53,11 +55,13 @@ public interface PartPurchaseOrderService {
*/
boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO);
Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO);
Boolean reject(Long id);
Boolean approval(Long id);
PageResult<PartPurchaseOrderPageRespVO> getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO);
Boolean createPurchaseOrderMakeAndDetailBatch(List<PurchaseOrderMakeSaveReqVO> updateReqVOs);
CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(Long id);
}

View File

@ -1,12 +1,16 @@
package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.mybatis.core.query.QueryWrapperX;
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Log;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO;
@ -27,6 +31,8 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.Purcha
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
@ -37,6 +43,7 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@ -64,6 +71,8 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
private PlanMapper planMapper;
@Autowired
private PlanSubMapper planSubMapper;
@Autowired
private AdminUserService adminUserService;
@Override
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
@ -171,19 +180,19 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
}
@Override
public Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO) {
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(updateReqVO.getId());
public Boolean reject(Long id) {
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id);
if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
purchaseOrderMakeDO.setId(updateReqVO.getId());
purchaseOrderMakeDO.setId(id);
purchaseOrderMakeDO.setStatus(3);
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId());
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, id);
purchaseOrderMakeDetailMapper.delete(wrapper);
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
materialPlanBoomDOs.forEach(materialPlanBoom -> {
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", materialPlanBoom.getId())
@ -236,6 +245,38 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
return true;
}
@Override
public CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(Long id) {
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id);
orderMakeDO.setPurchaseOrderType(orderMakeDO.getGoodsType()==1?"物料":"加工件");
List<PurchaseOrderMakeDetailDO> purchaseOrderMakeDetail = purchaseOrderMakeDetailMapper.getByPurchaseOrderId(orderMakeDO.getId());
orderMakeDO.setPurchaseOrderMakeDetailDOList(purchaseOrderMakeDetail);
List<Log> logList=new ArrayList<>();
if (ObjectUtil.isNotEmpty(orderMakeDO.getSubmitUserId())){
AdminUserDO user = adminUserService.getUser(orderMakeDO.getSubmitUserId());
if (ObjectUtil.isNotEmpty(user)){
Log log = new Log();
log.setOperation("送审");
log.setOperationName(user.getNickname());
log.setOperationTime(orderMakeDO.getSubmitTime());
logList.add(log);
orderMakeDO.setSubmitUserName(user.getNickname());
}
}
if (ObjectUtil.isNotEmpty(orderMakeDO.getAuditor())){
AdminUserDO user = adminUserService.getUser(orderMakeDO.getAuditor());
if (ObjectUtil.isNotEmpty(user)){
Log log = new Log();
log.setOperation("审批");
log.setOperationName(user.getNickname());
log.setOperationTime(orderMakeDO.getSubmitTime());
logList.add(log);
}
}
return CommonResult.success(orderMakeDO);
}
public Boolean createPurchaseOrderMakeAndDetail(PurchaseOrderMakeSaveReqVO updateReqVO) {
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
// 返回

View File

@ -1,55 +1,56 @@
package com.chanko.yunxi.mes.module.heli.service.purchaseordermake;
import java.util.*;
import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/**
* 采购单主 Service 接口
*
* @author 管理员
*/
public interface PurchaseOrderMakeService {
/**
* 创建采购单主
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO);
/**
* 更新采购单主
*
* @param updateReqVO 更新信息
*/
void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO);
/**
* 删除采购单主
*
* @param id 编号
*/
void deletePurchaseOrderMake(Long id);
/**
* 获得采购单主
*
* @param id 编号
* @return 采购单主
*/
PurchaseOrderMakeDO getPurchaseOrderMake(Long id);
/**
* 获得采购单主分页
*
* @param pageReqVO 分页查询
* @return 采购单主分页
*/
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO);
}
package com.chanko.yunxi.mes.module.heli.service.purchaseordermake;
import java.util.*;
import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/**
* 采购单主 Service 接口
*
* @author 管理员
*/
public interface PurchaseOrderMakeService {
/**
* 创建采购单主
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO);
/**
* 更新采购单主
*
* @param updateReqVO 更新信息
*/
void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO);
/**
* 删除采购单主
*
* @param id 编号
*/
void deletePurchaseOrderMake(Long id);
/**
* 获得采购单主
*
* @param id 编号
* @return 采购单主
*/
PurchaseOrderMakeDO getPurchaseOrderMake(Long id);
/**
* 获得采购单主分页
*
* @param pageReqVO 分页查询
* @return 采购单主分页
*/
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO);
PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO);
}

View File

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.service.purchaseordermake;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -15,6 +16,7 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
/**
@ -71,4 +73,10 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
return purchaseOrderMakeMapper.selectJoinPage(pageReqVO);
}
@Override
public PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO) {
pageReqVO.setSubmitUserId(getLoginUser().getId());
return purchaseOrderMakeMapper.review(pageReqVO);
}
}

View File

@ -20,6 +20,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -165,16 +166,20 @@ public class StorageInServiceImpl implements StorageInService {
wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId());
wrapper.eq(StorageInDetailDO::getDeleted,0);
List<StorageInDetailDO> storageInDetailDOS = storageInDetailMapper.selectList(wrapper);
BigDecimal sum=BigDecimal.ZERO;
BigDecimal StorageAmount=BigDecimal.ZERO;
if (ObjectUtil.isNotEmpty(storageInDetailDOS)){
BigDecimal StorageAmount = storageInDetailDOS.stream()
StorageAmount = storageInDetailDOS.stream()
.filter(Objects::nonNull) // 过滤掉空对象
.map(StorageInDetailDO::getStorageAmount)
.filter(Objects::nonNull) // 过滤掉空值
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
BigDecimal sum = StorageAmount.add(amount);
if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())>0){
return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"入库数量"+sum+"+本次入库数量"+amount+"大于需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!");
}
sum = StorageAmount.add(amount);
}else{
sum = amount;
}
if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())>0){
return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"入库数量"+StorageAmount+"+本次入库数量"+amount+"大于需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!");
}
}
}
@ -201,7 +206,17 @@ public class StorageInServiceImpl implements StorageInService {
storageInDetailDO.setBoomUnit(orderNoDetailDO.getBoomUnit());
storageInDetailDO.setComposition(orderNoDetailDO.getComposition());
storageInDetailDO.setPurchaseAmount(orderNoDetailDO.getPurchaseAmount());
storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getEstimatedPrice());
BigDecimal result = BigDecimal.ZERO;
BigDecimal estimatedPrice = orderNoDetailDO.getEstimatedPrice();
BigDecimal purchaseAmount = orderNoDetailDO.getPurchaseAmount();
// 检查两个值是否为null或0
if (estimatedPrice != null &&
purchaseAmount != null &&
purchaseAmount.compareTo(BigDecimal.ZERO) != 0) {
// 当两个值非空且除数非零时才进行计算
result = estimatedPrice.divide(purchaseAmount, 1, RoundingMode.HALF_UP);
}
storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getPurchaseRemAmounts().multiply( result));
storageInDetailDO.setActualPrice(orderNoDetailDO.getActualPrice());
storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount());
storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime());

View File

@ -1,5 +1,7 @@
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
import cn.hutool.core.bean.copier.BeanCopier;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
@ -52,6 +54,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import cn.hutool.core.bean.BeanUtil;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -61,7 +64,6 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
@ -130,6 +132,32 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
// 返回
return taskDispatch.getId();
}
public static boolean isDetailChanged(TaskDispatchDetailDO newDetail, TaskDispatchDetailDO oldDetail) {
String[] DETAIL_FIELDS = {
"owner", "workTime", "amount", "beforeAmount","summary","status","dispatchId","deviceModel","bomDetailId","startTime","detailOwnerId","testYn","checkYn","endTime"
,"dispatchType","postId","isOutsourcing","projectMaterialPlanNo","projectMaterialPlanDetailId","planStatus"
};
if (newDetail == null || oldDetail == null) return true;
for (String field : DETAIL_FIELDS) {
Object v1 = BeanUtil.getFieldValue(newDetail, field);
Object v2 = BeanUtil.getFieldValue(oldDetail, field);
if ("isOutsourcing".equals(field)){
if ("true".equals(v2)){
v2="Y";
}else {
v2="N";
}
}
if (!ObjectUtil.equal(v1, v2)) {
System.out.println(v1);
System.out.println(v2);
return true;
}
}
return false;
}
@Override
@Transactional(rollbackFor = Exception.class)
@ -149,23 +177,24 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
throw exception(INVALID_OPERATE);
}
if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("PRODUCTION")){
List<Long> idList = updateReqVO.getTaskDispatchDetails().stream()
List<TaskDispatchDetailDO> list = updateReqVO.getTaskDispatchDetails().stream()
.filter(o -> o.getId() != null)
.map(TaskDispatchDetailDO::getId)
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(idList)){
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(TaskDispatchDetailDO::getId, idList);
wrapper.eq(TaskDispatchDetailDO::getDeleted, 0);
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
if (ObjectUtil.isNotEmpty(list)){
TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(updateObj.getId());
for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) {
if (dispatchDetailDO.getPlanStatus()==1){
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId());
ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId());
if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){
throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认"));
for (TaskDispatchDetailDO dispatchDetailDO : list) {
TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(dispatchDetailDO.getId());
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
if (isDetailChanged(taskDispatchDetailDO, dispatchDetailDO)) {
if (taskDispatchDetailDO.getPlanStatus()==1){
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId());
ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId());
if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){
throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认"));
}
}
}
}
}
}

View File

@ -45,11 +45,11 @@ export const updatePurchaseOrderMakeNo = async (params) => {
return await request.put({ url: `/heli/purchase-order-make/updatePartCheckNo`, params })
}
export const reject = async (params) => {
return await request.put({ url: `/heli/purchase-order-make/reject`, params })
export const reject = async (id:number) => {
return await request.get({ url: `/heli/purchase-order-make/reject?id=` +id })
}
export const approval = async (id: number) => {
return await request.put({ url: `/heli/purchase-order-make/approval?id=` + id })
return await request.get({ url: `/heli/purchase-order-make/approval?id=` + id })
}
// 获取零件采购订单生成分页
export const getDetail = async (params) => {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

View File

@ -29,7 +29,7 @@
<el-form-item label="子项目名称" prop="projectSubName">
<el-input
v-model="queryParams.projectSubName"
placeholder="请输入项目名称"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -38,7 +38,7 @@
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入项目名称"
placeholder="请输入物料名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -47,23 +47,6 @@
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- @click="openForm('create')"-->
<!-- v-hasPermi="['heli:mat-req:create']"-->
<!-- >-->
<!-- <Icon icon="ep:plus" class="mr-5px" /> 新增-->
<!-- </el-button>-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- @click="handleExport"-->
<!-- :loading="exportLoading"-->
<!-- v-hasPermi="['heli:mat-req:export']"-->
<!-- >-->
<!-- <Icon icon="ep:download" class="mr-5px" /> 导出-->
<!-- </el-button>-->
</el-form-item>
</el-form>
</ContentWrap>

View File

@ -327,7 +327,7 @@ const submitForm = async () => {
// 4. Element Plus
formLoading.value = true;
console.log(list)
// 5.
const res = await Promise.race([
PartPurchaseOrderApi.createPurchaseOrderMakeAndDetail(list),

View File

@ -151,7 +151,7 @@ const handleReject = async () => {
const reject = async() => {
// updateParams.reason = reason
//
await PartPurchaseOrderApi.reject(updateParams)
await PartPurchaseOrderApi.reject(formData.value.id)
message.success("驳回成功");
router.push({ path: '/purchase/PurchaseOrderMake'});
tagsViewStore.delVisitedView(router.currentRoute.value)

View File

@ -132,17 +132,12 @@ v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" cl
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import download from '@/utils/download'
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
import * as StorageinApi from '@/api/heli/storagein'
import { ElTable } from 'element-plus'
import {useUserStore} from "@/store/modules/user";
import {ref} from "vue";
import {dateFormatter2} from "@/utils/formatTime";
import {PurchaseOrderNoDetailVO} from "@/api/heli/purchaseordernodetail";
import * as ProcessBomApi from "@/api/heli/processbom";
const formLoading = ref(false) // 12
defineOptions({ name: 'PurchaseOrder' })
const message = useMessage() //
const { t } = useI18n() //
@ -173,7 +168,7 @@ const queryParams = reactive({
description: undefined,
creator: undefined,
createTime: undefined,
receivingStatus:undefined,
receivingStatus:1,
projectName:undefined,
projectSubName:undefined,
supplierName:undefined,

View File

@ -69,6 +69,7 @@
</el-card>
</el-form>
<div class="hl-footer text-center">
<el-button @click="cancel" size="large"> </el-button>
<el-button @click="isPrint()" type="primary" size="large" >打印</el-button>
<el-button @click="deleteForm()" type="danger" size="large" >删除</el-button>
</div>
@ -134,7 +135,7 @@ const userList = ref<UserApi.UserVO[]>([]) // 用户列表
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
storageId: query.id
storageNoId: query.id
})
//
onMounted(async () => {
@ -142,6 +143,11 @@ onMounted(async () => {
formData.value = await StorageinApi.getStorageIn(query.id)
getList();
})
const cancel = async () => {
router.push({ path: '/inventory/storagein' })
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const isPrint = async () => {
var newVar = await StorageinApi.isPrint(query.id);
console.log(newVar)