Merge branch 'main' of http://120.48.141.82:3000/licq/heli-mes
This commit is contained in:
commit
f9a52e3732
@ -94,5 +94,8 @@ public class MaterialPlanBoomRespVO extends PageParam {
|
|||||||
@Schema(description = "物料id")
|
@Schema(description = "物料id")
|
||||||
@ExcelProperty("物料id")
|
@ExcelProperty("物料id")
|
||||||
private Long matId;
|
private Long matId;
|
||||||
|
@Schema(description = "采购单id")
|
||||||
|
@ExcelProperty("采购单id")
|
||||||
|
private Long projectPurchaseOrderMakeId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -66,9 +66,8 @@ public class OrderYsController {
|
|||||||
@Operation(summary = "获得应收记录")
|
@Operation(summary = "获得应收记录")
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
@PreAuthorize("@ss.hasPermission('heli:order-ys:query')")
|
@PreAuthorize("@ss.hasPermission('heli:order-ys:query')")
|
||||||
public CommonResult<OrderYsRespVO> getOrderYs(@RequestParam("id") Integer id) {
|
public CommonResult<OrderYsDO> getOrderYs(@RequestParam("id") Integer id) {
|
||||||
OrderYsDO orderYs = orderYsService.getOrderYs(id);
|
return success(orderYsService.getOrderYs(id));
|
||||||
return success(BeanUtils.toBean(orderYs, OrderYsRespVO.class));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
|
|||||||
@ -59,14 +59,14 @@ public class OrderYsRespVO {
|
|||||||
@ExcelProperty("备注")
|
@ExcelProperty("备注")
|
||||||
private String rem;
|
private String rem;
|
||||||
|
|
||||||
private BigDecimal shouFuKuanBiLi;
|
private BigDecimal shouFuKuan;
|
||||||
|
|
||||||
private BigDecimal twoFuKuanBiLi;
|
private BigDecimal twoFuKuan;
|
||||||
|
|
||||||
private BigDecimal threeFuKuanBiLi;
|
private BigDecimal threeFuKuan;
|
||||||
|
|
||||||
private BigDecimal fourFuKuanBiLi;
|
private BigDecimal fourFuKuan;
|
||||||
private BigDecimal fiveFuKuanBiLi;
|
private BigDecimal fiveFuKuan;
|
||||||
private BigDecimal sixFuKuanBiLi;
|
private BigDecimal sixFuKuan;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,9 +1,7 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake;
|
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.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO;
|
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.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
|
||||||
import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService;
|
import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -118,12 +116,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,4 +133,23 @@ public class PurchaseOrderMakeController {
|
|||||||
PageResult<PartPurchaseOrderPageRespVO> pageResult = partPurchaseOrderService.getDetail(partPurchaseOrderPageReqVO);
|
PageResult<PartPurchaseOrderPageRespVO> pageResult = partPurchaseOrderService.getDetail(partPurchaseOrderPageReqVO);
|
||||||
return success(pageResult);
|
return success(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/createPurchaseOrderMakeAndDetail")
|
||||||
|
@Operation(summary = "零件采购单送审生成")
|
||||||
|
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
|
||||||
|
public CommonResult<Boolean> createPurchaseOrderMakeAndDetail(@Valid @RequestBody List<MaterialPlanBoomDO> 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -171,4 +171,8 @@ public class PartPurchaseOrderPageRespVO extends BaseDO {
|
|||||||
* 单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1
|
* 单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1
|
||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
private String isFoam;
|
||||||
|
private Long projectId;
|
||||||
|
private Long projectPlanId;
|
||||||
|
private String customerId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
@ -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.*;
|
||||||
@ -79,4 +80,59 @@ public class PurchaseOrderMakeSaveReqVO {
|
|||||||
@Schema(description = "驳回原因")
|
@Schema(description = "驳回原因")
|
||||||
private String reason;
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "工艺boom明细id,零件类型:加工件")
|
||||||
|
private Long boomDetailId;
|
||||||
|
|
||||||
|
@Schema(description = "零件名称")
|
||||||
|
private String matName;
|
||||||
|
|
||||||
|
@Schema(description = "规格型号")
|
||||||
|
private String boomSpec;
|
||||||
|
|
||||||
|
@Schema(description = "系统单位")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "材质")
|
||||||
|
private String compositionName;
|
||||||
|
|
||||||
|
@Schema(description = "采购数量")
|
||||||
|
private BigDecimal purchaseAmount;
|
||||||
|
|
||||||
|
@Schema(description = "预计到货日期")
|
||||||
|
private LocalDateTime arriveTime;
|
||||||
|
|
||||||
|
@Schema(description = "需求数量")
|
||||||
|
private BigDecimal boomAmount;
|
||||||
|
|
||||||
|
@Schema(description = "需求到货日期")
|
||||||
|
private LocalDateTime boomArriveDate;
|
||||||
|
|
||||||
|
@Schema(description = "供应商id")
|
||||||
|
private Long supplierId;
|
||||||
|
|
||||||
|
@Schema(description = "物料需求计划id")
|
||||||
|
private Long projectMaterialPlanId;
|
||||||
|
|
||||||
|
@Schema(description = "订单子项目id")
|
||||||
|
private Long projectPlanSubId;
|
||||||
|
|
||||||
|
@Schema(description = "子项目名称")
|
||||||
|
private String projectSubName;
|
||||||
|
|
||||||
|
@Schema(description = "子项目简码")
|
||||||
|
private String projectSubNameSim;
|
||||||
|
@Schema(description = "工序id")
|
||||||
|
private Long procedureId;
|
||||||
|
@Schema(description = "理论重量")
|
||||||
|
private BigDecimal theWeight;
|
||||||
|
/**
|
||||||
|
* 责任人id
|
||||||
|
*/
|
||||||
|
private Long duEmpId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 泡沫
|
||||||
|
*/
|
||||||
|
private String isFoam;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -177,4 +177,40 @@ public class MaterialPlanBoomDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String brief;
|
private String brief;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户id
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long customerId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目简码
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String projectNameSim;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子项目简码
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String projectSubNameSim;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal purchaseAmounts;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long supplierIds;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal estimatedPrices;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private LocalDateTime arriveTimes;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String descriptions;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal theWeight;
|
||||||
|
/**
|
||||||
|
* 泡沫否 Y 是 N 否
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String isFoams;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,17 +70,17 @@ public class OrderYsDO extends BaseDO {
|
|||||||
private BigDecimal amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal shouFuKuanBiLi;
|
private BigDecimal shouFuKuan;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal twoFuKuanBiLi;
|
private BigDecimal twoFuKuan;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal threeFuKuanBiLi;
|
private BigDecimal threeFuKuan;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal fourFuKuanBiLi;
|
private BigDecimal fourFuKuan;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal fiveFuKuanBiLi;
|
private BigDecimal fiveFuKuan;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal sixFuKuanBiLi;
|
private BigDecimal sixFuKuan;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -156,5 +156,15 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private Long materialId;
|
private Long materialId;
|
||||||
|
/**
|
||||||
|
* 工序名称
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long procedureName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 泡沫
|
||||||
|
*/
|
||||||
|
private String isFoam;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO;
|
||||||
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;
|
||||||
@ -206,10 +207,15 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
default PageResult<MaterialPlanBoomDO> getPartsPages(MaterialPlanPageReqVO pageReqVO){
|
default PageResult<MaterialPlanBoomDO> getPartsPages(MaterialPlanPageReqVO pageReqVO){
|
||||||
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
||||||
query.selectAll(MaterialPlanBoomDO.class)
|
query.selectAll(MaterialPlanBoomDO.class)
|
||||||
.select("p.project_name as projectName","p.name as projectSubName")
|
.select("p.project_name as projectName","p.name as projectSubName","p.name_sim as projectSubNameSim")
|
||||||
.select("d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName")
|
.select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName")
|
||||||
.select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName")
|
.select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName")
|
||||||
.select(MaterialPlanDO::getBrief)
|
.select("m.the_weight as theWeight")
|
||||||
|
.select("COALESCE(m.purchase_amount, t.boom_amount) AS purchaseAmounts,m.supplier_id as supplierIds,m.estimated_price as estimatedPrices")
|
||||||
|
.select("m.arrive_time as arriveTimes,m.description as descriptions")
|
||||||
|
.select("m.is_foam as isFoams")
|
||||||
|
.leftJoin(PurchaseOrderMakeDetailDO.class,"m",PurchaseOrderMakeDetailDO::getId,MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId)
|
||||||
|
.select(MaterialPlanDO::getBrief, MaterialPlanDO::getCustomerId, MaterialPlanDO::getProjectId, MaterialPlanDO::getProjectNameSim)
|
||||||
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
||||||
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
|
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
|
||||||
.leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
.leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
||||||
@ -226,9 +232,19 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
.like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName())
|
.like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName())
|
||||||
.eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType())
|
.eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType())
|
||||||
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus())
|
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus())
|
||||||
.in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3))
|
.in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != null && pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3))
|
||||||
.eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo());
|
.eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo());
|
||||||
|
|
||||||
|
if (Objects.nonNull(pageReqVO.getMplanStatus())) {
|
||||||
|
// 根据 mplanStatus 的值动态设置排序字段
|
||||||
|
if (pageReqVO.getMplanStatus() == 1) {
|
||||||
|
query.orderByDesc(MaterialPlanBoomDO::getPurchaseNo);
|
||||||
|
} else {
|
||||||
|
query.orderByAsc(MaterialPlanBoomDO::getCreateTime);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PageResult<MaterialPlanBoomDO> pageResult = selectPage(pageReqVO, query);
|
PageResult<MaterialPlanBoomDO> pageResult = selectPage(pageReqVO, query);
|
||||||
return pageResult;
|
return pageResult;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,8 +50,8 @@ public interface OrderYsMapper extends BaseMapperX<OrderYsDO> {
|
|||||||
MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<OrderYsDO> query = new MPJLambdaWrapper<>();
|
||||||
query.selectAll(OrderYsDO.class)
|
query.selectAll(OrderYsDO.class)
|
||||||
.select("sum(i.amount) as amount")
|
.select("sum(i.amount) as amount")
|
||||||
.select("p.shou_Fu_Kuan_Bi_Li as shouFuKuanBiLi","p.two_Fu_Kuan_Bi_Li as twoFuKuanBiLi","p.three_Fu_Kuan_Bi_Li as threeFuKuanBiLi")
|
.select("p.shou_Fu_Kuan as shouFuKuan","p.two_Fu_Kuan as twoFuKuan","p.three_Fu_Kuan as threeFuKuan")
|
||||||
.select("p.four_Fu_Kuan_Bi_Li as fourFuKuanBiLi","p.five_Fu_Kuan_Bi_Li as fiveFuKuanBiLi","p.six_Fu_Kuan_Bi_Li as sixFuKuanBiLi")
|
.select("p.four_Fu_Kuan as fourFuKuan","p.five_Fu_Kuan as fiveFuKuan","p.six_Fu_Kuan as sixFuKuan")
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
"finance_invoice i ON i.order_code = t.code AND i.business_type = 'FINANCE_MAKE_INVOICE' AND i.status !='3'")
|
||||||
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getCode, OrderYsDO::getCode)
|
||||||
|
|||||||
@ -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){
|
||||||
|
// 引入 MPJLambdaWrapper(MyBatis-Plus-Join 提供)
|
||||||
|
MPJLambdaWrapper<PurchaseOrderMakeDO> wrapper = new MPJLambdaWrapper<>();
|
||||||
|
// 构建查询条件
|
||||||
|
wrapper.selectAll(PurchaseOrderMakeDO.class)
|
||||||
|
.select(
|
||||||
|
"CASE " +
|
||||||
|
"WHEN t.goods_type = 1 THEN '物料' " +
|
||||||
|
"WHEN t.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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
@ -91,6 +92,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
|||||||
.disableLogicDel()
|
.disableLogicDel()
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
|
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
|
||||||
|
.eq(PurchaseOrderMakeDetailDO::getDeleted, 0)
|
||||||
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
|
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
|
||||||
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
|
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
|
||||||
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
|
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
|
||||||
@ -102,8 +104,6 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
|||||||
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
||||||
.like(Objects.nonNull(pageReqVO.getSupplierName()), SupplierDO::getName, pageReqVO.getSupplierName());
|
.like(Objects.nonNull(pageReqVO.getSupplierName()), SupplierDO::getName, pageReqVO.getSupplierName());
|
||||||
|
|
||||||
String sqlStr= query.getTargetSql();
|
|
||||||
|
|
||||||
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query);
|
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query);
|
||||||
return pageResult;
|
return pageResult;
|
||||||
}
|
}
|
||||||
@ -143,4 +143,15 @@ 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)
|
||||||
|
.disableSubLogicDel();
|
||||||
|
query.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId,id);
|
||||||
|
return selectList(query);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,12 @@
|
|||||||
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.PurchaseOrderMakePageReqVO;
|
|
||||||
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.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||||
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 java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -57,9 +56,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<MaterialPlanBoomDO> updateReqVOs);
|
||||||
|
|
||||||
|
CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,30 +1,47 @@
|
|||||||
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.orderyf.vo.OrderYfSaveReqVO;
|
||||||
|
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;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
||||||
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.purchaseorderno.PurchaseOrderNoDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper;
|
||||||
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.dal.mysql.supplier.SupplierMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService;
|
||||||
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.heli.service.supplier.SupplierService;
|
||||||
|
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.context.annotation.Bean;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -32,8 +49,10 @@ 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 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.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
@ -54,6 +73,16 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
private SerialNumberService serialNumberService;
|
private SerialNumberService serialNumberService;
|
||||||
@Resource
|
@Resource
|
||||||
private MaterialPlanBoomMapper materialPlanBoomMapper;
|
private MaterialPlanBoomMapper materialPlanBoomMapper;
|
||||||
|
@Resource
|
||||||
|
private PlanMapper planMapper;
|
||||||
|
@Autowired
|
||||||
|
private PlanSubMapper planSubMapper;
|
||||||
|
@Autowired
|
||||||
|
private AdminUserService adminUserService;
|
||||||
|
@Autowired
|
||||||
|
private OrderYfService orderYfService;
|
||||||
|
@Autowired
|
||||||
|
private SupplierMapper supplierMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
|
public PageResult<PartPurchaseOrderPageRespVO> getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
|
||||||
@ -63,24 +92,36 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean submit(List<PartPurchaseOrderPageRespVO> list) {
|
public boolean submit(List<PartPurchaseOrderPageRespVO> list) {
|
||||||
|
PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO();
|
||||||
|
// 返回
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||||
|
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
// 回写序列记录
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
|
||||||
|
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||||
|
purchaseOrderNoDO.setPurchaseType(1);
|
||||||
|
purchaseOrderNoDO.setGoodsType(2);
|
||||||
|
purchaseOrderNoDO.setSupplierId(list.get(0).getSupplierId());
|
||||||
|
purchaseOrderNoDO.setOrdDate(new Date());
|
||||||
|
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
||||||
|
long purchaseOrderId = purchaseOrderNoDO.getId();
|
||||||
|
OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO();
|
||||||
|
orderYfVO.setCgOrderNum(purchaseOrderNoDO.getPurchaseNo());
|
||||||
|
SupplierDO supplierDO = supplierMapper.selectById(list.get(0).getSupplierId());
|
||||||
|
if (ObjectUtil.isNotEmpty(supplierDO)){
|
||||||
|
orderYfVO.setCgGysname(supplierDO.getName());
|
||||||
|
}
|
||||||
|
BigDecimal sum = list.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(PartPurchaseOrderPageRespVO::getEstimatedPrice)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
orderYfVO.setCgYf(sum);
|
||||||
|
orderYfService.createCg(orderYfVO);
|
||||||
list.forEach(detailDO -> {
|
list.forEach(detailDO -> {
|
||||||
PurchaseOrderNoDO purchaseOrderNoDO = new PurchaseOrderNoDO();
|
|
||||||
// 返回
|
|
||||||
// 月度流水号
|
|
||||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
|
||||||
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
|
||||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
|
||||||
// 回写序列记录
|
|
||||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
|
||||||
|
|
||||||
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
|
|
||||||
purchaseOrderNoDO.setPurchaseType(1);
|
|
||||||
purchaseOrderNoDO.setGoodsType(2);
|
|
||||||
purchaseOrderNoDO.setSupplierId(detailDO.getSupplierId());
|
|
||||||
purchaseOrderNoDO.setOrdDate(new Date());
|
|
||||||
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
|
||||||
long purchaseOrderId = purchaseOrderNoDO.getId();
|
|
||||||
|
|
||||||
// PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = new PurchaseOrderNoDetailDO();
|
// PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = new PurchaseOrderNoDetailDO();
|
||||||
// purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
// purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
||||||
// purchaseOrderNoDetailDO.setBoomDetailId(detailDO.getBoomDetailId());
|
// purchaseOrderNoDetailDO.setBoomDetailId(detailDO.getBoomDetailId());
|
||||||
@ -93,14 +134,25 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
purchaseOrderNoDetailDO.setUpdateTime(null);
|
purchaseOrderNoDetailDO.setUpdateTime(null);
|
||||||
purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
||||||
purchaseOrderNoDetailDO.setPurchaseRemAmount(detailDO.getPurchaseAmount());
|
purchaseOrderNoDetailDO.setPurchaseRemAmount(detailDO.getPurchaseAmount());
|
||||||
|
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(detailDO.getId());
|
||||||
|
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
|
||||||
|
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId());
|
||||||
|
if (ObjectUtil.isNotEmpty(orderMakeDO)){
|
||||||
|
purchaseOrderNoDetailDO.setProjectId(orderMakeDO.getProjectId());
|
||||||
|
purchaseOrderNoDetailDO.setProjectPlanId(orderMakeDO.getProjectPlanId());
|
||||||
|
purchaseOrderNoDetailDO.setCustomerId(orderMakeDO.getCustomerId());
|
||||||
|
}
|
||||||
|
}
|
||||||
purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetailDO);
|
purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetailDO);
|
||||||
long purchaseOrderDetailId = purchaseOrderNoDetailDO.getId();
|
long purchaseOrderDetailId = purchaseOrderNoDetailDO.getId();
|
||||||
|
|
||||||
|
|
||||||
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
|
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
|
||||||
purchaseOrderMakeDetailDO.setId(detailDO.getId());
|
purchaseOrderMakeDetailDO.setId(detailDO.getId());
|
||||||
purchaseOrderMakeDetailDO.setOrderStatus(2);
|
purchaseOrderMakeDetailDO.setOrderStatus(2);
|
||||||
purchaseOrderMakeDetailDO.setPurchaseOrderNoId(purchaseOrderId);
|
purchaseOrderMakeDetailDO.setPurchaseOrderNoId(purchaseOrderId);
|
||||||
purchaseOrderMakeDetailDO.setPurchaseOrderNoDetailId(purchaseOrderDetailId);
|
purchaseOrderMakeDetailDO.setPurchaseOrderNoDetailId(purchaseOrderDetailId);
|
||||||
|
purchaseOrderMakeDetailDO.setPurchaseNo(purchaseOrderNoDO.getPurchaseNo());
|
||||||
purchaseOrderMakeDetailMapper.updateById(purchaseOrderMakeDetailDO);
|
purchaseOrderMakeDetailMapper.updateById(purchaseOrderMakeDetailDO);
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -124,10 +176,12 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
|
|
||||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
|
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
|
||||||
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
||||||
MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO();
|
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||||
materialPlanBoom.setId(materialPlanBoomDO.getId());
|
updateWrapper.eq("id", materialPlanBoomDO.getId())
|
||||||
materialPlanBoom.setMplanStatus(2);
|
.set("mplan_status", 2)
|
||||||
materialPlanBoomMapper.updateById(materialPlanBoom);
|
.set("rej_remark", null);
|
||||||
|
|
||||||
|
materialPlanBoomMapper.update(updateWrapper);
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -140,11 +194,9 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
||||||
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
||||||
|
|
||||||
List<PurchaseOrderMakeDetailDO> list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId());
|
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
|
||||||
list.forEach(detailDO -> {
|
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId());
|
||||||
purchaseOrderNoDetailMapper.deleteById(detailDO);
|
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", updateReqVO.getId());
|
||||||
materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
||||||
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||||
@ -161,30 +213,26 @@ 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())
|
||||||
.set("mplan_status", 3)
|
.set("mplan_status", 3)
|
||||||
.set("project_purchase_order_make_id", null)
|
.set("project_purchase_order_make_id", null)
|
||||||
.set("purchase_no", null)
|
.set("purchase_no", null)
|
||||||
.set("project_purchase_order_make_detail_id", null)
|
.set("project_purchase_order_make_detail_id", null);
|
||||||
.set("purchase_amount", BigDecimal.ZERO)
|
|
||||||
.set("estimated_price", BigDecimal.ZERO)
|
|
||||||
.set("arrive_time",null)
|
|
||||||
.set("supplier_id", null);
|
|
||||||
materialPlanBoomMapper.update(updateWrapper);
|
materialPlanBoomMapper.update(updateWrapper);
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
@ -216,4 +264,122 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO);
|
return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean createPurchaseOrderMakeAndDetailBatch(List<MaterialPlanBoomDO> updateReqVOs) {
|
||||||
|
if (CollectionUtils.isEmpty(updateReqVOs)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
MaterialPlanBoomDO boomDO = updateReqVOs.get(0);
|
||||||
|
|
||||||
|
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
|
||||||
|
// 返回
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||||
|
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
// 回写序列记录
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
|
||||||
|
purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||||
|
purchaseOrderMakeDO.setGoodsType(2);
|
||||||
|
purchaseOrderMakeDO.setStatus(1);
|
||||||
|
purchaseOrderMakeDO.setSubmitUserId(getLoginUser().getId());
|
||||||
|
purchaseOrderMakeDO.setSubmitTime(LocalDateTime.now());
|
||||||
|
purchaseOrderMakeDO.setProjectId(boomDO.getProjectId());
|
||||||
|
PlanDO planDO = planMapper.selectOne("project_id", boomDO.getProjectId());
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(planDO)) {
|
||||||
|
purchaseOrderMakeDO.setProjectPlanId(planDO.getId());
|
||||||
|
}
|
||||||
|
purchaseOrderMakeDO.setCustomerId(boomDO.getCustomerId());
|
||||||
|
purchaseOrderMakeDO.setBrief(boomDO.getBrief());
|
||||||
|
purchaseOrderMakeDO.setProjectName(boomDO.getProjectName());
|
||||||
|
purchaseOrderMakeDO.setProjectNameSim(boomDO.getProjectNameSim());
|
||||||
|
purchaseOrderMakeMapper.insert(purchaseOrderMakeDO);
|
||||||
|
long purchaseOrderMakeId = purchaseOrderMakeDO.getId();
|
||||||
|
String purchaseOrderMakeDOPurchaseNo = purchaseOrderMakeDO.getPurchaseNo();
|
||||||
|
|
||||||
|
updateReqVOs.forEach(updateReq -> {
|
||||||
|
createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo,planDO.getId());
|
||||||
|
});
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
orderMakeDO.setLogList(logList);
|
||||||
|
return CommonResult.success(orderMakeDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean createPurchaseOrderMakeAndDetail(MaterialPlanBoomDO updateReqVO, long purchaseOrderMakeId, String purchaseOrderMakeDOPurchaseNo,Long planId) {
|
||||||
|
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
|
||||||
|
purchaseOrderMakeDetailDO.setPurchaseOrderId(purchaseOrderMakeId);
|
||||||
|
purchaseOrderMakeDetailDO.setBoomDetailId(updateReqVO.getBoomDetailId());
|
||||||
|
purchaseOrderMakeDetailDO.setBoomName(updateReqVO.getMatName());
|
||||||
|
purchaseOrderMakeDetailDO.setBoomSpec(updateReqVO.getBoomSpec());
|
||||||
|
purchaseOrderMakeDetailDO.setBoomUnit(updateReqVO.getUnit());
|
||||||
|
purchaseOrderMakeDetailDO.setComposition(updateReqVO.getCompositionName());
|
||||||
|
purchaseOrderMakeDetailDO.setPurchaseAmount(updateReqVO.getPurchaseAmounts());
|
||||||
|
purchaseOrderMakeDetailDO.setEstimatedPrice(updateReqVO.getEstimatedPrices());
|
||||||
|
purchaseOrderMakeDetailDO.setArriveTime(updateReqVO.getArriveTimes());
|
||||||
|
purchaseOrderMakeDetailDO.setBoomAmount(updateReqVO.getBoomAmount());
|
||||||
|
purchaseOrderMakeDetailDO.setRequireTime(updateReqVO.getBoomArriveDate());
|
||||||
|
purchaseOrderMakeDetailDO.setSupplierId(updateReqVO.getSupplierIds());
|
||||||
|
purchaseOrderMakeDetailDO.setProjectMaterialPlanId(updateReqVO.getProjectMaterialPlanId());
|
||||||
|
purchaseOrderMakeDetailDO.setProjectMaterialPlanBoomId(updateReqVO.getId());
|
||||||
|
purchaseOrderMakeDetailDO.setProjectPlanSubId(updateReqVO.getProjectPlanSubId());
|
||||||
|
purchaseOrderMakeDetailDO.setName(updateReqVO.getProjectSubName());
|
||||||
|
purchaseOrderMakeDetailDO.setNameSim(updateReqVO.getProjectSubNameSim());
|
||||||
|
purchaseOrderMakeDetailDO.setOrderStatus(1);
|
||||||
|
PlanSubDO planSubDO = planSubMapper.selectOne("project_sub_id", updateReqVO.getProjectPlanSubId());
|
||||||
|
purchaseOrderMakeDetailDO.setProjectSubCode(Objects.nonNull(planSubDO)?planSubDO.getProjectSubCode(): null);
|
||||||
|
purchaseOrderMakeDetailDO.setProcedureId(updateReqVO.getProcedureId());
|
||||||
|
purchaseOrderMakeDetailDO.setDescription(updateReqVO.getDescriptions());
|
||||||
|
purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight());
|
||||||
|
purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId());
|
||||||
|
purchaseOrderMakeDetailDO.setIsFoam(updateReqVO.getIsFoam());
|
||||||
|
purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO);
|
||||||
|
long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId();
|
||||||
|
|
||||||
|
MaterialPlanBoomDO materialPlanBoomDO = new MaterialPlanBoomDO();
|
||||||
|
materialPlanBoomDO.setId(updateReqVO.getId());
|
||||||
|
materialPlanBoomDO.setMplanStatus(1);
|
||||||
|
materialPlanBoomDO.setRejRemark("");
|
||||||
|
materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId);
|
||||||
|
materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
|
||||||
|
materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId);
|
||||||
|
materialPlanBoomMapper.updateById(materialPlanBoomDO);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,4 +52,5 @@ public interface PurchaseOrderMakeService {
|
|||||||
*/
|
*/
|
||||||
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO);
|
PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
PageResult<PurchaseOrderMakeDO> review(PurchaseOrderMakePageReqVO pageReqVO);
|
||||||
}
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail;
|
package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.controller.admin.orderyf.vo.OrderYfSaveReqVO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
|
||||||
@ -8,11 +10,14 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.Purchas
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
||||||
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.dal.mysql.supplier.SupplierMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.orderyf.OrderYfService;
|
||||||
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||||
import org.checkerframework.checker.units.qual.A;
|
import org.checkerframework.checker.units.qual.A;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -20,6 +25,7 @@ import javax.annotation.Resource;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
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;
|
||||||
@ -61,6 +67,11 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
private MaterialMapper materialMapper;
|
private MaterialMapper materialMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CompositionMapper compositionMapper;
|
private CompositionMapper compositionMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private OrderYfService orderYfService;
|
||||||
|
@Resource
|
||||||
|
private SupplierMapper supplierMapper;
|
||||||
@Override
|
@Override
|
||||||
public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) {
|
public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -90,6 +101,19 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId());
|
purchaseOrderNoDO.setSupplierId(updateList.get(0).getSupplierId());
|
||||||
purchaseOrderNoDO.setOrdDate(new Date());
|
purchaseOrderNoDO.setOrdDate(new Date());
|
||||||
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
||||||
|
OrderYfSaveReqVO orderYfVO = new OrderYfSaveReqVO();
|
||||||
|
orderYfVO.setCgOrderNum(code);
|
||||||
|
SupplierDO supplierDO = supplierMapper.selectById(updateList.get(0).getSupplierId());
|
||||||
|
if (ObjectUtil.isNotEmpty(supplierDO)){
|
||||||
|
orderYfVO.setCgGysname(supplierDO.getName());
|
||||||
|
}
|
||||||
|
BigDecimal sum = updateList.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(PurchaseOrderMakeDetailDO::getEstimatedPrice)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
orderYfVO.setCgYf(sum);
|
||||||
|
orderYfService.createCg(orderYfVO);
|
||||||
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
|
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
|
||||||
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
|
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
|
||||||
HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>();
|
HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>();
|
||||||
|
|||||||
@ -10,19 +10,29 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.Materi
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
|
||||||
import com.chanko.yunxi.mes.module.heli.service.procedure.ProcedureService;
|
import com.chanko.yunxi.mes.module.heli.service.procedure.ProcedureService;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.storage.StorageService;
|
||||||
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;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
@ -34,6 +44,9 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.Purchase
|
|||||||
|
|
||||||
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.common.pojo.CommonResult.success;
|
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
|
||||||
|
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN;
|
||||||
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_OUT;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,6 +70,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
private MaterialMapper materialMapper;
|
private MaterialMapper materialMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ProcessBomMapper pocessBomMapper;
|
private ProcessBomMapper pocessBomMapper;
|
||||||
|
@Resource
|
||||||
|
private SerialNumberService serialNumberService;
|
||||||
|
@Resource
|
||||||
|
private StorageMapper storageMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMatMapper storageMatMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageService storageService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) {
|
public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) {
|
||||||
@ -124,6 +147,36 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
@Transactional
|
@Transactional
|
||||||
public CommonResult<Boolean> receiveGoods(List<PurchaseOrderNoDetailDO> list) {
|
public CommonResult<Boolean> receiveGoods(List<PurchaseOrderNoDetailDO> list) {
|
||||||
List<MaterialDO> materialDOList=new ArrayList<MaterialDO>();
|
List<MaterialDO> materialDOList=new ArrayList<MaterialDO>();
|
||||||
|
//自动生成入库单
|
||||||
|
StorageDO storageDO = new StorageDO();
|
||||||
|
storageDO.setStockType(1);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
// 入库前缀
|
||||||
|
storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
storageDO.setStatus(2);
|
||||||
|
storageDO.setKeeper(getLoginUser().getId());
|
||||||
|
storageDO.setKeeperTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(storageDO);
|
||||||
|
//自动生成出库单
|
||||||
|
StorageDO out = new StorageDO();
|
||||||
|
out.setStockType(2);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1);
|
||||||
|
// 出库前缀
|
||||||
|
out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumber);
|
||||||
|
out.setStatus(2);
|
||||||
|
out.setOutbound(getLoginUser().getId());
|
||||||
|
out.setOutboundTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(out);
|
||||||
|
//入库物料集合
|
||||||
|
ArrayList<StorageMatDO> storageMatDOS = new ArrayList<>();
|
||||||
|
//出库库物料集合
|
||||||
|
ArrayList<StorageMatDO> outList = new ArrayList<>();
|
||||||
for (PurchaseOrderNoDetailDO detailDO : list) {
|
for (PurchaseOrderNoDetailDO detailDO : list) {
|
||||||
PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId());
|
PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId());
|
||||||
if (ObjectUtil.isNotEmpty(byId)){
|
if (ObjectUtil.isNotEmpty(byId)){
|
||||||
@ -134,6 +187,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
}
|
}
|
||||||
byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts()));
|
byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts()));
|
||||||
purchaseOrderNoDetailMapper.updateById(byId);
|
purchaseOrderNoDetailMapper.updateById(byId);
|
||||||
|
StorageMatDO storageMatDO = new StorageMatDO();
|
||||||
|
StorageMatDO outMat = new StorageMatDO();
|
||||||
|
storageMatDO.setStockId(storageDO.getId());
|
||||||
|
storageMatDO.setStorageOkQty(detailDO.getPurchaseRemAmounts());
|
||||||
|
storageMatDO.setProjectNo(byId.getProjectPlanSubId().toString());
|
||||||
|
storageMatDO.setProjectSubName(byId.getName());
|
||||||
|
outMat.setStockId(out.getId());
|
||||||
|
outMat.setStorageOkQty(detailDO.getPurchaseRemAmounts());
|
||||||
|
outMat.setProjectNo(byId.getProjectPlanSubId().toString());
|
||||||
|
outMat.setProjectSubName(byId.getName());
|
||||||
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId());
|
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId());
|
||||||
if (ObjectUtil.isNotEmpty(bomDetailDO)){
|
if (ObjectUtil.isNotEmpty(bomDetailDO)){
|
||||||
String bomCode="";
|
String bomCode="";
|
||||||
@ -150,9 +213,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(bomDetailDO.getBlueprintNo())){
|
if (ObjectUtil.isNotEmpty(bomDetailDO.getBlueprintNo())){
|
||||||
if (ObjectUtil.isNotEmpty(processBomDO.getBlueprintNo())){
|
|
||||||
blueprintNo=bomDetailDO.getBlueprintNo();
|
blueprintNo=bomDetailDO.getBlueprintNo();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(detailDO.getProjectMaterialPlanBoomId());
|
MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(detailDO.getProjectMaterialPlanBoomId());
|
||||||
if (ObjectUtil.isNotEmpty(boomDO)){
|
if (ObjectUtil.isNotEmpty(boomDO)){
|
||||||
@ -170,13 +231,25 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
materialDO.setVirtualPart("Y");
|
materialDO.setVirtualPart("Y");
|
||||||
MaterialDO material = materialMapper.selectMaterial(code);
|
MaterialDO material = materialMapper.selectMaterial(code);
|
||||||
if (ObjectUtil.isEmpty(material)){
|
if (ObjectUtil.isEmpty(material)){
|
||||||
materialDOList.add(materialDO);
|
// materialDOList.add(materialDO);
|
||||||
|
materialMapper.insert(materialDO);
|
||||||
|
storageMatDO.setMatId(materialDO.getId());
|
||||||
|
outMat.setMatId(materialDO.getId());
|
||||||
|
}else {
|
||||||
|
storageMatDO.setMatId(material.getId());
|
||||||
|
outMat.setMatId(material.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
storageMatDOS.add(storageMatDO);
|
||||||
|
outList.add(outMat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
materialMapper.insertBatch(materialDOList);
|
storageMatMapper.insertBatch(storageMatDOS);
|
||||||
|
storageMatMapper.insertBatch(outList);
|
||||||
|
storageService.updateMatLogList(storageDO.getId(),2);
|
||||||
|
storageService.updateMatLogList(out.getId(),2);
|
||||||
|
|
||||||
|
// materialMapper.insertBatch(materialDOList);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,11 +8,17 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.storageindetail.vo.Stor
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
|
||||||
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.dal.mysql.storage.StorageMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
|
||||||
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.heli.service.storage.StorageService;
|
||||||
import com.sun.corba.se.spi.ior.IdentifiableFactory;
|
import com.sun.corba.se.spi.ior.IdentifiableFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -20,7 +26,9 @@ 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.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -33,8 +41,8 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper;
|
||||||
|
|
||||||
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.CodeEnum.PURCHASE_ORDER;
|
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN;
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,6 +64,12 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
private SerialNumberService serialNumberService;
|
private SerialNumberService serialNumberService;
|
||||||
@Resource
|
@Resource
|
||||||
private PurchaseOrderNoMapper purchaseOrderNoMapper;
|
private PurchaseOrderNoMapper purchaseOrderNoMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMapper storageMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMatMapper storageMatMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageService storageService;
|
||||||
@Override
|
@Override
|
||||||
public Long createStorageIn(StorageInSaveReqVO createReqVO) {
|
public Long createStorageIn(StorageInSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -165,21 +179,29 @@ 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()+"请确认!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StorageInDO storageInDO = new StorageInDO();
|
StorageInDO storageInDO = new StorageInDO();
|
||||||
|
|
||||||
|
//入库物料集合
|
||||||
|
ArrayList<StorageMatDO> storageMatDOS = new ArrayList<>();
|
||||||
|
//出库库物料集合
|
||||||
|
ArrayList<StorageMatDO> outList = new ArrayList<>();
|
||||||
// 月度流水号
|
// 月度流水号
|
||||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||||
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
@ -190,8 +212,54 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
storageInDO.setIsPrint("N");
|
storageInDO.setIsPrint("N");
|
||||||
storageInDO.setOrdDate(new Date());
|
storageInDO.setOrdDate(new Date());
|
||||||
storageInMapper.insert(storageInDO);
|
storageInMapper.insert(storageInDO);
|
||||||
|
// 回写序列记录
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
//自动生成入库单
|
||||||
|
StorageDO storageDO = new StorageDO();
|
||||||
|
storageDO.setStockType(1);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO1 = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO1.setSerialNumber(serialNumberDO1.getSerialNumber()+1);
|
||||||
|
// 入库前缀
|
||||||
|
storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO1.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO1);
|
||||||
|
storageDO.setStatus(2);
|
||||||
|
storageDO.setKeeper(getLoginUser().getId());
|
||||||
|
storageDO.setKeeperTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(storageDO);
|
||||||
|
//自动生成出库单
|
||||||
|
StorageDO out = new StorageDO();
|
||||||
|
out.setStockType(2);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1);
|
||||||
|
// 出库前缀
|
||||||
|
out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumber);
|
||||||
|
out.setStatus(2);
|
||||||
|
out.setOutbound(getLoginUser().getId());
|
||||||
|
out.setOutboundTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(out);
|
||||||
List<StorageInDetailDO> storageInDetailDOList = new ArrayList<>();
|
List<StorageInDetailDO> storageInDetailDOList = new ArrayList<>();
|
||||||
for (PurchaseOrderNoDetailDO orderNoDetailDO : list) {
|
for (PurchaseOrderNoDetailDO orderNoDetailDO : list) {
|
||||||
|
//入库明细
|
||||||
|
StorageMatDO storageMatDO = new StorageMatDO();
|
||||||
|
storageMatDO.setStockId(storageDO.getId());
|
||||||
|
storageMatDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts());
|
||||||
|
storageMatDO.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString());
|
||||||
|
storageMatDO.setProjectSubName(orderNoDetailDO.getName());
|
||||||
|
storageMatDO.setMatId(orderNoDetailDO.getMaterialId());
|
||||||
|
storageMatDOS.add(storageMatDO);
|
||||||
|
//出库明细
|
||||||
|
StorageMatDO outMat = new StorageMatDO();
|
||||||
|
outMat.setStockId(out.getId());
|
||||||
|
outMat.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts());
|
||||||
|
outMat.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString());
|
||||||
|
outMat.setProjectSubName(orderNoDetailDO.getName());
|
||||||
|
outMat.setMatId(orderNoDetailDO.getMaterialId());
|
||||||
|
outList.add(outMat);
|
||||||
|
|
||||||
|
|
||||||
StorageInDetailDO storageInDetailDO = new StorageInDetailDO();
|
StorageInDetailDO storageInDetailDO = new StorageInDetailDO();
|
||||||
storageInDetailDO.setStorageNoId(storageInDO.getId());
|
storageInDetailDO.setStorageNoId(storageInDO.getId());
|
||||||
storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode());
|
storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode());
|
||||||
@ -201,7 +269,23 @@ 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);
|
||||||
|
}
|
||||||
|
if (result.compareTo(BigDecimal.ZERO)==0){
|
||||||
|
storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
storageInDetailDO.setEstimatedPrice(orderNoDetailDO.getPurchaseRemAmounts().multiply( result).setScale(1, RoundingMode.HALF_UP));
|
||||||
|
|
||||||
|
}
|
||||||
storageInDetailDO.setActualPrice(orderNoDetailDO.getActualPrice());
|
storageInDetailDO.setActualPrice(orderNoDetailDO.getActualPrice());
|
||||||
storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount());
|
storageInDetailDO.setBoomAmount(orderNoDetailDO.getBoomAmount());
|
||||||
storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime());
|
storageInDetailDO.setRequireTime(orderNoDetailDO.getRequireTime());
|
||||||
@ -235,8 +319,10 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
storageInDetailDOList.add(storageInDetailDO);
|
storageInDetailDOList.add(storageInDetailDO);
|
||||||
}
|
}
|
||||||
storageInDetailMapper.insertBatch(storageInDetailDOList);
|
storageInDetailMapper.insertBatch(storageInDetailDOList);
|
||||||
// 回写序列记录
|
storageMatMapper.insertBatch(storageMatDOS);
|
||||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
storageMatMapper.insertBatch(outList);
|
||||||
|
storageService.updateMatLogList(storageDO.getId(),2);
|
||||||
|
storageService.updateMatLogList(out.getId(),2);
|
||||||
|
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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()+"已做物料需求计划,不能更改,请确认"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,13 +45,25 @@ 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) => {
|
||||||
return await request.get({ url: `/heli/purchase-order-make/getDetail`, params })
|
return await request.get({ url: `/heli/purchase-order-make/getDetail`, params })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 零件采购单送审生成
|
||||||
|
export const createPurchaseOrderMakeAndDetail = async (data) => {
|
||||||
|
return await request.post({ url: `/heli/purchase-order-make/createPurchaseOrderMakeAndDetail`, data })
|
||||||
|
}
|
||||||
|
export const review = async (params) => {
|
||||||
|
return await request.get({ url: `/heli/purchase-order-make/review`, params })
|
||||||
|
}
|
||||||
|
|
||||||
|
export const obtainReviewDetails = async (id:number) => {
|
||||||
|
return await request.get({ url: `/heli/purchase-order-make/obtainReviewDetails?id=` +id })
|
||||||
|
}
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.9 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.5 MiB |
@ -280,7 +280,7 @@ import { pieOptions, barOptions } from './echarts-data'
|
|||||||
import { useCommonStore } from '@/store/modules/common'
|
import { useCommonStore } from '@/store/modules/common'
|
||||||
//all
|
//all
|
||||||
import * as bdgzsomthingApi from '@/api/heli/bdgzsomthing'
|
import * as bdgzsomthingApi from '@/api/heli/bdgzsomthing'
|
||||||
//采购订单审核
|
//
|
||||||
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
||||||
//订单审核
|
//订单审核
|
||||||
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
||||||
|
|||||||
@ -68,33 +68,41 @@
|
|||||||
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="150" />
|
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="150" />
|
||||||
<el-table-column label="物料编码" align="center" min-width="180" >
|
<el-table-column label="物料编码" align="center" min-width="180" >
|
||||||
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <el-select-->
|
||||||
|
<!-- v-model="scope.row.boomCode"-->
|
||||||
|
<!-- placeholder="请输入物料编码或名称"-->
|
||||||
|
<!-- :remote-method="e => remoteMethod(e,scope.row)"-->
|
||||||
|
<!-- remote-show-suffix-->
|
||||||
|
<!-- remote-->
|
||||||
|
<!-- @click="remoteMethod(scope.row.boomCode,scope.row)"-->
|
||||||
|
<!-- :disabled="scope.row.orderStatus == 2"-->
|
||||||
|
<!-- clearable-->
|
||||||
|
<!-- reserve-keyword-->
|
||||||
|
<!-- filterable-->
|
||||||
|
<!-- @change="e => changeSupp(e,scope.row)"-->
|
||||||
|
<!-- :loading="meterialLoading"-->
|
||||||
|
<!-- class="!w-150px"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in scope.row.materialSelectList"-->
|
||||||
|
<!-- :key="item.code"-->
|
||||||
|
<!-- :label="item.code"-->
|
||||||
|
<!-- :value="item"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <span style="float: left">{{ item.name }}</span>-->
|
||||||
|
<!-- <span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>-->
|
||||||
|
<!-- </el-option>-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!--</template>-->
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-select
|
<el-input v-model="scope.row.boomCode" disabled>
|
||||||
v-model="scope.row.boomCode"
|
<template #suffix>
|
||||||
placeholder="请输入物料编码或名称"
|
<Icon @click="serachLog(scope.row)" icon="ep:search" color="primary"/>
|
||||||
:remote-method="e => remoteMethod(e,scope.row)"
|
</template>
|
||||||
remote-show-suffix
|
</el-input>
|
||||||
remote
|
|
||||||
@click="remoteMethod(scope.row.boomCode,scope.row)"
|
|
||||||
:disabled="scope.row.orderStatus == 2"
|
|
||||||
clearable
|
|
||||||
reserve-keyword
|
|
||||||
filterable
|
|
||||||
@change="e => changeSupp(e,scope.row)"
|
|
||||||
:loading="meterialLoading"
|
|
||||||
class="!w-150px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in scope.row.materialSelectList"
|
|
||||||
:key="item.code"
|
|
||||||
:label="item.code"
|
|
||||||
:value="item"
|
|
||||||
>
|
|
||||||
<span style="float: left">{{ item.name }}</span>
|
|
||||||
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="标准件名称" align="center" prop="boomName" min-width="150" />
|
<el-table-column label="标准件名称" align="center" prop="boomName" min-width="150" />
|
||||||
<el-table-column label="规格型号" align="center" prop="boomSpec" min-width="150" />
|
<el-table-column label="规格型号" align="center" prop="boomSpec" min-width="150" />
|
||||||
@ -150,12 +158,9 @@ import * as purchaseOrderMakeDetailApi from '@/api/heli/purchaseordermakedetail'
|
|||||||
import { useCommonStateWithOut } from '@/store/modules/common'
|
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||||
import * as matApi from '@/api/heli/material'
|
import * as matApi from '@/api/heli/material'
|
||||||
import { useUserStore } from '@/store/modules/user'
|
import { useUserStore } from '@/store/modules/user'
|
||||||
import matLog from './storageLog.vue'
|
import matLog from './storageLogs.vue'
|
||||||
import * as supplierApi from '@/api/heli/supplier'
|
import * as supplierApi from '@/api/heli/supplier'
|
||||||
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
|
|
||||||
import {inject, ref} from "vue";
|
import {inject, ref} from "vue";
|
||||||
import { update } from 'lodash-es'
|
|
||||||
import { Hash } from 'crypto'
|
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const username = userStore.getUser.nickname
|
const username = userStore.getUser.nickname
|
||||||
@ -170,7 +175,6 @@ import {
|
|||||||
formatDate, dateFormatter2
|
formatDate, dateFormatter2
|
||||||
} from "@/utils/formatTime";
|
} from "@/utils/formatTime";
|
||||||
const meterialLoading = ref(false)
|
const meterialLoading = ref(false)
|
||||||
const matLogRef = ref()
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
@ -200,6 +204,7 @@ const queryParams1 = reactive({
|
|||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
const matLogRef = ref()
|
||||||
|
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
@ -262,7 +267,9 @@ const getMateriallist = async(row) =>{
|
|||||||
const data = await matApi.getMaterialPage(queryMaterialParams)
|
const data = await matApi.getMaterialPage(queryMaterialParams)
|
||||||
row.materialSelectList = data.list
|
row.materialSelectList = data.list
|
||||||
}
|
}
|
||||||
|
const serachLog = (row) => {
|
||||||
|
matLogRef.value.open(row.id)
|
||||||
|
}
|
||||||
const handleSelectionChange = (selection) => {
|
const handleSelectionChange = (selection) => {
|
||||||
ids.value = selection;
|
ids.value = selection;
|
||||||
}
|
}
|
||||||
@ -283,13 +290,13 @@ const handleExportDetail = async () => {
|
|||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const getMat = async (rowids,amount,ids) => {
|
const getMat = async (rowids,ids,matCodes) => {
|
||||||
//formData.value.boomItemDOList = arrBoom
|
//formData.value.boomItemDOList = arrBoom
|
||||||
for(var i = 0 ; i < list.value.length ; i ++){
|
for(var i = 0 ; i < list.value.length ; i ++){
|
||||||
if(list.value[i].id == rowids){
|
if(list.value[i].id == rowids){
|
||||||
list.value[i].matRest = amount
|
list.value[i].boomCode = matCodes
|
||||||
list.value[i].materialId = ids
|
list.value[i].materialId = ids
|
||||||
await updateRow(2,list.value[i]);
|
// await updateRow(2,list.value[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -315,9 +322,9 @@ const changeDate = async(e,row) => {
|
|||||||
await updateRow(5,row)
|
await updateRow(5,row)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const serachLog = (row) => {
|
// const serachLog = (row) => {
|
||||||
matLogRef.value.open(row.id,row.matCode)
|
// matLogRef.value.open(row.id,row.matCode)
|
||||||
}
|
// }
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
|
|||||||
@ -0,0 +1,175 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog title="实时库存" v-model="dialogVisible" width="80%">
|
||||||
|
<el-card class="hl-card">
|
||||||
|
|
||||||
|
<ContentWrap class="borderxx">
|
||||||
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||||
|
<el-form-item label="物料名称" prop="matName" >
|
||||||
|
<el-input v-model="queryParams.name" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="规格型号" prop="matName" >
|
||||||
|
<el-input v-model="queryParams.spec" placeholder="规格型号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料简称" prop="shortName" >
|
||||||
|
<el-input v-model="queryParams.shortName" placeholder="物料简称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item >
|
||||||
|
<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 ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true" @row-click="clickRow" @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"/>
|
||||||
|
<el-table-column type="index" width="100" fixed label="序号" align="center" />
|
||||||
|
<el-table-column label="物料编码" align="center" prop="code" fixed min-width="120" />
|
||||||
|
<el-table-column label="物料名称" align="center" prop="name" fixed min-width="120"/>
|
||||||
|
<el-table-column label="物料类型" align="center" prop="materialType" min-width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.materialType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="物料简称" align="center" prop="shortName" min-width="120"/>
|
||||||
|
<el-table-column label="规格/型号" align="center" prop="spec" min-width="120"/>
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页 -->
|
||||||
|
<Pagination
|
||||||
|
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList" />
|
||||||
|
</ContentWrap>
|
||||||
|
</el-card>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="success">
|
||||||
|
确认
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {DICT_TYPE} from "@/utils/dict";
|
||||||
|
import * as MaterialApi from "@/api/heli/material";
|
||||||
|
defineOptions({ name: 'StorageLog' })
|
||||||
|
const printref = ref()
|
||||||
|
const whList = ref([])
|
||||||
|
const rgList = ref([])
|
||||||
|
const pnList = ref([])
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
|
|
||||||
|
const loading = ref(true) // 列表的加载中
|
||||||
|
const list = ref([]) // 列表的数据
|
||||||
|
const total = ref(0) // 列表的总页数
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined,
|
||||||
|
matType: undefined,
|
||||||
|
lotNo: undefined,
|
||||||
|
whId: undefined,
|
||||||
|
rgId:undefined,
|
||||||
|
pnId: undefined,
|
||||||
|
headerNo: undefined,
|
||||||
|
spec:undefined,
|
||||||
|
materialType:undefined,
|
||||||
|
status:1,
|
||||||
|
shortName:undefined
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
|
||||||
|
const currentRow = ref()
|
||||||
|
const multipleTableRef = ref()
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const data = await MaterialApi.getbzjList(queryParams) ;
|
||||||
|
list.value = data.list
|
||||||
|
total.value = data.total
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const clickItem = ref([])
|
||||||
|
const handleCurrentChange = (val) => {
|
||||||
|
clickItem.value = val;
|
||||||
|
if(val.length > 1){
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(val.pop())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const clickRow = (row) => {
|
||||||
|
if (clickItem.value==null){
|
||||||
|
clickItem.value = [];
|
||||||
|
|
||||||
|
}
|
||||||
|
// 单选选中行
|
||||||
|
if ( clickItem.value[0] == row) {
|
||||||
|
// 取消
|
||||||
|
clickItem.value = [];
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
} else {
|
||||||
|
// 选择
|
||||||
|
clickItem.value.push(row);
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(row, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNo = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryFormRef.value.resetFields()
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
const rowid = ref()
|
||||||
|
const open = async (rowids) => {
|
||||||
|
clickItem.value = null;
|
||||||
|
//multipleTableRef.value!.clearSelection()
|
||||||
|
dialogVisible.value = true
|
||||||
|
// queryParams.matName = matCode;
|
||||||
|
rowid.value = rowids
|
||||||
|
console.log(rowids)
|
||||||
|
console.log(rowid.value)
|
||||||
|
await getList();
|
||||||
|
|
||||||
|
}
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
const emit = defineEmits(['success'])
|
||||||
|
// emit('success', multipleSelection.value)
|
||||||
|
const success = () => {
|
||||||
|
dialogVisible.value = false;
|
||||||
|
emit('success', rowid.value, clickItem.value[0].id, clickItem.value[0].code)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(async () => {
|
||||||
|
|
||||||
|
await getList()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
@ -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>
|
||||||
|
|||||||
@ -78,35 +78,35 @@
|
|||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="首付款" prop="shouFuKuanBiLi" >
|
<el-form-item label="首付款" prop="shouFuKuan" >
|
||||||
<el-input v-model="formData.shouFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.shouFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第二笔款" prop="twoFuKuanBiLi" >
|
<el-form-item label="第二笔款" prop="twoFuKuan" >
|
||||||
<el-input v-model="formData.twoFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.twoFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第三笔款" prop="threeFuKuanBiLi" >
|
<el-form-item label="第三笔款" prop="threeFuKuan" >
|
||||||
<el-input v-model="formData.threeFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.threeFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第四笔款" prop="fourFuKuanBiLi" >
|
<el-form-item label="第四笔款" prop="fourFuKuan" >
|
||||||
<el-input v-model="formData.fourFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.fourFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第五笔款" prop="fiveFuKuanBiLi" >
|
<el-form-item label="第五笔款" prop="fiveFuKuan" >
|
||||||
<el-input v-model="formData.fiveFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.fiveFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第六笔款" prop="sixFuKuanBiLi" >
|
<el-form-item label="第六笔款" prop="sixFuKuan" >
|
||||||
<el-input v-model="formData.sixFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.sixFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -209,12 +209,12 @@ const formData = ref({
|
|||||||
orderYsDetails: [],
|
orderYsDetails: [],
|
||||||
rem: undefined,
|
rem: undefined,
|
||||||
amount:undefined,
|
amount:undefined,
|
||||||
shouFuKuanBiLi:undefined,
|
shouFuKuan:undefined,
|
||||||
twoFuKuanBiLi:undefined,
|
twoFuKuan:undefined,
|
||||||
threeFuKuanBiLi:undefined,
|
threeFuKuan:undefined,
|
||||||
fourFuKuanBiLi:undefined,
|
fourFuKuan:undefined,
|
||||||
fiveFuKuanBiLi:undefined,
|
fiveFuKuan:undefined,
|
||||||
sixFuKuanBiLi:undefined
|
sixFuKuan:undefined
|
||||||
})
|
})
|
||||||
// const subFormRules = reactive({
|
// const subFormRules = reactive({
|
||||||
// paymentDate: [{
|
// paymentDate: [{
|
||||||
|
|||||||
@ -62,26 +62,19 @@
|
|||||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column fixed label="序号" align="center" type="index" width="60" />
|
<el-table-column fixed label="序号" align="center" type="index" width="60" />
|
||||||
<el-table-column label="工序" align="center" prop="procedureName" min-width="100" >
|
<el-table-column label="工序" align="center" prop="procedureName" min-width="100" fixed>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button text type="primary">
|
<el-button text type="primary">
|
||||||
{{ scope.row.procedureName }}
|
{{ scope.row.procedureName }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="客户简称" align="center" prop="customerBriefName" min-width="180" />
|
<el-table-column label="客户简称" align="center" prop="brief" min-width="180" fixed />
|
||||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" />
|
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" fixed />
|
||||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
||||||
<el-table-column min-width="200px" align="center">
|
<el-table-column label="泡沫" align="center" prop="isFoams">
|
||||||
<template #header>泡沫</template>
|
<template #default="{ row }">
|
||||||
<template #default="{ row, $index }">
|
<el-checkbox v-model="row.isFoams" @change="handleOutsourcingChange(row)" :checked="row.isFoams == 'Y'"/>
|
||||||
<el-form-item :prop="`${$index}.isFoam`" class="mb-0px!">
|
|
||||||
<el-checkbox-group v-model="row.isFoam">
|
|
||||||
<el-checkbox v-for="dict in ['是', '否']" :key="dict" :label="dict">
|
|
||||||
{{ dict }}
|
|
||||||
</el-checkbox>
|
|
||||||
</el-checkbox-group>
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@ -89,44 +82,48 @@
|
|||||||
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
|
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
|
||||||
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
|
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
|
||||||
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="120" />
|
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="120" />
|
||||||
<el-table-column label="单位" align="center" prop="unit" min-width="120" />
|
<el-table-column label="单位" align="center" prop="unit" min-width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.unit" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center">
|
<el-table-column min-width="200px" align="center">
|
||||||
<template #header>采购数量</template>
|
<template #header><span class="hl-table_header">*</span>采购数量</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.purchaseAmount`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.purchaseAmount`" class="mb-0px!" >
|
||||||
<el-input-number v-model="row.purchaseAmount" type="number" :precision="0" />
|
<el-input-number v-model="row.purchaseAmounts" type="number" :precision="0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center" >
|
<el-table-column min-width="200px" align="center" >
|
||||||
<template #header><span class="hl-table_header">*</span>供应商</template>
|
<template #header><span class="hl-table_header">*</span>供应商</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.supplierId`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.supplierIds`" class="mb-0px!" >
|
||||||
<SupplierSelect v-model="row.supplierId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
|
<SupplierSelect v-model="row.supplierIds" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center">
|
<el-table-column min-width="200px" align="center">
|
||||||
<template #header>预估总价</template>
|
<template #header><span class="hl-table_header">*</span>预估总价</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.estimatedPrice`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.estimatedPrices`" class="mb-0px!" >
|
||||||
<el-input-number v-model="row.estimatedPrice" type="number" :precision="2" />
|
<el-input-number v-model="row.estimatedPrices" type="number" :precision="2" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center" >
|
<el-table-column min-width="200px" align="center" >
|
||||||
<template #header><span class="hl-table_header">*</span>预计到货日期</template>
|
<template #header><span class="hl-table_header">*</span>预计到货日期</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.arriveTimes`" class="mb-0px!" >
|
||||||
<el-date-picker class="!w-265px" v-model="row.arriveTime" type="date" value-format="x" placeholder="预计到货日期" />
|
<el-date-picker class="!w-265px" v-model="row.arriveTimes" type="date" value-format="x" placeholder="预计到货日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center" >
|
<el-table-column min-width="200px" align="center" >
|
||||||
<template #header>技术要求</template>
|
<template #header>技术要求</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.description`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.descriptions`" class="mb-0px!" >
|
||||||
<el-input class="!w-265px" v-model="row.description" placeholder="技术要求" />
|
<el-input class="!w-265px" v-model="row.descriptions" placeholder="技术要求" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -139,7 +136,16 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="120" />
|
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="120" />
|
||||||
<el-table-column label="状态" align="center" prop="mplanStatus" min-width="120" />
|
<el-table-column label="状态" align="center" prop="mplanStatus" min-width="120" >
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
getIntDictOptions(DICT_TYPE.MATERIAL_PLAN_BOOM_MPLAN_STATUS).find(
|
||||||
|
(dict) => dict.value === scope.row.mplanStatus
|
||||||
|
)?.label || '未知状态'
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="打回原因" align="center" prop="rejRemark" min-width="120" />
|
||||||
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
@ -156,18 +162,15 @@
|
|||||||
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 { useCommonStateWithOut } from '@/store/modules/common'
|
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||||
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
|
|
||||||
import {inject, ref} from "vue";
|
import {inject, ref} from "vue";
|
||||||
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
||||||
|
import * as MaterialPlanBoomApi from "@/api/heli/materialplanboom";
|
||||||
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
||||||
import {ElTable} from "element-plus";
|
import {ElTable} from "element-plus";
|
||||||
import {useUserStore} from "@/store/modules/user";
|
import {useUserStore} from "@/store/modules/user";
|
||||||
import {dateFormatter1} from "@/utils/formatTime";
|
|
||||||
import {getPartPurchasePages} from "@/api/heli/materialplan";
|
|
||||||
import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue";
|
import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue";
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
|
|
||||||
defineOptions({ name: 'standard' })
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const username = userStore.getUser.nickname
|
const username = userStore.getUser.nickname
|
||||||
const reload: any = inject('reload')
|
const reload: any = inject('reload')
|
||||||
@ -207,8 +210,16 @@ const exportLoading = ref(false) // 导出的加载中
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
list.value=[]
|
||||||
const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
|
const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
|
list.value.forEach(item=> {
|
||||||
|
if(item.isFoams == 'Y'){
|
||||||
|
item.isFoams = true
|
||||||
|
}else{
|
||||||
|
item.isFoams = false
|
||||||
|
}
|
||||||
|
})
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@ -228,11 +239,17 @@ const handleExportDetail = async () => {
|
|||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const handleOutsourcingChange= async (row: any) => {
|
||||||
|
if(row.isFoams == false){
|
||||||
|
row.isFoam = 'N'
|
||||||
|
}else{
|
||||||
|
row.isFoam = 'Y'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
const handleSelectionChange = (val) => {
|
const handleSelectionChange = (val) => {
|
||||||
// multipleTable.value.clearSelection()
|
// multipleTable.value.clearSelection()
|
||||||
multipleTable.value=val
|
multipleTable.value=val
|
||||||
|
|
||||||
}
|
}
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
@ -244,17 +261,9 @@ const handleQuery = () => {
|
|||||||
// formData.value.supplierId = newValue?.id
|
// formData.value.supplierId = newValue?.id
|
||||||
// }
|
// }
|
||||||
const handleSelectedUser = (currentIndex, newValue: any) => {
|
const handleSelectedUser = (currentIndex, newValue: any) => {
|
||||||
list.value[currentIndex].supplierId = newValue?.id
|
list.value[currentIndex].supplierIds = newValue?.id
|
||||||
}
|
}
|
||||||
|
|
||||||
const singleSubmission= (val) =>{
|
|
||||||
multipleTable.value=[]
|
|
||||||
multipleTable.value.push(val)
|
|
||||||
submitForm();
|
|
||||||
}
|
|
||||||
const routerToPurchaseOrderNo=()=>{
|
|
||||||
router.push({ path: '/purchase/purchaseorderno'});
|
|
||||||
}
|
|
||||||
const singleSubmissions=()=>{
|
const singleSubmissions=()=>{
|
||||||
submitForm();
|
submitForm();
|
||||||
}
|
}
|
||||||
@ -263,47 +272,69 @@ const submitForm = async () => {
|
|||||||
console.log("开始提交"); // 调试点1:确认函数是否触发
|
console.log("开始提交"); // 调试点1:确认函数是否触发
|
||||||
|
|
||||||
const list = multipleTable.value|| []; // 安全获取数据
|
const list = multipleTable.value|| []; // 安全获取数据
|
||||||
console.log("明细数据:", list);
|
console.log(list);
|
||||||
console.log(list.length)
|
|
||||||
// 1. 检查空数据
|
// 1. 检查空数据
|
||||||
if (!list || list.length==null) {
|
if (!list || list.length==null) {
|
||||||
message.error("提交明细不能为空,请确认");
|
message.error("提交明细不能为空,请确认");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < list.length; i++) {
|
let i;
|
||||||
if (list[i].purchaseAmount === null || list[i].purchaseAmount === 0) {
|
for (i = 0; i < list.length; i++) {
|
||||||
|
if (list[i].purchaseAmounts === null || list[i].purchaseAmounts === 0) {
|
||||||
message.error("采购数量为0或空");
|
message.error("采购数量为0或空");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (list[i].supplierId === null) {
|
if (list[i].supplierIds === null) {
|
||||||
message.error("供应商为空");
|
message.error("供应商为空");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (list[i].arriveTime === null) {
|
if (list[i].arriveTimes === null) {
|
||||||
message.error("预计到货日期为空");
|
message.error("预计到货日期为空");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (list[i].estimatedPrice === null) {
|
if (list[i].estimatedPrices === null) {
|
||||||
message.error("预估总价为空");
|
message.error("预估总价为空");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (i < list.length){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 2. 检查供应商一致性
|
// 2. 检查项目一致性
|
||||||
const firstSupplierId = list[0].supplierId;
|
const firstProjectName = list[0].projectName;
|
||||||
if (list.some(item => item.supplierId !== firstSupplierId)) {
|
if (list.some(item => item.projectName !== firstProjectName)) {
|
||||||
message.error("零件采购订单不属于同一个供应商,请确认");
|
message.error("不同项目不能同时生成采购单");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//3. 检查生成采购订单状态
|
||||||
|
const checkMaterialPlans = async () => {
|
||||||
|
for (const item of list) {
|
||||||
|
const checkParams = await MaterialPlanBoomApi.getMaterialPlanBoom(item.id);
|
||||||
|
if (checkParams.projectPurchaseOrderMakeId !== null) {
|
||||||
|
message.warning("存在零件清单已生成采购订单,请刷新界面!");
|
||||||
|
return false; // 提前终止检查
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true; // 所有检查通过
|
||||||
|
};
|
||||||
|
|
||||||
|
// 调用方法
|
||||||
|
const allValid = await checkMaterialPlans();
|
||||||
|
if (!allValid) {
|
||||||
|
// 继续后续操作
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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.submitForm(list),
|
PartPurchaseOrderApi.createPurchaseOrderMakeAndDetail(list),
|
||||||
new Promise((_, reject) =>
|
new Promise((_, reject) =>
|
||||||
setTimeout(() => reject(new Error("请求超时")), 30000)
|
setTimeout(() => reject(new Error("请求超时")), 30000)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -39,9 +39,14 @@
|
|||||||
<el-table :data="formData.matBoomDOList" class="hl-table" v-loading="loading">
|
<el-table :data="formData.matBoomDOList" class="hl-table" v-loading="loading">
|
||||||
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
|
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
|
||||||
<el-table-column prop="projectName" min-width="200" label="项目名称" align="center"/>
|
<el-table-column prop="projectName" min-width="200" label="项目名称" align="center"/>
|
||||||
<el-table-column prop="projectName" min-width="200" label="子项目编码" align="center"/>
|
<el-table-column prop="projectSubCode" min-width="200" label="子项目编码" align="center"/>
|
||||||
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
|
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
|
||||||
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
|
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
|
||||||
|
<el-table-column prop="isFoam" min-width="120" label="是否泡沫" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.isFoam=='Y'?"是":"否"}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
|
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
|
||||||
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
||||||
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center"/>
|
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center"/>
|
||||||
@ -142,6 +147,9 @@ const approve = async () => {
|
|||||||
if (checkParams.status != 1){
|
if (checkParams.status != 1){
|
||||||
message.warning("该单据状态非待审核,请刷新界面!");
|
message.warning("该单据状态非待审核,请刷新界面!");
|
||||||
return;
|
return;
|
||||||
|
} else if (checkParams.deleted == 1){
|
||||||
|
message.warning("改单据已驳回,请刷新界面!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id)
|
await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id)
|
||||||
@ -154,6 +162,9 @@ const handleReject = async () => {
|
|||||||
if (checkParams.status != 1){
|
if (checkParams.status != 1){
|
||||||
message.warning("该单据状态非待审核,请刷新界面!");
|
message.warning("该单据状态非待审核,请刷新界面!");
|
||||||
return;
|
return;
|
||||||
|
} else if (checkParams.deleted == 1){
|
||||||
|
message.warning("改单据已驳回,请刷新界面!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -180,11 +191,14 @@ const reject = async(reason) => {
|
|||||||
// 这里可以执行提交驳回逻辑
|
// 这里可以执行提交驳回逻辑
|
||||||
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams)
|
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams)
|
||||||
message.success("已驳回");
|
message.success("已驳回");
|
||||||
getList();
|
// getList();
|
||||||
|
router.push({ path: '/purchase/PartPurchaseCheck'});
|
||||||
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const cancel = async () => {
|
const cancel = async () => {
|
||||||
router.push({ path: '/purchase/PartPurchaseCheck'});
|
router.push({ path: '/purchase/PartPurchaseCheck' });
|
||||||
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeForm = async () => {
|
const closeForm = async () => {
|
||||||
|
|||||||
@ -175,9 +175,11 @@ const openForm = (type: string, id?: number) => {
|
|||||||
break;
|
break;
|
||||||
case 'detail':
|
case 'detail':
|
||||||
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||||
|
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||||
break;
|
break;
|
||||||
case 'check':
|
case 'check':
|
||||||
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
router.push({ path: '/purchase/PartPurchaseCheckDetail', query: { id: id , type: type} })
|
||||||
|
// window.open(`/purchase/PartPurchaseCheckDetail?id=${id}&type=${encodeURIComponent(type)}`, '_self');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -215,20 +215,13 @@ const submitForm = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// // 3. 校验每个零件
|
// // 3. 校验每个零件
|
||||||
// for (const item of list) {
|
for (const item of list) {
|
||||||
// if (item.projectMaterialPlanNo) {
|
if (item.orderStatus==2) {
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 已生成物料需求计划,请确认`);
|
message.error(`工序${item.procedureName}中零件 ${item.boomName} 已生成采购订单,请确认`);
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// if (!item.boomArriveDate) { // 注意:原代码是 boomArriveDate,确保拼写正确
|
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 要求完成日期为空,请确认`);
|
}
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// if (!item.duEmpId) {
|
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 责任人为空,请确认`);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 4. 添加加载状态(Element Plus 兼容处理)
|
// 4. 添加加载状态(Element Plus 兼容处理)
|
||||||
formLoading.value = true;
|
formLoading.value = true;
|
||||||
|
|||||||
@ -669,6 +669,7 @@ const overProcess = () =>{
|
|||||||
await ProcessDesignApi.over(formData.value.id)
|
await ProcessDesignApi.over(formData.value.id)
|
||||||
await queryData(formData.value.id)
|
await queryData(formData.value.id)
|
||||||
message.success("修改成功!")
|
message.success("修改成功!")
|
||||||
|
reload()
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@ -807,9 +808,13 @@ const submitForm = async (operate) => {
|
|||||||
const onAddItem = async() => {
|
const onAddItem = async() => {
|
||||||
//条件修改:没有时间就不填
|
//条件修改:没有时间就不填
|
||||||
var date = new Date();
|
var date = new Date();
|
||||||
|
date.setHours(0,0,0,0)
|
||||||
|
var date2 = new Date();
|
||||||
if(processDesignType.value == 'BLUEPRINT_WORKBLANK'){
|
if(processDesignType.value == 'BLUEPRINT_WORKBLANK'){
|
||||||
if(formData.value.blankDate != null ){
|
if(formData.value.blankDate != null ){
|
||||||
if(formData.value.blankDate < date.getTime()){
|
var date1 = new Date(formData.value.blankDate);
|
||||||
|
date1.setHours(0,0,0,0)
|
||||||
|
if(date1.getTime()< date.getTime()){
|
||||||
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
||||||
message.error("当前任务已超期,请延期后重试!")
|
message.error("当前任务已超期,请延期后重试!")
|
||||||
return
|
return
|
||||||
@ -822,7 +827,9 @@ const onAddItem = async() => {
|
|||||||
}
|
}
|
||||||
if(processDesignType.value == 'BLUEPRINT_2D'){
|
if(processDesignType.value == 'BLUEPRINT_2D'){
|
||||||
if(formData.value.twoDimDate != null ){
|
if(formData.value.twoDimDate != null ){
|
||||||
if(formData.value.twoDimDate < date.getTime()){
|
var date1 = new Date(formData.value.twoDimDate);
|
||||||
|
date1.setHours(0,0,0,0)
|
||||||
|
if(date1.getTime()< date.getTime()){
|
||||||
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
||||||
message.error("当前任务已超期,请延期后重试!")
|
message.error("当前任务已超期,请延期后重试!")
|
||||||
return
|
return
|
||||||
@ -836,7 +843,9 @@ const onAddItem = async() => {
|
|||||||
}
|
}
|
||||||
if(processDesignType.value == 'BLUEPRINT_3D'){
|
if(processDesignType.value == 'BLUEPRINT_3D'){
|
||||||
if(formData.value.threeDimDate != null ){
|
if(formData.value.threeDimDate != null ){
|
||||||
if(formData.value.threeDimDate < date.getTime()){
|
var date1 = new Date(formData.value.threeDimDate);
|
||||||
|
date1.setHours(0,0,0,0)
|
||||||
|
if(date1.getTime()< date.getTime()){
|
||||||
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
||||||
message.error("当前任务已超期,请延期后重试!")
|
message.error("当前任务已超期,请延期后重试!")
|
||||||
return
|
return
|
||||||
@ -850,9 +859,9 @@ const onAddItem = async() => {
|
|||||||
if(processDesignType.value == 'BLUEPRINT_FOUNDRY_TECHNOLOGY'){
|
if(processDesignType.value == 'BLUEPRINT_FOUNDRY_TECHNOLOGY'){
|
||||||
console.log(formData.value.craftEndDate)
|
console.log(formData.value.craftEndDate)
|
||||||
if(formData.value.craftEndDate != null ){
|
if(formData.value.craftEndDate != null ){
|
||||||
console.log(date.getTime())
|
var date1 = new Date(formData.value.craftEndDate);
|
||||||
console.log(formData.value.craftEndDate)
|
date1.setHours(0,0,0,0)
|
||||||
if(formData.value.craftEndDate < date.getTime()){
|
if(date1.getTime()< date.getTime()){
|
||||||
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
if(formData.value.isDelay == null || formData.value.isDelay == 0){
|
||||||
message.error("当前任务已超期,请延期后重试!")
|
message.error("当前任务已超期,请延期后重试!")
|
||||||
return
|
return
|
||||||
@ -892,8 +901,8 @@ const onAddItem = async() => {
|
|||||||
progress: undefined,
|
progress: undefined,
|
||||||
blueprintLink: undefined,
|
blueprintLink: undefined,
|
||||||
remark: '',
|
remark: '',
|
||||||
createTime: date.getTime(),
|
createTime: date2.getTime(),
|
||||||
beginTime:date.getTime(),
|
beginTime:date2.getTime(),
|
||||||
endTime:undefined,
|
endTime:undefined,
|
||||||
isOver:0,
|
isOver:0,
|
||||||
workTime:undefined,
|
workTime:undefined,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="hl-card">
|
<el-card class="hl-card">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>采购订单审核</span>
|
<span></span>
|
||||||
</template>
|
</template>
|
||||||
<ContentWrap class="borderxx">
|
<ContentWrap class="borderxx">
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
|
|||||||
@ -63,6 +63,8 @@
|
|||||||
size="large">批 准</el-button>
|
size="large">批 准</el-button>
|
||||||
<el-button @click="reject" v-if="formData.status == 1" size="large" type="danger">驳 回</el-button>
|
<el-button @click="reject" v-if="formData.status == 1" size="large" type="danger">驳 回</el-button>
|
||||||
<el-button @click="cancel" size="large">取 消</el-button>
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
|
<!-- <el-button @click="test" size="large">测试</el-button>-->
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<template v-if="formData.type === 'detail'">
|
<template v-if="formData.type === 'detail'">
|
||||||
<el-button @click="cancel" size="large">取 消</el-button>
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
@ -151,7 +153,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)
|
||||||
@ -159,6 +161,14 @@ const reject = async() => {
|
|||||||
|
|
||||||
const cancel = async () => {
|
const cancel = async () => {
|
||||||
router.push({ path: '/purchase/PurchaseOrderMake'});
|
router.push({ path: '/purchase/PurchaseOrderMake'});
|
||||||
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
|
|
||||||
|
}
|
||||||
|
const test = async () => {
|
||||||
|
const data = await PartPurchaseOrderApi.obtainReviewDetails(query.id)
|
||||||
|
console.log(data)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
|||||||
@ -81,6 +81,7 @@
|
|||||||
<el-button @click="receiveGoods()" type="primary" size="large" >收货</el-button>
|
<el-button @click="receiveGoods()" type="primary" size="large" >收货</el-button>
|
||||||
<el-button @click="isPrint()" type="primary" size="large" :loading="printLoading">打印</el-button>
|
<el-button @click="isPrint()" type="primary" size="large" :loading="printLoading">打印</el-button>
|
||||||
<el-button @click="deleteForm()" type="danger" size="large" >删除</el-button>
|
<el-button @click="deleteForm()" type="danger" size="large" >删除</el-button>
|
||||||
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -260,12 +261,11 @@ const handleSelectionChange = (val) => {
|
|||||||
multipleTable.value=val
|
multipleTable.value=val
|
||||||
|
|
||||||
}
|
}
|
||||||
|
const cancel = async () => {
|
||||||
|
|
||||||
const closeForm = async () => {
|
|
||||||
router.push({ path: '/purchase/purchaseorderno' })
|
router.push({ path: '/purchase/purchaseorderno' })
|
||||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
|
|||||||
@ -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) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
|
|
||||||
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,
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -1353,7 +1353,8 @@ const submitForm = async (operate) => {
|
|||||||
|
|
||||||
d1.setHours(0, 0, 0, 0);
|
d1.setHours(0, 0, 0, 0);
|
||||||
d2.setHours(0, 0, 0, 0);
|
d2.setHours(0, 0, 0, 0);
|
||||||
|
console.log(d1)
|
||||||
|
console.log(d2)
|
||||||
if (d1 > d2) {
|
if (d1 > d2) {
|
||||||
let name;
|
let name;
|
||||||
procedureList.value.forEach((items) => {
|
procedureList.value.forEach((items) => {
|
||||||
|
|||||||
@ -159,17 +159,29 @@ const handleComplate = async () => {
|
|||||||
try {
|
try {
|
||||||
const data = await postOperateAPI(params);
|
const data = await postOperateAPI(params);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
duration: 3000,
|
||||||
|
title: error.data.msg,
|
||||||
|
})
|
||||||
} finally {
|
} finally {
|
||||||
isLoading.value = false;
|
await getDetailData(detailInfo.value.id)
|
||||||
|
await getData()
|
||||||
|
const obj = historyList.value[0]
|
||||||
|
// 最新的报工是否完成
|
||||||
|
if (obj && obj?.workTime == null && obj.endTime) {
|
||||||
|
popupShow.value = true
|
||||||
}
|
}
|
||||||
const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
|
}
|
||||||
uni.redirectTo({
|
isLoading.value = false;
|
||||||
url,
|
// const url = `/pages/productionReport/productionReport-detail?id=${detailInfo.value.id}`
|
||||||
})
|
// uni.redirectTo({
|
||||||
|
// url,
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
// 提交报工
|
// 提交报工
|
||||||
const handleOk = async (active) => {
|
const handleOk = async (active) => {
|
||||||
console.log(amount.value)
|
|
||||||
const params = {
|
const params = {
|
||||||
id: detailInfo.value?.id,
|
id: detailInfo.value?.id,
|
||||||
active: 'SUBMIT',
|
active: 'SUBMIT',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user