近期修改

This commit is contained in:
z 2025-08-17 20:11:38 +08:00
parent 947a1c1048
commit 139474bec6
15 changed files with 528 additions and 108 deletions

View File

@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -83,7 +84,13 @@ public class PurchaseOrderMakeController {
PageResult<PurchaseOrderMakeDO> pageResult = purchaseOrderMakeService.getPurchaseOrderMakePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderMakeRespVO.class));
}
@GetMapping("/pages")
@Operation(summary = "获得采购单审批")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make:query')")
public CommonResult<PageResult<PurchaseOrderMakeDetailDO>> getPurchaseOrderMakePages(@Valid PurchaseOrderMakePageReqVO pageReqVO) {
PageResult<PurchaseOrderMakeDetailDO> pageResult = purchaseOrderMakeService.getPurchaseOrderMakePages(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购单主 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make:export')")
@ -159,4 +166,14 @@ public class PurchaseOrderMakeController {
public CommonResult<Long> countReview() {
return success(partPurchaseOrderService.countReview());
}
@GetMapping("/rejects")
@Operation(summary = "采购明细驳回")
public CommonResult<Boolean> rejects(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.rejects(id));
}
@GetMapping("/approvals")
@Operation(summary = "采购单批准")
public CommonResult<Boolean> approvals(@RequestParam("id") Long id) {
return success(partPurchaseOrderService.approvals(id));
}
}

View File

@ -87,4 +87,14 @@ public class PurchaseOrderMakePageReqVO extends PageParam {
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "责任人")
private String ownerName;
@Schema(description = "零件名称")
private String materialName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "图号")
private String blueprintNo;
@Schema(description = "图号")
private String procedureName;
}

View File

@ -1,95 +1,110 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail.PurchaseOrderMakeDetailService;
@Tag(name = "管理后台 - 采购单明细")
@RestController
@RequestMapping("/heli/purchase-order-make-detail")
@Validated
public class PurchaseOrderMakeDetailController {
@Resource
private PurchaseOrderMakeDetailService purchaseOrderMakeDetailService;
@PostMapping("/create")
@Operation(summary = "创建采购单明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:create')")
public CommonResult<Long> createPurchaseOrderMakeDetail(@Valid @RequestBody PurchaseOrderMakeDetailSaveReqVO createReqVO) {
return success(purchaseOrderMakeDetailService.createPurchaseOrderMakeDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购单明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:update')")
public CommonResult<Boolean> updatePurchaseOrderMakeDetail(@Valid @RequestBody PurchaseOrderMakeDetailSaveReqVO updateReqVO) {
purchaseOrderMakeDetailService.updatePurchaseOrderMakeDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购单明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:delete')")
public CommonResult<Boolean> deletePurchaseOrderMakeDetail(@RequestParam("id") Long id) {
purchaseOrderMakeDetailService.deletePurchaseOrderMakeDetail(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购单明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:query')")
public CommonResult<PurchaseOrderMakeDetailRespVO> getPurchaseOrderMakeDetail(@RequestParam("id") Long id) {
PurchaseOrderMakeDetailDO purchaseOrderMakeDetail = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetail(id);
return success(BeanUtils.toBean(purchaseOrderMakeDetail, PurchaseOrderMakeDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购单明细分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:query')")
public CommonResult<PageResult<PurchaseOrderMakeDetailRespVO>> getPurchaseOrderMakeDetailPage(@Valid PurchaseOrderMakeDetailPageReqVO pageReqVO) {
PageResult<PurchaseOrderMakeDetailDO> pageResult = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderMakeDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购单明细 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderMakeDetailExcel(@Valid PurchaseOrderMakeDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderMakeDetailDO> list = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购单明细.xls", "数据", PurchaseOrderMakeDetailRespVO.class,
BeanUtils.toBean(list, PurchaseOrderMakeDetailRespVO.class));
}
}
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail;
import cn.hutool.core.util.ObjectUtil;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail.PurchaseOrderMakeDetailService;
@Tag(name = "管理后台 - 采购单明细")
@RestController
@RequestMapping("/heli/purchase-order-make-detail")
@Validated
public class PurchaseOrderMakeDetailController {
@Resource
private PurchaseOrderMakeDetailService purchaseOrderMakeDetailService;
@Resource
private PurchaseOrderMakeDetailMapper purchaseOrderMakeDetailMapper;
@PostMapping("/create")
@Operation(summary = "创建采购单明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:create')")
public CommonResult<Long> createPurchaseOrderMakeDetail(@Valid @RequestBody PurchaseOrderMakeDetailSaveReqVO createReqVO) {
return success(purchaseOrderMakeDetailService.createPurchaseOrderMakeDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购单明细")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:update')")
public CommonResult<Boolean> updatePurchaseOrderMakeDetail(@Valid @RequestBody PurchaseOrderMakeDetailSaveReqVO updateReqVO) {
if (ObjectUtil.isNotEmpty(updateReqVO.getUpdateList())){
for (PurchaseOrderMakeDetailDO pageRespVO : updateReqVO.getUpdateList()) {
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(pageRespVO.getId());
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
if (orderMakeDetailDO.getStatus() != 2){
return CommonResult.error(400,"该物料"+orderMakeDetailDO.getBoomName()+"不是审核状态,请确认!");
}
}
}
}
purchaseOrderMakeDetailService.updatePurchaseOrderMakeDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购单明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:delete')")
public CommonResult<Boolean> deletePurchaseOrderMakeDetail(@RequestParam("id") Long id) {
purchaseOrderMakeDetailService.deletePurchaseOrderMakeDetail(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购单明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:query')")
public CommonResult<PurchaseOrderMakeDetailRespVO> getPurchaseOrderMakeDetail(@RequestParam("id") Long id) {
PurchaseOrderMakeDetailDO purchaseOrderMakeDetail = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetail(id);
return success(BeanUtils.toBean(purchaseOrderMakeDetail, PurchaseOrderMakeDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购单明细分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:query')")
public CommonResult<PageResult<PurchaseOrderMakeDetailRespVO>> getPurchaseOrderMakeDetailPage(@Valid PurchaseOrderMakeDetailPageReqVO pageReqVO) {
PageResult<PurchaseOrderMakeDetailDO> pageResult = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderMakeDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购单明细 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-make-detail:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderMakeDetailExcel(@Valid PurchaseOrderMakeDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderMakeDetailDO> list = purchaseOrderMakeDetailService.getPurchaseOrderMakeDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购单明细.xls", "数据", PurchaseOrderMakeDetailRespVO.class,
BeanUtils.toBean(list, PurchaseOrderMakeDetailRespVO.class));
}
}

View File

@ -13,11 +13,13 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.supplier.vo.SupplierSav
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.supplier.SupplierMapper;
import com.chanko.yunxi.mes.module.heli.service.purchaseorderno.PurchaseOrderNoService;
import com.chanko.yunxi.mes.module.heli.service.supplier.SupplierService;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -59,6 +61,8 @@ public class PurchaseOrderNoController {
@Resource
private PartPurchaseOrderService partPurchaseOrderService;
@Resource
private PurchaseOrderMakeDetailMapper purchaseOrderMakeDetailMapper;
@PostMapping("/create")
@Operation(summary = "创建采购订单主")
@ -142,6 +146,16 @@ public class PurchaseOrderNoController {
@PostMapping("/submit")
@Operation(summary = "提交订单生成信息")
public CommonResult<Boolean> submit(@Valid @RequestBody List<PartPurchaseOrderPageRespVO> list) {
if (ObjectUtil.isNotEmpty( list)){
for (PartPurchaseOrderPageRespVO pageRespVO : list) {
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(pageRespVO.getId());
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
if (orderMakeDetailDO.getStatus() != 2){
return CommonResult.error(400,"该物料"+orderMakeDetailDO.getBoomName()+"不是审核状态,请确认!");
}
}
}
}
return success(partPurchaseOrderService.submit(list));
}

View File

@ -13,6 +13,7 @@ import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import org.apache.poi.hssf.record.crypto.Biff8DecryptingStream;
/**
* 采购单明细 DO
@ -110,10 +111,18 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
* 子项目名称唯一
*/
private String name;
/**
* 审核人
*/
private Long auditor;
/**
* 子项目简码
*/
private String nameSim;
/**
* 审核时间
*/
private LocalDateTime auditTime;
/**
* 采购订单主表id
*/
@ -155,12 +164,17 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
* 物料id
*/
private Long materialId;
/**
* 单据状态,0 待送审1已送审2已审核3已打回 默认是1
*/
private Integer status;
/**
* 工序名称
*/
@TableField(exist = false)
private String procedureName;
@TableField(exist = false)
private BigDecimal unitPrice;
/**
* 泡沫
*/
@ -169,7 +183,12 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
private String projectName;
@TableField(exist = false)
private String matName;
@TableField(exist = false)
private String brief;
@TableField(exist = false)
private String blueprintNo;
@TableField(exist = false)
private String duEmpName;
/**
* 零件理论重量
*/

View File

@ -11,6 +11,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.MaterialPlanBoomPageReqVO;
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.PurchaseOrderMakePageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
@ -51,7 +52,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,PurchaseOrderNoDetailDO::getMaterialId)
.disableSubLogicDel()
.eq(PurchaseOrderMakeDO::getGoodsType,1)
.eq(PurchaseOrderMakeDO::getStatus,2);
.eq(PurchaseOrderMakeDetailDO::getStatus,2);
if (!StringUtils.isEmpty(reqVO.getProjectName())){
query.like(ProjectOrderDO::getProjectName, reqVO.getProjectName());
}
@ -98,9 +99,10 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
.disableSubLogicDel()
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
.eq(PurchaseOrderMakeDetailDO::getDeleted, 0)
.eq(PurchaseOrderMakeDetailDO::getStatus,2)
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDetailDO::getStatus, pageReqVO.getDocumentStatus())
.like(StringUtils.isNotBlank(pageReqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, pageReqVO.getProjectName())
.like(StringUtils.isNotBlank(pageReqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, pageReqVO.getProjectSubName())
.like(StringUtils.isNotBlank(pageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, pageReqVO.getMaterialName())
@ -162,4 +164,38 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id);
return selectList(query);
}
default PageResult<PurchaseOrderMakeDetailDO> getPurchaseOrderMakePages(PurchaseOrderMakePageReqVO pageReqVO){
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderMakeDetailDO.class)
.select("c.nickname as duEmpName")
.select("a.brief as brief")
.select("d.brief as supplierName")
.select("bom.blueprint_no as blueprintNo")
.select("CASE \n" +
" WHEN t.purchase_amount = 0 THEN 0 \n" +
" ELSE ROUND(t.estimated_price / t.purchase_amount, 1)\n" +
"END AS unitPrice")
.select("e.name as procedureName")
.leftJoin(PurchaseOrderMakeDO.class,"a",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId)
.leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,PurchaseOrderMakeDO::getProjectId)
.leftJoin(AdminUserDO.class,"c", AdminUserDO::getId,PurchaseOrderMakeDetailDO::getDuEmpId)
.leftJoin(SupplierDO.class, "d", SupplierDO::getId,PurchaseOrderMakeDetailDO::getSupplierId)
.leftJoin(ProcedureDO.class, "e", ProcedureDO::getId, PurchaseOrderMakeDetailDO::getProcedureId)
.leftJoin(ProcessBomDetailDO.class, "bom", ProcessBomDetailDO::getId, PurchaseOrderMakeDetailDO::getBoomDetailId)
.leftJoin(ProjectOrderSubDO.class,"sub", ProjectOrderSubDO::getId, PurchaseOrderMakeDetailDO::getProjectPlanSubId)
.disableSubLogicDel()
.eq(ObjectUtil.isNotEmpty(pageReqVO.getGoodsType()) ,PurchaseOrderMakeDO::getGoodsType, pageReqVO.getGoodsType())
.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, pageReqVO.getProjectName())
.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName())
.like(ObjectUtil.isNotEmpty(pageReqVO.getMaterialName()), PurchaseOrderMakeDetailDO::getBoomName, pageReqVO.getMaterialName())
.like(ObjectUtil.isNotEmpty(pageReqVO.getStatus()), PurchaseOrderMakeDetailDO::getStatus, pageReqVO.getStatus())
.like(ObjectUtil.isNotEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
.like(ObjectUtil.isNotEmpty(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
.like(ObjectUtil.isNotEmpty(pageReqVO.getBrief()), PurchaseOrderMakeDO::getBrief, pageReqVO.getBrief())
.like(ObjectUtil.isNotEmpty(pageReqVO.getBlueprintNo()), ProcessBomDetailDO::getBlueprintNo, pageReqVO.getBlueprintNo())
.like(ObjectUtil.isNotEmpty(pageReqVO.getProcedureName()), ProcedureDO::getName, pageReqVO.getProcedureName())
.like(ObjectUtil.isNotEmpty(pageReqVO.getSupplierName()), SupplierDO::getBrief, pageReqVO.getSupplierName());
return selectPage(pageReqVO, query);
}
}

View File

@ -67,4 +67,8 @@ public interface PartPurchaseOrderService {
CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(Long id);
Long countReview();
Boolean approvals(Long id);
Boolean rejects(Long id);
}

View File

@ -227,7 +227,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, id);
purchaseOrderMakeDetailMapper.delete(wrapper);
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id);
materialPlanBoomDOs.forEach(materialPlanBoom -> {
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", materialPlanBoom.getId())
@ -356,6 +356,58 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
return purchaseOrderMakeMapper.selectCount(queryWrapper);
}
@Override
public Boolean approvals(Long id) {
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(id);
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
orderMakeDetailDO.setStatus(2);
orderMakeDetailDO.setAuditTime(LocalDateTime.now());
orderMakeDetailDO.setAuditor(getLoginUser().getId());
purchaseOrderMakeDetailMapper.updateById(orderMakeDetailDO);
}
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id);
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO();
materialPlanBoom.setId(materialPlanBoomDO.getId());
materialPlanBoom.setMplanStatus(2);
materialPlanBoomMapper.updateById(materialPlanBoom);
});
return true;
}
@Override
public Boolean rejects(Long id) {
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(id);
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!"));
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId());
purchaseOrderMakeDetailMapper.deleteById(orderMakeDetailDO);
if (ObjectUtil.isNotEmpty(orderMakeDO)){
LambdaQueryWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, orderMakeDO.getId());
if (purchaseOrderMakeDetailMapper.selectCount(wrapper) == 0){
purchaseOrderMakeMapper.deleteById(orderMakeDO.getId());
}
}
}
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id);
materialPlanBoomDOs.forEach(materialPlanBoom -> {
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", materialPlanBoom.getId())
.set("mplan_status", 3)
.set("project_purchase_order_make_id", null)
.set("purchase_no", null)
.set("project_purchase_order_make_detail_id", null)
.set("estimated_price", BigDecimal.ZERO)
.set("supplier_id", null)
.set("mat_rest",null);
materialPlanBoomMapper.update(updateWrapper);
});
return true;
}
public Boolean createPurchaseOrderMakeAndDetail(MaterialPlanBoomDO updateReqVO, long purchaseOrderMakeId, String purchaseOrderMakeDOPurchaseNo,Long planId) {
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
purchaseOrderMakeDetailDO.setPurchaseOrderId(purchaseOrderMakeId);

View File

@ -6,6 +6,7 @@ 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;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
/**
* 采购单主 Service 接口
@ -53,4 +54,6 @@ public interface PurchaseOrderMakeService {
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO);
PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO);
PageResult<PurchaseOrderMakeDetailDO> getPurchaseOrderMakePages(PurchaseOrderMakePageReqVO pageReqVO);
}

View File

@ -1,5 +1,7 @@
package com.chanko.yunxi.mes.module.heli.service.purchaseordermake;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -30,6 +32,8 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
@Resource
private PurchaseOrderMakeMapper purchaseOrderMakeMapper;
@Resource
private PurchaseOrderMakeDetailMapper purchaseOrderMakeDetailMapper;
@Override
public Long createPurchaseOrderMake(PurchaseOrderMakeSaveReqVO createReqVO) {
@ -78,4 +82,9 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
return purchaseOrderMakeMapper.review(pageReqVO);
}
@Override
public PageResult<PurchaseOrderMakeDetailDO> getPurchaseOrderMakePages(PurchaseOrderMakePageReqVO pageReqVO) {
return purchaseOrderMakeDetailMapper.getPurchaseOrderMakePages(pageReqVO);
}
}

View File

@ -29,7 +29,10 @@ export const submitForm = async (data) => {
export const getPartCheckPage = async (params) => {
return await request.get({ url: `/heli/purchase-order-make/page`, params })
}
// 获取零件采购单审批分页
export const getPartCheckPages = async (params) => {
return await request.get({ url: `/heli/purchase-order-make/pages`, params })
}
// 查询采购单主
export const getPurchaseOrderMake = async (id: number) => {
return await request.get({ url: `/heli/purchase-order-make/get?id=` + id })
@ -67,3 +70,9 @@ export const review = async (params) => {
export const obtainReviewDetails = async (id:number) => {
return await request.get({ url: `/heli/purchase-order-make/obtainReviewDetails?id=` +id })
}
export const rejects = async (id:number) => {
return await request.get({ url: `/heli/purchase-order-make/rejects?id=` +id })
}
export const approvals = async (id: number) => {
return await request.get({ url: `/heli/purchase-order-make/approvals?id=` + id })
}

View File

@ -375,10 +375,15 @@ const opearteForm = async(type) =>{
updateList:ids.value,
buyType:0
}
await purchaseOrderMakeDetailApi.updatePurchaseOrderDetail(form);
loading.value = false
message.success("生成成功")
await getList();
try {
await purchaseOrderMakeDetailApi.updatePurchaseOrderDetail(form); // API
message.success("生成成功"); // &#9888;
} catch (error) {
} finally {
loading.value = false; // &#9209;
await getList(); // &#128260;
}
}
}else{
message.error("至少选择一项后进行操作!")

View File

@ -0,0 +1,226 @@
<template>
<el-card class="hl-card">
<template #header>
<span>采购单审批</span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
<el-form-item label="项目编号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="项目编号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="客户简称" prop="brief">
<el-input v-model="queryParams.brief" placeholder="客户简称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="子项目名称" prop="projectSubName">
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="图号" prop="blueprintNo">
<el-input v-model="queryParams.blueprintNo" placeholder="图号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="零件名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="零件名称" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="责任人" prop="ownerName">
<el-input v-model="queryParams.ownerName" placeholder="责任人" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_DOCUMENT_STATUS).filter(item=>item.value==1 || item.value==2)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="采购单类型" prop="goodType">
<el-select v-model="queryParams.goodsType" placeholder="请选择采购单类型" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PART_PURCHASE_ORDER_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="供应商" prop="supplierName">
<el-input v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="工序" prop="procedureName">
<el-input v-model="queryParams.procedureName" placeholder="工序" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item style="margin-left:15px">
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
<el-table-column label="序号" type="index" align="center" fixed min-width="70px" />
<el-table-column label="送审日期" align="center" prop="createTime" min-width="150px" :formatter="dateFormatter1"/>
<el-table-column label="客户简称" align="center" prop="brief" min-width="100px" />
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="250px" />
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120px" />
<el-table-column label="零件名称" align="center" prop="boomName" min-width="180px" />
<el-table-column label="规格" align="center" prop="boomSpec" min-width="120px" />
<el-table-column label="工序" align="center" prop="procedureName" min-width="120px" />
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="100px" />
<el-table-column label="采购数量" align="center" prop="purchaseAmount" min-width="100px" fixed="right" />
<el-table-column label="供应商" align="center" prop="supplierName" min-width="150px" fixed="right"/>
<el-table-column label="单价" align="center" prop="unitPrice" min-width="100px" fixed="right"/>
<el-table-column label="总价" align="center" prop="estimatedPrice" min-width="100px" fixed="right" />
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="100px" fixed="right"/>
<el-table-column label="要求到货日期" align="center" prop="requireTime" min-width="150px" :formatter="dateFormatter1"/>
<el-table-column label="操作" align="center" fixed="right" min-width="180">
<template #default="scope">
<el-button
v-if="scope.row.status != 2"
link
type="primary"
@click="approve(scope.row.id)"
>
审核
</el-button>
<el-button link type="danger" @click="reject(scope.row.id)" v-if="scope.row.status != 2">
驳回
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
import {dateFormatter1} from "@/utils/formatTime";
import {approvals, review} from "@/api/heli/partpurchaseorder";
defineOptions({ name: 'MaterialPlan' })
const router = useRouter()
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
id: undefined,
purchaseNo: undefined,
projectId: undefined,
projectPlanId: undefined,
submitUserId: undefined,
projectName: undefined,
projectSubName: undefined,
supplierName:undefined,
submitTime: [],
auditor: undefined,
auditTime: [],
goodsType: 2,
description: undefined,
createTime: [],
matType:0,
status:1,
projectCode:undefined,
blueprintNo:undefined,
materialName:undefined,
brief:undefined,
ownerName:undefined,
procedureName:undefined
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PartPurchaseOrderApi.getPartCheckPages(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
const approve = async (id:number) => {
await PartPurchaseOrderApi.approvals(id)
message.success("审批成功");
getList();
}
const reject = async (id:number) => {
await PartPurchaseOrderApi.rejects(id)
message.success("驳回成功");
getList();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const openForm = (type: string, id?: number) => {
switch (type) {
case 'create':
router.push({ path: '/purchase/materialplanadd', query: { id: id } })
break;
case 'update':
router.push({ path: '/purchase/materialplanedit', query: { id: id } })
break;
case 'detail':
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
break;
case 'check':
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
break;
default:
break;
}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await MaterialPlanApi.delMaterialPlan(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch { }
}
const userInit = ref()
/** 初始化 **/
onMounted(async () => {
//
// userInit.value = await UserApi.getSimpleUserList()
getList()
})
</script>

View File

@ -235,7 +235,7 @@ const submitForm = async () => {
]);
message.success("提交成功");
getList(); //
// getList(); //
emit('success');
@ -244,6 +244,7 @@ const submitForm = async () => {
// message.error(`: ${error.message || ""}`);
} finally {
formLoading.value = false;
getList(); //
}
}
const withdraw = async () => {

View File

@ -449,7 +449,7 @@ const refreshStatus = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
pageSize: 300,
taskId: undefined
})
type OwnerListType = {