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

View File

@ -115,12 +115,12 @@ public class PurchaseOrderMakeController {
public CommonResult<Boolean> updatePartCheckNo(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { public CommonResult<Boolean> updatePartCheckNo(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) {
return success(partPurchaseOrderService.updatePartCheckStatusNo(updateReqVO)); return success(partPurchaseOrderService.updatePartCheckStatusNo(updateReqVO));
} }
@PutMapping("/reject") @GetMapping("/reject")
@Operation(summary = "采购审批驳回") @Operation(summary = "采购审批驳回")
public CommonResult<Boolean> reject(@Valid PurchaseOrderMakeSaveReqVO updateReqVO) { public CommonResult<Boolean> reject(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.reject(updateReqVO)); return success(partPurchaseOrderService.reject(id));
} }
@PutMapping("/approval") @GetMapping("/approval")
@Operation(summary = "采购单批准") @Operation(summary = "采购单批准")
public CommonResult<Boolean> approval(@RequestParam("id") Long id) { public CommonResult<Boolean> approval(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.approval(id)); return success(partPurchaseOrderService.approval(id));
@ -135,8 +135,20 @@ public class PurchaseOrderMakeController {
@PostMapping("/createPurchaseOrderMakeAndDetail") @PostMapping("/createPurchaseOrderMakeAndDetail")
@Operation(summary = "零件采购单送审生成") @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) { public CommonResult<Boolean> createPurchaseOrderMakeAndDetail(@Valid @RequestBody List<PurchaseOrderMakeSaveReqVO> saveReqVOs) {
return success(partPurchaseOrderService.createPurchaseOrderMakeAndDetailBatch(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; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
@ -101,5 +102,10 @@ public class PurchaseOrderMakeRespVO {
@Schema(description = "项目名称简码") @Schema(description = "项目名称简码")
@ExcelProperty("项目名称简码") @ExcelProperty("项目名称简码")
private String projectNameSim; 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; 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 lombok.*;
import java.util.*; import java.util.*;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -111,5 +113,12 @@ public class PurchaseOrderMakeDO extends BaseDO {
* 项目名称简码 * 项目名称简码
*/ */
private String projectNameSim; 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) @TableField(exist = false)
private Long materialId; 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.purchaseordermake.PurchaseOrderMakeDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; 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.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*; 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()) .eq(Objects.nonNull(reqVO.getProjectNameSim()), PurchaseOrderMakeDO::getProjectNameSim, reqVO.getProjectNameSim())
.groupBy(PurchaseOrderMakeDO::getId) .groupBy(PurchaseOrderMakeDO::getId)
.orderByDesc(PurchaseOrderMakeDO::getId); .orderByDesc(PurchaseOrderMakeDO::getId);
// 使用 selectJoinPage 进行分页查询
// 使用 selectJoinPage 进行分页查询
return selectJoinPage(reqVO, PurchaseOrderMakeDO.class, wrapper); 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.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; 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.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.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -143,4 +144,14 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(partPurchaseOrderPageReqVO, PartPurchaseOrderPageRespVO.class, query); PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(partPurchaseOrderPageReqVO, PartPurchaseOrderPageRespVO.class, query);
return pageResult; 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; 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.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.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; 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.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import java.util.List; import java.util.List;
@ -53,11 +55,13 @@ public interface PartPurchaseOrderService {
*/ */
boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO); boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO);
Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO); Boolean reject(Long id);
Boolean approval(Long id); Boolean approval(Long id);
PageResult<PartPurchaseOrderPageRespVO> getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO); PageResult<PartPurchaseOrderPageRespVO> getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO);
Boolean createPurchaseOrderMakeAndDetailBatch(List<PurchaseOrderMakeSaveReqVO> updateReqVOs); 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; 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.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; 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.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; 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.mybatis.core.query.QueryWrapperX;
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; 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.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; 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.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.purchaseorderno.PurchaseOrderNoMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; 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.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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -37,6 +43,7 @@ import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -64,6 +71,8 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
private PlanMapper planMapper; private PlanMapper planMapper;
@Autowired @Autowired
private PlanSubMapper planSubMapper; private PlanSubMapper planSubMapper;
@Autowired
private AdminUserService adminUserService;
@Override @Override
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) { public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
@ -171,19 +180,19 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
} }
@Override @Override
public Boolean reject(PurchaseOrderMakeSaveReqVO updateReqVO) { public Boolean reject(Long id) {
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(updateReqVO.getId()); PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(id);
if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); if (orderMakeDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
purchaseOrderMakeDO.setId(updateReqVO.getId()); purchaseOrderMakeDO.setId(id);
purchaseOrderMakeDO.setStatus(3); purchaseOrderMakeDO.setStatus(3);
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId()); wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, id);
purchaseOrderMakeDetailMapper.delete(wrapper); 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 -> { materialPlanBoomDOs.forEach(materialPlanBoom -> {
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>(); UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", materialPlanBoom.getId()) updateWrapper.eq("id", materialPlanBoom.getId())
@ -236,6 +245,38 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
return true; 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) { public Boolean createPurchaseOrderMakeAndDetail(PurchaseOrderMakeSaveReqVO updateReqVO) {
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
// 返回 // 返回

View File

@ -1,55 +1,56 @@
package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; package com.chanko.yunxi.mes.module.heli.service.purchaseordermake;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*; 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.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/** /**
* 采购单主 Service 接口 * 采购单主 Service 接口
* *
* @author 管理员 * @author 管理员
*/ */
public interface PurchaseOrderMakeService { public interface PurchaseOrderMakeService {
/** /**
* 创建采购单主 * 创建采购单主
* *
* @param createReqVO 创建信息 * @param createReqVO 创建信息
* @return 编号 * @return 编号
*/ */
Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO); Long createPurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO createReqVO);
/** /**
* 更新采购单主 * 更新采购单主
* *
* @param updateReqVO 更新信息 * @param updateReqVO 更新信息
*/ */
void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO); void updatePurchaseOrderMake(@Valid PurchaseOrderMakeSaveReqVO updateReqVO);
/** /**
* 删除采购单主 * 删除采购单主
* *
* @param id 编号 * @param id 编号
*/ */
void deletePurchaseOrderMake(Long id); void deletePurchaseOrderMake(Long id);
/** /**
* 获得采购单主 * 获得采购单主
* *
* @param id 编号 * @param id 编号
* @return 采购单主 * @return 采购单主
*/ */
PurchaseOrderMakeDO getPurchaseOrderMake(Long id); PurchaseOrderMakeDO getPurchaseOrderMake(Long id);
/** /**
* 获得采购单主分页 * 获得采购单主分页
* *
* @param pageReqVO 分页查询 * @param pageReqVO 分页查询
* @return 采购单主分页 * @return 采购单主分页
*/ */
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO); 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; 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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; 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 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.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.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
/** /**
@ -71,4 +73,10 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
return purchaseOrderMakeMapper.selectJoinPage(pageReqVO); 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 org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -165,16 +166,20 @@ public class StorageInServiceImpl implements StorageInService {
wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId()); wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,purchaseOrderNoDetailDO.getId());
wrapper.eq(StorageInDetailDO::getDeleted,0); wrapper.eq(StorageInDetailDO::getDeleted,0);
List<StorageInDetailDO> storageInDetailDOS = storageInDetailMapper.selectList(wrapper); List<StorageInDetailDO> storageInDetailDOS = storageInDetailMapper.selectList(wrapper);
BigDecimal sum=BigDecimal.ZERO;
BigDecimal StorageAmount=BigDecimal.ZERO;
if (ObjectUtil.isNotEmpty(storageInDetailDOS)){ if (ObjectUtil.isNotEmpty(storageInDetailDOS)){
BigDecimal StorageAmount = storageInDetailDOS.stream() StorageAmount = storageInDetailDOS.stream()
.filter(Objects::nonNull) // 过滤掉空对象 .filter(Objects::nonNull) // 过滤掉空对象
.map(StorageInDetailDO::getStorageAmount) .map(StorageInDetailDO::getStorageAmount)
.filter(Objects::nonNull) // 过滤掉空值 .filter(Objects::nonNull) // 过滤掉空值
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和 .reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
BigDecimal sum = StorageAmount.add(amount); sum = StorageAmount.add(amount);
if (sum.compareTo(purchaseOrderNoDetailDO.getBoomAmount())>0){ }else{
return CommonResult.error(400,"标准件名称"+purchaseOrderNoDetailDO.getBoomName()+"入库数量"+sum+"+本次入库数量"+amount+"大于需求数量"+purchaseOrderNoDetailDO.getBoomAmount()+"请确认!"); 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.setBoomUnit(orderNoDetailDO.getBoomUnit());
storageInDetailDO.setComposition(orderNoDetailDO.getComposition()); storageInDetailDO.setComposition(orderNoDetailDO.getComposition());
storageInDetailDO.setPurchaseAmount(orderNoDetailDO.getPurchaseAmount()); 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.setActualPrice(orderNoDetailDO.getActualPrice());
storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount()); storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount());
storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime()); storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime());

View File

@ -1,5 +1,7 @@
package com.chanko.yunxi.mes.module.heli.service.taskdispatch; 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.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
@ -52,6 +54,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import cn.hutool.core.bean.BeanUtil;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -61,7 +64,6 @@ import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
@ -130,6 +132,32 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
// 返回 // 返回
return taskDispatch.getId(); 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 @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -149,23 +177,24 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
throw exception(INVALID_OPERATE); throw exception(INVALID_OPERATE);
} }
if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("PRODUCTION")){ 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) .filter(o -> o.getId() != null)
.map(TaskDispatchDetailDO::getId)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(idList)){ if (ObjectUtil.isNotEmpty(list)){
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(TaskDispatchDetailDO::getId, idList);
wrapper.eq(TaskDispatchDetailDO::getDeleted, 0);
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(updateObj.getId()); TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(updateObj.getId());
for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) { for (TaskDispatchDetailDO dispatchDetailDO : list) {
if (dispatchDetailDO.getPlanStatus()==1){ TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(dispatchDetailDO.getId());
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId()); if (isDetailChanged(taskDispatchDetailDO, dispatchDetailDO)) {
if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){ if (taskDispatchDetailDO.getPlanStatus()==1){
throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认")); 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 }) return await request.put({ url: `/heli/purchase-order-make/updatePartCheckNo`, params })
} }
export const reject = async (params) => { export const reject = async (id:number) => {
return await request.put({ url: `/heli/purchase-order-make/reject`, params }) return await request.get({ url: `/heli/purchase-order-make/reject?id=` +id })
} }
export const approval = async (id: number) => { 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) => { 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-form-item label="子项目名称" prop="projectSubName">
<el-input <el-input
v-model="queryParams.projectSubName" v-model="queryParams.projectSubName"
placeholder="请输入项目名称" placeholder="请输入项目名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
@ -38,7 +38,7 @@
<el-form-item label="物料名称" prop="materialName"> <el-form-item label="物料名称" prop="materialName">
<el-input <el-input
v-model="queryParams.materialName" v-model="queryParams.materialName"
placeholder="请输入项目名称" placeholder="请输入物料名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
@ -47,23 +47,6 @@
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <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 @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-item>
</el-form> </el-form>
</ContentWrap> </ContentWrap>

View File

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

View File

@ -151,7 +151,7 @@ const handleReject = async () => {
const reject = async() => { const reject = async() => {
// updateParams.reason = reason // updateParams.reason = reason
// //
await PartPurchaseOrderApi.reject(updateParams) await PartPurchaseOrderApi.reject(formData.value.id)
message.success("驳回成功"); message.success("驳回成功");
router.push({ path: '/purchase/PurchaseOrderMake'}); router.push({ path: '/purchase/PurchaseOrderMake'});
tagsViewStore.delVisitedView(router.currentRoute.value) 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"> <script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import download from '@/utils/download' import download from '@/utils/download'
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail' import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
import * as StorageinApi from '@/api/heli/storagein' import * as StorageinApi from '@/api/heli/storagein'
import { ElTable } from 'element-plus' import { ElTable } from 'element-plus'
import {useUserStore} from "@/store/modules/user";
import {ref} from "vue"; import {ref} from "vue";
import {dateFormatter2} from "@/utils/formatTime"; import {dateFormatter2} from "@/utils/formatTime";
import {PurchaseOrderNoDetailVO} from "@/api/heli/purchaseordernodetail";
import * as ProcessBomApi from "@/api/heli/processbom";
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
defineOptions({ name: 'PurchaseOrder' }) defineOptions({ name: 'PurchaseOrder' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
@ -173,7 +168,7 @@ const queryParams = reactive({
description: undefined, description: undefined,
creator: undefined, creator: undefined,
createTime: undefined, createTime: undefined,
receivingStatus:undefined, receivingStatus:1,
projectName:undefined, projectName:undefined,
projectSubName:undefined, projectSubName:undefined,
supplierName:undefined, supplierName:undefined,

View File

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