零件跟标准件物料需求计划
This commit is contained in:
parent
d331c4675b
commit
9be047b579
@ -151,7 +151,7 @@ public class bdgzsomthingController {
|
||||
BeanUtils.toBean(list, bdgzsomthingRespVO.class));
|
||||
}
|
||||
|
||||
@Scheduled(fixedRate = 10800000)
|
||||
// @Scheduled(fixedRate = 10800000)
|
||||
public void scheduledTask() {
|
||||
bdgzsomthingService.selectds();
|
||||
}
|
||||
@ -159,15 +159,15 @@ public class bdgzsomthingController {
|
||||
//@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
selectHasPrice();
|
||||
selectSafeStorageAndDeliverOneYear();
|
||||
// selectHasPrice();
|
||||
// selectSafeStorageAndDeliverOneYear();
|
||||
}
|
||||
@Scheduled(cron = "0 0 2 * * ?")
|
||||
// @Scheduled(cron = "0 0 2 * * ?")
|
||||
public void selectHasPrice(){
|
||||
bdgzsomthingService.selectHasPrice();
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
// @Scheduled(cron = "0 0 0 * * ?")
|
||||
public void selectSafeStorageAndDeliverOneYear(){bdgzsomthingService.selectSafeStorageAndDeliverOneYear();}
|
||||
@PostMapping("/getMessage")
|
||||
@Operation(summary = "小程序消息")
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan;
|
||||
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -91,5 +93,51 @@ public class MaterialPlanController {
|
||||
ExcelUtils.write(response, "物料需求计划.xls", "数据", MaterialPlanRespVO.class,
|
||||
BeanUtils.toBean(list, MaterialPlanRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/pages")
|
||||
@Operation(summary = "获得标准件物料需求计划管理分页")
|
||||
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
|
||||
public CommonResult<PageResult<MaterialPlanRespVO>> getMaterialPlanPages(@Valid MaterialPlanPageReqVO pageReqVO) {
|
||||
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPages(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class));
|
||||
}
|
||||
@DeleteMapping("/delMaterialPlan")
|
||||
@Operation(summary = "删除物料需求计划")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('heli:material-plan:delete')")
|
||||
public CommonResult<Boolean> delMaterialPlan(@RequestParam("id") Long id) {
|
||||
return materialPlanService.delMaterialPlan(id);
|
||||
}
|
||||
|
||||
@GetMapping("/getPartPage")
|
||||
@Operation(summary = "获得零件物料需求计划分页")
|
||||
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
|
||||
public CommonResult<PageResult<TaskDispatchDetailDO>> getPartPage(@Valid MaterialPlanPageReqVO pageReqVO) {
|
||||
PageResult<TaskDispatchDetailDO> pageResult = materialPlanService.getPartPage(pageReqVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
@PostMapping("/submit")
|
||||
@Operation(summary = "提交")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
|
||||
public CommonResult<Boolean> submit(@Valid @RequestBody List<TaskDispatchDetailDO> list) {
|
||||
return success(materialPlanService.submit(list));
|
||||
}
|
||||
@GetMapping("/withdraw")
|
||||
@Operation(summary = "撤回")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
|
||||
public CommonResult<Boolean> withdraw(@RequestParam("code") String code) {
|
||||
return materialPlanService.withdraw(code);
|
||||
}
|
||||
@GetMapping("/exportPart")
|
||||
@Operation(summary = "导出物料需求计划 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('heli:material-plan:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportPart(@Valid MaterialPlanPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<TaskDispatchDetailDO> list = materialPlanService.getPartPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "零件物料需求计划.xlsx", "数据", PartExcelVO.class,
|
||||
BeanUtils.toBean(list, PartExcelVO.class));
|
||||
}
|
||||
}
|
@ -56,5 +56,14 @@ public class MaterialPlanPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private String createTime;
|
||||
@Schema(description = "子项目名称")
|
||||
private String projectSubName;
|
||||
@Schema(description = "零件名称")
|
||||
private String materialName;
|
||||
@Schema(description = "项目编码")
|
||||
private String projectCode;
|
||||
@Schema(description = "需求计划类型")
|
||||
private String matType;
|
||||
|
||||
|
||||
}
|
@ -72,4 +72,17 @@ public class MaterialPlanRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "子项目名称")
|
||||
@ExcelProperty("子项目名称")
|
||||
private String name;
|
||||
@Schema(description = "客户简称")
|
||||
@ExcelProperty("客户简称")
|
||||
private String brief;
|
||||
@Schema(description = "需求计划类型")
|
||||
@ExcelProperty("需求计划类型")
|
||||
private String matType;
|
||||
@Schema(description = "制单日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("制单日期")
|
||||
private LocalDateTime matPlanDate;
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* BOM Excel 导入 VO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题
|
||||
public class PartExcelVO {
|
||||
@ExcelProperty("工序名称")
|
||||
private String procedureName;
|
||||
|
||||
|
||||
@ExcelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ExcelProperty("子项目名称")
|
||||
private String projectSubName;
|
||||
@ExcelProperty("客户简码")
|
||||
private String customerName;
|
||||
@ExcelProperty("零件名称")
|
||||
private String materialName;
|
||||
|
||||
@ExcelProperty("材质")
|
||||
private String compositionName;
|
||||
|
||||
@ExcelProperty("数量")
|
||||
private Integer amount;
|
||||
|
||||
|
||||
@ExcelProperty("要求完成日期")
|
||||
private String boomArriveDates;
|
||||
|
||||
@ExcelProperty("要求说明")
|
||||
private String description;
|
||||
@ExcelProperty("重量(T)")
|
||||
private BigDecimal matWeight;
|
||||
@ExcelProperty("责任人")
|
||||
private String nickname;
|
||||
@ExcelProperty("物料需求单号")
|
||||
private String projectMaterialPlanNo;
|
||||
}
|
@ -112,6 +112,12 @@ public class MaterialPlanBoomController {
|
||||
PageResult<ProcessBomDetailDO> pageResult = materialPlanBoomService.getProcessBoomDetailList(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, ProcessBomDetailDO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/pages")
|
||||
@Operation(summary = "获得物料需求计划加工件明细分页")
|
||||
@PreAuthorize("@ss.hasPermission('heli:material-plan-boom:query')")
|
||||
public CommonResult<PageResult<MaterialPlanBoomDO>> getMaterialPlanBoomPages(@Valid ProcessBoomPageReqVO pageReqVO) {
|
||||
PageResult<MaterialPlanBoomDO> pageResult = materialPlanBoomService.getMaterialPlanBoomPages(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialPlanBoomDO.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -27,4 +27,6 @@ public class ProcessBoomPageReqVO extends PageParam {
|
||||
@Schema(description = "生产计划子项目编号")
|
||||
private String projectSubCode;
|
||||
|
||||
@Schema(description = "物料需求计划id")
|
||||
private String projectMaterialPlanId;
|
||||
}
|
@ -12,9 +12,12 @@ import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
|
||||
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
|
||||
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
|
||||
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plantask.vo.PlanTaskRespVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.*;
|
||||
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.plantask.PlanTaskDO;
|
||||
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.mysql.processbom.ProcessBomDetailMapper;
|
||||
@ -230,4 +233,35 @@ public class ProcessBomController {
|
||||
processBomService.deleteProcessBomDetailNew(id);
|
||||
return success(true);
|
||||
}
|
||||
@GetMapping("/getStandardPage")
|
||||
@Operation(summary = "获得标准件物料需求计划")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
|
||||
public CommonResult<PageResult<ProcessBomDetailDO>> getStandardPage(@Valid ProcessBomPageReqVO pageReqVO) {
|
||||
PageResult<ProcessBomDetailDO> pageResult = processBomService.getStandardPage(pageReqVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
@PostMapping("/submit")
|
||||
@Operation(summary = "提交")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
|
||||
public CommonResult<Boolean> submit(@Valid @RequestBody List<ProcessBomDetailDO> list) {
|
||||
return success(processBomService.submit(list));
|
||||
}
|
||||
@GetMapping("/withdraw")
|
||||
@Operation(summary = "撤回")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
|
||||
public CommonResult<Boolean> withdraw(@RequestParam("code") String code) {
|
||||
return processBomService.withdraw(code);
|
||||
}
|
||||
@GetMapping("/exportStandard")
|
||||
@Operation(summary = "导出标准件物料需求计划Excel")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportStandard(@Valid ProcessBomPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<ProcessBomDetailDO> list = processBomService.getStandardPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "标准件物料需求计划.xlsx", "数据", ProcessBomExcelVO.class,
|
||||
BeanUtils.toBean(list, ProcessBomExcelVO.class));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,59 @@
|
||||
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
|
||||
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
|
||||
import com.chanko.yunxi.mes.module.system.enums.DictTypeConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* BOM Excel 导入 VO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = false) // 设置 chain = false,避免BOM导入有问题
|
||||
public class ProcessBomExcelVO {
|
||||
|
||||
@ExcelProperty("客户简称")
|
||||
private String customerName;
|
||||
|
||||
@ExcelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ExcelProperty("子项目名称")
|
||||
private String projectSubName;
|
||||
|
||||
@ExcelProperty("零件名称")
|
||||
private String materialName;
|
||||
|
||||
@ExcelProperty("材质")
|
||||
private String compositionName;
|
||||
|
||||
@ExcelProperty("规格型号")
|
||||
private String spec;
|
||||
|
||||
@ExcelProperty("图号")
|
||||
private String blueprintNo;
|
||||
|
||||
@ExcelProperty("数量")
|
||||
private Integer amount;
|
||||
|
||||
@ExcelProperty(value = "单位", converter = DictConvert.class)
|
||||
@DictFormat("heli_material_unit")
|
||||
private String unit;
|
||||
@ExcelProperty("要求完成日期")
|
||||
private String boomArriveDates;
|
||||
|
||||
@ExcelProperty("责任人")
|
||||
private String nickname;
|
||||
@ExcelProperty("物料需求单号")
|
||||
private String projectMaterialPlanNo;
|
||||
}
|
@ -60,7 +60,13 @@ public class ProcessBomPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "项目名称")
|
||||
private String projectName;
|
||||
@Schema(description = "零件名称")
|
||||
private String materialName;
|
||||
@Schema(description = "责任人")
|
||||
private String ownerName;
|
||||
|
||||
@Schema(description = "物料需求单号")
|
||||
private String projectMaterialPlanNo;
|
||||
@Schema(description = "审核人")
|
||||
private Long userId;
|
||||
|
||||
|
@ -68,6 +68,14 @@ public class MaterialPlanDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String description;
|
||||
/**
|
||||
* 客户id
|
||||
*/
|
||||
private Long customerId;
|
||||
/**
|
||||
* 客户简称
|
||||
*/
|
||||
private String brief;
|
||||
|
||||
/**
|
||||
* 生产计划单号
|
||||
@ -77,7 +85,30 @@ public class MaterialPlanDO extends BaseDO {
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private String projectName;
|
||||
/**
|
||||
* 项目简码
|
||||
*/
|
||||
private String projectNameSim;
|
||||
/**
|
||||
* 需求计划类型
|
||||
*/
|
||||
private Integer matType;
|
||||
|
||||
/**
|
||||
* 子项目id
|
||||
*/
|
||||
private Long projectPlanSubId;
|
||||
/**
|
||||
* 子项目名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 子项目简码
|
||||
*/
|
||||
private String nameSim;
|
||||
/**
|
||||
* 制单日期
|
||||
*/
|
||||
private Date matPlanDate;
|
||||
}
|
@ -53,6 +53,42 @@ public class MaterialPlanBoomDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String description;
|
||||
/**
|
||||
* 物料名称
|
||||
*/
|
||||
private String matName;
|
||||
/**
|
||||
* 责任人id
|
||||
*/
|
||||
private Long duEmpId;
|
||||
/**
|
||||
* 采购or库存(0 -采购 1- 库存)
|
||||
*/
|
||||
private Integer isPurYard;
|
||||
/**
|
||||
* 需求状态(0-待送审 1 -已送审 2-已批准 3-已打回)
|
||||
*/
|
||||
private Integer mplanStatus;
|
||||
/**
|
||||
* 采购单id
|
||||
*/
|
||||
private Long projectPurchaseOrderMakeId;
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
private String purchaseNo;
|
||||
/**
|
||||
* 采购单明细id
|
||||
*/
|
||||
private Long projectPurchaseOrderMakeDetailId;
|
||||
/**
|
||||
* 物料id
|
||||
*/
|
||||
private Long materialId;
|
||||
/**
|
||||
* 零件重量
|
||||
*/
|
||||
private BigDecimal matWeight;
|
||||
@TableField(exist = false)
|
||||
private String materialName;
|
||||
@TableField(exist = false)
|
||||
@ -69,5 +105,7 @@ public class MaterialPlanBoomDO extends BaseDO {
|
||||
private Long compositionId;
|
||||
@TableField(exist = false)
|
||||
private String projectMaterialPlanNo;
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
|
||||
}
|
@ -116,7 +116,9 @@ public class PlanDO extends BaseDO {
|
||||
*要求设计结束日期
|
||||
* */
|
||||
private LocalDateTime changeEndTime;
|
||||
@TableField(exist = false)
|
||||
private String name;
|
||||
@TableField(exist = false)
|
||||
private String brief;
|
||||
/**
|
||||
* 子项目id
|
||||
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
|
||||
import lombok.*;
|
||||
import org.apache.poi.hpsf.Date;
|
||||
import org.apache.poi.hpsf.Decimal;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -78,6 +79,10 @@ public class ProcessBomDetailDO extends BaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 其他件物料编码
|
||||
*/
|
||||
private String otherMaterialCode;
|
||||
/**
|
||||
* 状态,1表示正常,2表示禁用
|
||||
*/
|
||||
@ -104,6 +109,13 @@ public class ProcessBomDetailDO extends BaseDO {
|
||||
* 操作次数
|
||||
* */
|
||||
private Integer bomOperateCount;
|
||||
private Long duEmpId;
|
||||
private Integer mplanStatus;
|
||||
/*
|
||||
*操作时间
|
||||
* */
|
||||
private LocalDateTime mplanDate;
|
||||
private Integer isPurYard;
|
||||
|
||||
/*
|
||||
*操作时间
|
||||
@ -151,4 +163,25 @@ public class ProcessBomDetailDO extends BaseDO {
|
||||
private BigDecimal price;
|
||||
@TableField(exist = false)
|
||||
private String matUnitId;
|
||||
@TableField(exist = false)
|
||||
private String customerName;
|
||||
@TableField(exist = false)
|
||||
private String projectName;
|
||||
@TableField(exist = false)
|
||||
private String projectSubName;
|
||||
@TableField(exist = false)
|
||||
private LocalDateTime boomArriveDate;
|
||||
@TableField(exist = false)
|
||||
private String boomArriveDates;
|
||||
private String projectMaterialPlanNo;
|
||||
@TableField(exist = false)
|
||||
private Long projectId;
|
||||
@TableField(exist = false)
|
||||
private Long customerId;
|
||||
@TableField(exist = false)
|
||||
private String nameSim;
|
||||
@TableField(exist = false)
|
||||
private String projectNameSim;
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
}
|
||||
|
@ -151,5 +151,6 @@ public class ProcessDesignDO extends BaseDO {
|
||||
@TableField(exist = false)
|
||||
private String blueprintLink;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String brief;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
|
||||
import io.swagger.v3.oas.models.security.SecurityScheme;
|
||||
import lombok.*;
|
||||
import org.apache.poi.hpsf.Date;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@ -96,6 +97,9 @@ public class TaskDispatchDetailDO extends BaseDO {
|
||||
private Long dispatchType;
|
||||
private String postId;
|
||||
private String isOutsourcing;
|
||||
private String projectMaterialPlanNo;
|
||||
private Long projectMaterialPlanDetailId;
|
||||
private Integer planStatus;
|
||||
/**
|
||||
* 工序状态 默认 已提交 已完成 0 1 2
|
||||
*/
|
||||
@ -157,7 +161,8 @@ public class TaskDispatchDetailDO extends BaseDO {
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer wgType;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer boomAmount;
|
||||
@TableField(exist = false)
|
||||
private String deviceName;
|
||||
|
||||
@ -194,4 +199,32 @@ public class TaskDispatchDetailDO extends BaseDO {
|
||||
@TableField(exist = false)
|
||||
private String nextProcedureName;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String customerName;
|
||||
@TableField(exist = false)
|
||||
private String compositionName;
|
||||
@TableField(exist = false)
|
||||
private String description;
|
||||
@TableField(exist = false)
|
||||
private LocalDateTime boomArriveDate;
|
||||
@TableField(exist = false)
|
||||
private String boomArriveDates;
|
||||
@TableField(exist = false)
|
||||
private Long projectSubId;
|
||||
@TableField(exist = false)
|
||||
private Long projectId;
|
||||
@TableField(exist = false)
|
||||
private Long planId;
|
||||
@TableField(exist = false)
|
||||
private Long customerId;
|
||||
@TableField(exist = false)
|
||||
private String nameSim;
|
||||
@TableField(exist = false)
|
||||
private String projectNameSim;
|
||||
@TableField(exist = false)
|
||||
private Long duEmpId;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal matWeight;
|
||||
@TableField(exist = false)
|
||||
private String nickname;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||
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.projectorder.ProjectOrderDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
@ -41,6 +42,23 @@ public interface MaterialPlanMapper extends BaseMapperX<MaterialPlanDO> {
|
||||
|
||||
return selectPage(reqVO, query);
|
||||
}
|
||||
|
||||
default PageResult<MaterialPlanDO> selectPages(MaterialPlanPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<MaterialPlanDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(MaterialPlanDO.class)
|
||||
.leftJoin(MaterialPlanBoomDO.class, "b", MaterialPlanBoomDO::getProjectMaterialPlanId, MaterialPlanDO::getId)
|
||||
.groupBy(MaterialPlanDO::getId)
|
||||
.orderByDesc(MaterialPlanDO::getCreateTime);
|
||||
query.like(!StringUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectName()),MaterialPlanDO::getProjectName, pageReqVO.getProjectName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), MaterialPlanDO::getName, pageReqVO.getProjectSubName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMaterialName())
|
||||
.eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType());
|
||||
|
||||
|
||||
|
||||
return selectPage(pageReqVO, query);
|
||||
}
|
||||
// default PageResult<MaterialPlanDO> selectPage(MaterialPlanPageReqVO reqVO) {
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDO>()
|
||||
// .eqIfPresent(MaterialPlanDO::getId, reqVO.getId())
|
||||
|
@ -13,6 +13,7 @@ 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.enums.BoomDetailTypeEnum;
|
||||
import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.*;
|
||||
@ -70,6 +71,20 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
||||
|
||||
List<MaterialPlanBoomDO> selectafterten(@Param("id") Long txrid, @Param("evday") String evday);
|
||||
|
||||
default PageResult<MaterialPlanBoomDO> getMaterialPlanBoomPages(ProcessBoomPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(MaterialPlanBoomDO.class)
|
||||
.select("a.nickname as nickname,b.spec as boomSpec")
|
||||
.leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
||||
.leftJoin(ProcessBomDetailDO.class, "b", ProcessBomDetailDO::getId, MaterialPlanBoomDO::getBoomDetailId)
|
||||
.orderByDesc(MaterialPlanBoomDO::getId)
|
||||
.disableSubLogicDel()
|
||||
;
|
||||
|
||||
query.eq(pageReqVO.getProjectMaterialPlanId() != null, MaterialPlanBoomDO::getProjectMaterialPlanId, pageReqVO.getProjectMaterialPlanId());
|
||||
return selectPage(pageReqVO,query);
|
||||
}
|
||||
|
||||
// default PageResult<MaterialPlanBoomDO> selectPage(MaterialPlanBoomPageReqVO reqVO) {
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanBoomDO>()
|
||||
// .eqIfPresent(MaterialPlanBoomDO::getId, reqVO.getId())
|
||||
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.equip.EquipController;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomRespVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.plantaskbom.vo.PlanTaskBomPageReqVO;
|
||||
@ -13,6 +14,8 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBo
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||
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.plantask.PlanTaskDO;
|
||||
@ -22,10 +25,13 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDeta
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.bouncycastle.eac.EACCertificateBuilder;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
@ -39,6 +45,8 @@ import java.util.List;
|
||||
@Mapper
|
||||
public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO> {
|
||||
|
||||
|
||||
|
||||
// default List<ProcessBomDetailDO> selectListByBomId(Long bomId) {
|
||||
//
|
||||
// MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
|
||||
@ -186,4 +194,48 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
|
||||
.eq(ProcessBomDetailDO::getType,'1');
|
||||
return selectPage(reqVO,query);
|
||||
}
|
||||
|
||||
default PageResult<ProcessBomDetailDO> getStandardPage(ProcessBomPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<ProcessBomDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(ProcessBomDetailDO.class)
|
||||
.select( "c.brief as customerName", "b.project_name as projectName","b.project_name_sim as projectNameSim")
|
||||
.select("d.name as projectSubName,d.id as projectSubId,d.name_sim as nameSim,f.name as compositionName")
|
||||
.select("b.id as projectId,g.plan_id as planId,c.id as customerId")
|
||||
.select("u.nickname as nickname")
|
||||
.select("DATE_FORMAT(p.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates")
|
||||
.select("p.boom_arrive_date as boomArriveDate,p.du_emp_id as duEmpId,h.project_material_plan_no as projectMaterialPlanNo")
|
||||
.leftJoin(ProcessBomDO.class,"g",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
|
||||
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
|
||||
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
|
||||
.leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
|
||||
.leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId)
|
||||
// .leftJoin(MaterialPlanDO.class,"h",MaterialPlanDO::getProjectMaterialPlanNo,ProcessBomDetailDO::getProjectMaterialPlanNo)
|
||||
// .leftJoin(MaterialPlanBoomDO.class,"p",MaterialPlanBoomDO::getBoomDetailId,ProcessBomDetailDO::getId)
|
||||
.leftJoin("project_material_plan h on (h.project_material_plan_no = t.project_material_plan_no and h.deleted=0)")
|
||||
.leftJoin("project_material_plan_boom p on (p.boom_detail_id = t.id and p.deleted=0)")
|
||||
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId,ProcessBomDetailDO::getDuEmpId)
|
||||
.groupBy(ProcessBomDetailDO::getId)
|
||||
.orderByDesc(ProcessBomDO::getId)
|
||||
.disableSubLogicDel();
|
||||
|
||||
query
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), ProcessBomDetailDO::getMaterialName, pageReqVO.getMaterialName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo())
|
||||
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), ProcessBomDetailDO::getMplanStatus, pageReqVO.getStatus());
|
||||
// .eq(MaterialPlanBoomDO::getDeleted,0)
|
||||
// .eq(MaterialPlanDO::getDeleted,0);
|
||||
if (ObjectUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo())) {
|
||||
query.eq(ProcessBomDO::getBomStatus,"2")
|
||||
.ne(ProjectOrderDO::getOrderStatus,"64")
|
||||
.eq(ProcessBomDetailDO::getType,"1");
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
return selectPage(pageReqVO, query);
|
||||
}
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
|
||||
MPJLambdaWrapper<ProcessDesignDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(ProcessDesignDO.class)
|
||||
.select("a.status as planStatus")
|
||||
.select("a.plan_no as planCode","a.has_craft as hasCraft", "a.craft_start_date as craftStartDate", "a.craft_end_date as craftEndDate", "e.name as customerName")
|
||||
.select("a.plan_no as planCode","a.has_craft as hasCraft", "a.craft_start_date as craftStartDate", "a.craft_end_date as craftEndDate", "e.name as customerName","e.brief as brief")
|
||||
.select("d.code as projectCode", "d.project_name as projectName", "d.business_line as businessLine", "d.property","d.is_urgency as isUrgency")
|
||||
.select("u1.nickname as projectOwnerName", "u2.nickname as craftOwnerName")
|
||||
.select("b.blank_date as blankDate", "b.two_dim_date as twoDimDate", "b.three_dim_date as threeDimDate")
|
||||
|
@ -5,12 +5,17 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.MaterialPlanPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchDetailPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskDispatchDetailTotalVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.TaskPlanJDBaoBiaoPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipManufactureDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||
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.ProcessBomDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||
@ -23,6 +28,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -674,4 +680,38 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
|
||||
}
|
||||
|
||||
|
||||
default PageResult<TaskDispatchDetailDO> getPartPage(MaterialPlanPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<TaskDispatchDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(TaskDispatchDetailDO.class)
|
||||
.select("f.name as compositionName,g.name as procedureName,d.amount as boomAmount")
|
||||
.select("b.project_name_sim as projectNameSim,c.name_sim as nameSim")
|
||||
.select("b.id as projectId,i.plan_id as planId,c.id as customerId,d.id as bomDetailId")
|
||||
.select( "b.project_name as projectName", "c.name as projectSubName")
|
||||
.select("d.material_name as materialName,DATE_FORMAT(p.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates")
|
||||
.select("e.brief as customerName,u.nickname as nickname,c.id as projectSubId")
|
||||
.select("p.boom_arrive_date as boomArriveDate,p.du_emp_id as duEmpId,p.description as description,p.mat_weight as matWeight")
|
||||
.leftJoin(TaskDispatchDO.class, "a", TaskDispatchDO::getId, TaskDispatchDetailDO::getDispatchId)
|
||||
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, TaskDispatchDO::getProjectId)
|
||||
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId)
|
||||
.leftJoin(ProcessBomDetailDO.class, "d", ProcessBomDetailDO::getId, TaskDispatchDO::getBomDetailId)
|
||||
.leftJoin(ProcessBomDO.class,"i",ProcessBomDO::getId,ProcessBomDetailDO::getBomId)
|
||||
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
|
||||
.leftJoin(CompositionDO.class,"f",CompositionDO::getId,ProcessBomDetailDO::getCompositionId)
|
||||
.leftJoin("project_material_plan h on (h.project_material_plan_no = t.project_material_plan_no and h.deleted=0)")
|
||||
.leftJoin("project_material_plan_boom p on (p.id = t.project_material_plan_detail_id and p.deleted=0)")
|
||||
.leftJoin(ProcedureDO.class, "g", ProcedureDO::getId, TaskDispatchDetailDO::getProcedureId)
|
||||
.leftJoin("system_users u on (u.id=p.du_emp_id and u.deleted=0)")
|
||||
.groupBy(TaskDispatchDetailDO::getId)
|
||||
.disableSubLogicDel();
|
||||
|
||||
query
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectName()), ProjectOrderDO::getProjectName, pageReqVO.getProjectName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectSubName()), ProjectOrderSubDO::getName, pageReqVO.getProjectSubName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getMaterialName()), ProcessBomDetailDO::getMaterialName, pageReqVO.getMaterialName())
|
||||
.like(!StringUtils.isEmpty(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo())
|
||||
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), TaskDispatchDetailDO::getPlanStatus, pageReqVO.getStatus())
|
||||
.eq( TaskDispatchDetailDO::getIsOutsourcing, "Y");
|
||||
return selectPage(pageReqVO, query);
|
||||
}
|
||||
}
|
||||
|
@ -2,10 +2,15 @@ package com.chanko.yunxi.mes.module.heli.service.materialplan;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.TaskDispatchController;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
|
||||
|
||||
/**
|
||||
* 物料需求计划 Service 接口
|
||||
@ -52,4 +57,13 @@ public interface MaterialPlanService {
|
||||
*/
|
||||
PageResult<MaterialPlanDO> getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO);
|
||||
|
||||
PageResult<MaterialPlanDO> getMaterialPlanPages(MaterialPlanPageReqVO pageReqVO);
|
||||
|
||||
CommonResult<Boolean> delMaterialPlan(Long id);
|
||||
|
||||
PageResult<TaskDispatchDetailDO> getPartPage(MaterialPlanPageReqVO pageReqVO);
|
||||
|
||||
Boolean submit(List<TaskDispatchDetailDO> list);
|
||||
|
||||
CommonResult<Boolean> withdraw(String code);
|
||||
}
|
@ -2,12 +2,20 @@ package com.chanko.yunxi.mes.module.heli.service.materialplan;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||
import com.chanko.yunxi.mes.framework.common.util.object.ObjectUtils;
|
||||
import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.attentiontodo.AttentiontodoDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||
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.taskdispatch.TaskDispatchDetailDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService;
|
||||
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||
import com.chanko.yunxi.mes.module.system.api.user.AdminUserApi;
|
||||
@ -15,11 +23,13 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper;
|
||||
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
@ -60,7 +70,13 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
|
||||
@Resource
|
||||
private AdminUserService adminUserService;
|
||||
@Resource
|
||||
private MaterialPlanBoomMapper materialPlanBoomMapper;
|
||||
@Resource
|
||||
private com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper bdgzsomthingMapper;
|
||||
@Resource
|
||||
private ProcessBomDetailMapper processBomDetailMapper;
|
||||
@Resource
|
||||
private TaskDispatchDetailMapper taskDispatchDetailMapper;
|
||||
@Override
|
||||
public Long createMaterialPlan(MaterialPlanSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -197,5 +213,116 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
|
||||
public PageResult<MaterialPlanDO> getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO) {
|
||||
return materialPlanMapper.selectPage(pageReqVO);
|
||||
}
|
||||
@Override
|
||||
public PageResult<MaterialPlanDO> getMaterialPlanPages(MaterialPlanPageReqVO pageReqVO) {
|
||||
return materialPlanMapper.selectPages(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> delMaterialPlan(Long id) {
|
||||
MaterialPlanDO planDO = materialPlanMapper.selectById(id);
|
||||
if(ObjectUtil.isEmpty(planDO)) return CommonResult.error(400,"该物料需求单号不存在,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
queryWrapper.in(MaterialPlanBoomDO::getMplanStatus,1,2,3);
|
||||
if (materialPlanBoomMapper.selectCount(queryWrapper) > 0)return CommonResult.error(400,"该物料需求计划已送审,不允许删除,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
if (planDO.getMatType()==0){
|
||||
LambdaUpdateWrapper<ProcessBomDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(ProcessBomDetailDO::getProjectMaterialPlanNo, planDO.getProjectMaterialPlanNo());
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getProjectMaterialPlanNo, null);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getDuEmpId, null);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getMplanStatus,0);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getMplanDate,null);
|
||||
processBomDetailMapper.update(lambdaUpdateWrapper);
|
||||
}else {
|
||||
LambdaUpdateWrapper<TaskDispatchDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(TaskDispatchDetailDO::getProjectMaterialPlanNo, planDO.getProjectMaterialPlanNo());
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanNo, null);
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getPlanStatus,0);
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanDetailId,null);
|
||||
taskDispatchDetailMapper.update(lambdaUpdateWrapper);
|
||||
}
|
||||
materialPlanBoomMapper.delete(queryWrapper1);
|
||||
materialPlanMapper.deleteById(planDO.getId());
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<TaskDispatchDetailDO> getPartPage(MaterialPlanPageReqVO pageReqVO) {
|
||||
return taskDispatchDetailMapper.getPartPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean submit(List<TaskDispatchDetailDO> list) {
|
||||
TaskDispatchDetailDO detailDO = list.get(0);
|
||||
MaterialPlanDO planDO = new MaterialPlanDO();
|
||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||
serialNumberDO = serialNumberService.getSerialNumber(MATERIAL_PLAN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||
planDO.setProjectMaterialPlanNo(MATERIAL_PLAN.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||
planDO.setProjectId(detailDO.getProjectId());
|
||||
planDO.setProjectPlanId(detailDO.getPlanId());
|
||||
planDO.setCustomerId(detailDO.getCustomerId());
|
||||
planDO.setBrief(detailDO.getCustomerName());
|
||||
planDO.setProjectName(detailDO.getProjectName());
|
||||
planDO.setProjectNameSim(detailDO.getProjectNameSim());
|
||||
planDO.setMatType(1);
|
||||
planDO.setProjectPlanSubId(detailDO.getProjectSubId());
|
||||
planDO.setName(detailDO.getProjectSubName());
|
||||
planDO.setNameSim(detailDO.getNameSim());
|
||||
planDO.setMatPlanDate(new Date());
|
||||
materialPlanMapper.insert(planDO);
|
||||
// 回写序列记录
|
||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||
List<MaterialPlanBoomDO> materialPlanBoomDOList = new ArrayList<>();
|
||||
for (TaskDispatchDetailDO taskDispatchDetailDO : list) {
|
||||
MaterialPlanBoomDO boomDO = new MaterialPlanBoomDO();
|
||||
boomDO.setProjectMaterialPlanId(planDO.getId());
|
||||
boomDO.setBoomDetailId(taskDispatchDetailDO.getBomDetailId());
|
||||
boomDO.setBoomAmount(new BigDecimal(taskDispatchDetailDO.getBoomAmount()));
|
||||
boomDO.setBoomArriveDate(taskDispatchDetailDO.getBoomArriveDate());
|
||||
boomDO.setMatName(taskDispatchDetailDO.getMaterialName());
|
||||
boomDO.setDuEmpId(taskDispatchDetailDO.getDuEmpId());
|
||||
boomDO.setProjectPlanSubId(taskDispatchDetailDO.getProjectSubId());
|
||||
boomDO.setMplanStatus(0);
|
||||
boomDO.setMatWeight(taskDispatchDetailDO.getMatWeight());
|
||||
boomDO.setDescription(taskDispatchDetailDO.getDescription());
|
||||
materialPlanBoomMapper.insert(boomDO);
|
||||
materialPlanBoomDOList.add(boomDO);
|
||||
taskDispatchDetailDO.setProjectMaterialPlanDetailId(boomDO.getId());
|
||||
taskDispatchDetailDO.setPlanStatus(1);
|
||||
taskDispatchDetailDO.setProjectMaterialPlanNo(planDO.getProjectMaterialPlanNo());
|
||||
}
|
||||
// materialPlanBoomMapper.insertBatch(materialPlanBoomDOList);
|
||||
taskDispatchDetailMapper.insertOrUpdateBatch(list);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> withdraw(String code) {
|
||||
LambdaQueryWrapper<MaterialPlanDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(MaterialPlanDO::getProjectMaterialPlanNo, code);
|
||||
wrapper.eq(MaterialPlanDO::getDeleted,0);
|
||||
MaterialPlanDO planDO = materialPlanMapper.selectOne(wrapper);
|
||||
if(ObjectUtil.isEmpty(planDO)) return CommonResult.error(400,"该物料需求单号不存在,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
queryWrapper.in(MaterialPlanBoomDO::getMplanStatus,1,2,3);
|
||||
if (materialPlanBoomMapper.selectCount(queryWrapper) > 0)return CommonResult.error(400,"该物料需求计划已送审,不允许撤回,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
materialPlanBoomMapper.delete(queryWrapper1);
|
||||
materialPlanMapper.deleteById(planDO.getId());
|
||||
LambdaUpdateWrapper<TaskDispatchDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(TaskDispatchDetailDO::getProjectMaterialPlanNo, code);
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanNo, null);
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getPlanStatus,0);
|
||||
lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanDetailId,null);
|
||||
taskDispatchDetailMapper.update(lambdaUpdateWrapper);
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -57,4 +57,5 @@ public interface MaterialPlanBoomService {
|
||||
|
||||
PageResult<ProcessBomDetailDO> getProcessBoomDetailList(ProcessBoomPageReqVO pageReqVO);
|
||||
|
||||
PageResult<MaterialPlanBoomDO> getMaterialPlanBoomPages(ProcessBoomPageReqVO pageReqVO);
|
||||
}
|
||||
|
@ -154,4 +154,9 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
|
||||
return processBomDetailDOPageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialPlanBoomDO> getMaterialPlanBoomPages(ProcessBoomPageReqVO pageReqVO) {
|
||||
return materialPlanBoomMapper.getMaterialPlanBoomPages(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.chanko.yunxi.mes.module.heli.service.processbom;
|
||||
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
|
||||
@ -91,4 +92,10 @@ public interface ProcessBomService {
|
||||
void deleteProcessBomDetailNew(Long id);
|
||||
ProcessBomDetailDO selectProcessBomDetail(Long id);
|
||||
void updateProcessBomDetail(ProcessBomDetailDO processBomDetailDO);
|
||||
|
||||
PageResult<ProcessBomDetailDO> getStandardPage(ProcessBomPageReqVO pageReqVO);
|
||||
|
||||
Boolean submit(List<ProcessBomDetailDO> list);
|
||||
|
||||
CommonResult<Boolean> withdraw(String code);
|
||||
}
|
||||
|
@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.generator.IFill;
|
||||
import com.chanko.yunxi.mes.framework.common.enums.BomEditStatusEnum;
|
||||
import com.chanko.yunxi.mes.framework.common.enums.StatusEnum;
|
||||
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.PageParam;
|
||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
||||
@ -23,14 +25,18 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthing
|
||||
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.materialplan.MaterialPlanDO;
|
||||
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.plantask.PlanTaskDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO;
|
||||
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.serialnumber.SerialNumberDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.attentiontodo.AttentiontodoMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.bdgzsomthing.bdgzsomthingMapper;
|
||||
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.plan.PlanMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plantask.PlanTaskMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||
@ -41,6 +47,7 @@ import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoServi
|
||||
import com.chanko.yunxi.mes.module.heli.service.composition.CompositionService;
|
||||
import com.chanko.yunxi.mes.module.heli.service.material.MaterialService;
|
||||
import com.chanko.yunxi.mes.module.heli.service.plantaskbom.PlanTaskBomService;
|
||||
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||
import com.chanko.yunxi.mes.module.system.api.user.AdminUserApi;
|
||||
import com.chanko.yunxi.mes.module.system.controller.admin.dict.vo.data.DictDataPageReqVO;
|
||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.dict.DictDataDO;
|
||||
@ -63,12 +70,14 @@ import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.rmi.RemoteException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
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.pojo.CommonResult.error;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.MATERIAL_PLAN;
|
||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
@ -108,6 +117,12 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
private AdminUserService adminUserService;
|
||||
@Resource
|
||||
private PlanMapper planMapper;
|
||||
@Resource
|
||||
private SerialNumberService serialNumberService;
|
||||
@Resource
|
||||
private MaterialPlanMapper materialPlanMapper;
|
||||
@Resource
|
||||
private MaterialPlanBoomMapper materialPlanBoomMapper;
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createProcessBom(ProcessBomSaveReqVO createReqVO) {
|
||||
@ -987,6 +1002,82 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
||||
public void updateProcessBomDetail(ProcessBomDetailDO processBomDetailDO){
|
||||
processBomDetailMapper.updateById(processBomDetailDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<ProcessBomDetailDO> getStandardPage(ProcessBomPageReqVO pageReqVO) {
|
||||
return processBomDetailMapper.getStandardPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean submit(List<ProcessBomDetailDO> list) {
|
||||
ProcessBomDetailDO detailDO = list.get(0);
|
||||
MaterialPlanDO planDO = new MaterialPlanDO();
|
||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||
serialNumberDO = serialNumberService.getSerialNumber(MATERIAL_PLAN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||
planDO.setProjectMaterialPlanNo(MATERIAL_PLAN.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||
planDO.setProjectId(detailDO.getProjectId());
|
||||
planDO.setProjectPlanId(detailDO.getPlanId());
|
||||
planDO.setCustomerId(detailDO.getCustomerId());
|
||||
planDO.setBrief(detailDO.getCustomerName());
|
||||
planDO.setProjectName(detailDO.getProjectName());
|
||||
planDO.setProjectNameSim(detailDO.getProjectNameSim());
|
||||
planDO.setMatType(0);
|
||||
planDO.setProjectPlanSubId(detailDO.getProjectSubId());
|
||||
planDO.setName(detailDO.getProjectSubName());
|
||||
planDO.setNameSim(detailDO.getNameSim());
|
||||
planDO.setMatPlanDate(new Date());
|
||||
materialPlanMapper.insert(planDO);
|
||||
|
||||
// 回写序列记录
|
||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||
List<MaterialPlanBoomDO> materialPlanBoomDOList = new ArrayList<>();
|
||||
for (ProcessBomDetailDO processBomDetailDO : list) {
|
||||
MaterialPlanBoomDO boomDO = new MaterialPlanBoomDO();
|
||||
boomDO.setProjectMaterialPlanId(planDO.getId());
|
||||
boomDO.setBoomDetailId(processBomDetailDO.getId());
|
||||
boomDO.setBoomAmount(new BigDecimal(processBomDetailDO.getAmount()));
|
||||
boomDO.setBoomArriveDate(processBomDetailDO.getBoomArriveDate());
|
||||
boomDO.setMatName(processBomDetailDO.getMaterialName());
|
||||
boomDO.setDuEmpId(processBomDetailDO.getDuEmpId());
|
||||
boomDO.setProjectPlanSubId(processBomDetailDO.getProjectSubId());
|
||||
boomDO.setMaterialId(processBomDetailDO.getMaterialId());
|
||||
boomDO.setMplanStatus(0);
|
||||
materialPlanBoomDOList.add(boomDO);
|
||||
processBomDetailDO.setMplanDate(processBomDetailDO.getBoomArriveDate());
|
||||
processBomDetailDO.setMplanStatus(1);
|
||||
processBomDetailDO.setProjectMaterialPlanNo(planDO.getProjectMaterialPlanNo());
|
||||
}
|
||||
materialPlanBoomMapper.insertBatch(materialPlanBoomDOList);
|
||||
processBomDetailMapper.insertOrUpdateBatch(list);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> withdraw(String code) {
|
||||
LambdaQueryWrapper<MaterialPlanDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(MaterialPlanDO::getProjectMaterialPlanNo, code);
|
||||
wrapper.eq(MaterialPlanDO::getDeleted,0);
|
||||
MaterialPlanDO planDO = materialPlanMapper.selectOne(wrapper);
|
||||
if(ObjectUtil.isEmpty(planDO)) return CommonResult.error(400,"该物料需求单号不存在,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
queryWrapper.in(MaterialPlanBoomDO::getMplanStatus,1,2,3);
|
||||
if (materialPlanBoomMapper.selectCount(queryWrapper) > 0)return CommonResult.error(400,"该物料需求计划已送审,不允许撤回,请确认!");
|
||||
LambdaQueryWrapper<MaterialPlanBoomDO> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, planDO.getId());
|
||||
materialPlanBoomMapper.delete(queryWrapper1);
|
||||
materialPlanMapper.deleteById(planDO.getId());
|
||||
LambdaUpdateWrapper<ProcessBomDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(ProcessBomDetailDO::getProjectMaterialPlanNo, code);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getProjectMaterialPlanNo, null);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getDuEmpId, null);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getMplanStatus,0);
|
||||
lambdaUpdateWrapper.set(ProcessBomDetailDO::getMplanDate,null);
|
||||
processBomDetailMapper.update(lambdaUpdateWrapper);
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
private void createProcessBomDetailList(String bomCode,Long bomId, List<ProcessBomDetailDO> list,Integer num) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
/*list.forEach(o -> {o.setBomId(bomId);o.setUpdateTimes(now);}
|
||||
|
@ -390,7 +390,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService {
|
||||
BdgzsomthingDO.setThingname(thingname);
|
||||
// BdgzsomthingDO.setThings(things);
|
||||
BdgzsomthingDO.setAttr4("1");
|
||||
BdgzsomthingDO.setAttr6(processDesignDO.getCustomerName());
|
||||
BdgzsomthingDO.setAttr6(processDesignDO.getBrief());
|
||||
BdgzsomthingDO.setAttr7(processDesignDO.getProjectName());
|
||||
BdgzsomthingDO.setAttr8(processDesignDO.getProjectSubName());
|
||||
BdgzsomthingDO.setAttr9(processDesignProgressDO.getRemark());
|
||||
|
@ -1,5 +1,8 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
|
||||
|
||||
|
||||
export interface MaterialPlanVO {
|
||||
id: number
|
||||
projectMaterialPlanNo: string
|
||||
@ -42,3 +45,25 @@ export const deleteMaterialPlan = async (id: number) => {
|
||||
export const exportMaterialPlan = async (params) => {
|
||||
return await request.download({ url: `/heli/material-plan/export-excel`, params })
|
||||
}
|
||||
// 查询标准件物料需求计划管理分页
|
||||
export const getMaterialPlanPages = async (params) => {
|
||||
return await request.get({ url: `/heli/material-plan/pages`, params })
|
||||
}
|
||||
// 删除物料需求计划
|
||||
export const delMaterialPlan = async (id: number) => {
|
||||
return await request.delete({ url: `/heli/material-plan/delMaterialPlan?id=` + id })
|
||||
}
|
||||
// 查询物料需求计划分页
|
||||
export const getPartPage = async (params) => {
|
||||
return await request.get({ url: `/heli/material-plan/getPartPage`, params })
|
||||
}
|
||||
// 导出物料需求计划 Excel
|
||||
export const exportPart = async (params) => {
|
||||
return await request.download({ url: `/heli/material-plan/exportPart`, params })
|
||||
}
|
||||
export const submitForm = async (data) => {
|
||||
return await request.post({ url: `/heli/material-plan/submit`, data })
|
||||
}
|
||||
export const withdraw = async (code) => {
|
||||
return await request.get({ url: `/heli/material-plan/withdraw?code=` + code })
|
||||
}
|
||||
|
@ -48,3 +48,6 @@ export const deleteMaterialPlanBoom = async (id: number) => {
|
||||
export const exportMaterialPlanBoom = async (params) => {
|
||||
return await request.download({ url: `/heli/material-plan-boom/export-excel`, params })
|
||||
}
|
||||
export const getMaterialPlanBoomPages = async (params) => {
|
||||
return await request.get({ url: `/heli/material-plan-boom/pages`, params })
|
||||
}
|
||||
|
@ -73,3 +73,19 @@ export const deleteProcessBomDetail = async (id: number) => {
|
||||
export async function operateProcessBom(data: ProcessBomVO) {
|
||||
return await request.post({ url: `/heli/process-bom/operate`, data })
|
||||
}
|
||||
|
||||
// 查询标准件物料需求计划
|
||||
export const getStandardPage = async (params) => {
|
||||
return await request.get({ url: `/heli/process-bom/getStandardPage`, params })
|
||||
}
|
||||
export const submitForm = async (data) => {
|
||||
return await request.post({ url: `/heli/process-bom/submit`, data })
|
||||
}
|
||||
export const withdraw = async (code) => {
|
||||
return await request.get({ url: `/heli/process-bom/withdraw?code=` + code })
|
||||
}
|
||||
// 导出工艺bom Excel
|
||||
export const exportStandard = async (params) => {
|
||||
return await request.download({ url: `/heli/process-bom/exportStandard`, params })
|
||||
}
|
||||
|
||||
|
@ -279,7 +279,11 @@ export enum DICT_TYPE {
|
||||
HELI_PG_PLANTYPE = 'heli_pg_planType',//生产进度报表中派工是否完成状态
|
||||
HELI_GRADE='heli_grade',
|
||||
HELI_CGTYPE='heli_cgType',
|
||||
HELI_PROJECT_LEADER='heli_project_leader'
|
||||
HELI_PROJECT_LEADER='heli_project_leader',
|
||||
HELI_MATERIAL_PLAN_BOOM_STATUS = 'heli_material_plan_boom_status',//物料需求计划标准件状态
|
||||
HELI_MAT_TYPE = 'heli_mat_type',//物料需求计划类型
|
||||
HELI_PROJECT_MATERIAL_PLAN_BOOM_STATUS='heli_project_material_plan_boom_status'//物料需求计划Boon状态
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,180 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>物料需求计划管理</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
|
||||
<el-form-item label="需求计划单号" prop="projectMaterialPlanNo">
|
||||
<el-input v-model="queryParams.projectMaterialPlanNo" placeholder="物料计划单号" clearable @keyup.enter="handleQuery"
|
||||
class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="项目名称" clearable @keyup.enter="handleQuery"
|
||||
class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="子项目名称" prop="projectSubName">
|
||||
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="零件名称" prop="materialName">
|
||||
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:15px">
|
||||
<el-button @click="handleQuery" type="primary">
|
||||
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
|
||||
<el-table-column label="序号" type="index" align="center" fixed min-width="70px" />
|
||||
<el-table-column label="物料需求计划单号" align="center" prop="projectMaterialPlanNo" min-width="180" fixed>
|
||||
<template #default="scope">
|
||||
<el-button text type="primary" @click="openForm('detail', scope.row.id)">
|
||||
{{ scope.row.projectMaterialPlanNo }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180px" />
|
||||
<el-table-column label="子项目名称" align="center" prop="name" min-width="180px" />
|
||||
<el-table-column label="客户简称" align="center" prop="brief" min-width="180px" />
|
||||
<el-table-column label="制单日期" align="center" prop="matPlanDate" :formatter="dateFormatter1" min-width="150" />
|
||||
<el-table-column label="需求计划类型" align="center" prop="matType" min-width="150">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HELI_MAT_TYPE" :value="scope.row.matType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" min-width="180">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="openForm('detail', scope.row.id)">
|
||||
详情信息
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</ContentWrap>
|
||||
|
||||
</el-card>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter1} from '@/utils/formatTime'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
|
||||
|
||||
defineOptions({ name: 'MaterialPlan' })
|
||||
const router = useRouter()
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
id: undefined,
|
||||
projectMaterialPlanNo: undefined,
|
||||
projectId: undefined,
|
||||
projectPlanId: undefined,
|
||||
submitUserId: undefined,
|
||||
projectName: undefined,
|
||||
projectSubName: undefined,
|
||||
materialName:undefined,
|
||||
submitTime: [],
|
||||
auditor: undefined,
|
||||
auditTime: [],
|
||||
status: undefined,
|
||||
description: undefined,
|
||||
createTime: [],
|
||||
matType:0,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanApi.getMaterialPlanPages(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
|
||||
const openForm = (type: string, id?: number) => {
|
||||
|
||||
switch (type) {
|
||||
case 'create':
|
||||
router.push({ path: '/purchase/materialplanadd', query: { id: id } })
|
||||
break;
|
||||
case 'update':
|
||||
router.push({ path: '/purchase/materialplanedit', query: { id: id } })
|
||||
break;
|
||||
case 'detail':
|
||||
router.push({ path: '/purchase/managementdetail', query: { id: id } })
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await MaterialPlanApi.delMaterialPlan(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch { }
|
||||
}
|
||||
|
||||
|
||||
const userInit = ref()
|
||||
/** 初始化 **/
|
||||
onMounted(async () => {
|
||||
//用户列表数据
|
||||
// userInit.value = await UserApi.getSimpleUserList()
|
||||
getList()
|
||||
})
|
||||
</script>
|
@ -0,0 +1,164 @@
|
||||
<template>
|
||||
<el-card class="hl-card" style="position: relative">
|
||||
<template #header>
|
||||
<span>详情页</span>
|
||||
</template>
|
||||
<el-form ref="formRef" :model="formData" label-width="160px" v-loading="formLoading">
|
||||
<!-- 基础信息 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
|
||||
</template>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求计划号" prop="projectMaterialPlanNo">
|
||||
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.projectMaterialPlanNo" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.projectName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="子项目名称" prop="name">
|
||||
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.name" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<!-- 需求单信息 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">需求单信息</span>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<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 prop="matName" min-width="200" label="物料名称" align="center"/>
|
||||
<el-table-column prop="nickname" min-width="120" label="责任人" align="center"/>
|
||||
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
||||
<el-table-column prop="boomArriveDate" min-width="200" label="需求到货日期" align="center" :formatter="dateFormatter1"/>
|
||||
<el-table-column prop="boomSpec" min-width="200" label="规格类型" align="center"/>
|
||||
<el-table-column prop="mplanStatus" min-width="100" label="需求状态" align="center">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_BOOM_STATUS" :value="scope.row.mplanStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="description" min-width="200" label="备注" align="center"/>
|
||||
</el-table>
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
<div class="hl-footer text-center">
|
||||
<el-button @click="closeForm" size="large">取 消</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 表单弹窗:物料列表 -->
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import * as MaterialPlanDetailApi from '@/api/heli/materialplandetail'
|
||||
import * as MaterialPlanBoomApi from '@/api/heli/materialplanboom'
|
||||
import type { UploadUserFile } from 'element-plus'
|
||||
import * as PlanApi from '@/api/heli/plan'
|
||||
import * as PlanSubApi from '@/api/heli/plansub'
|
||||
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import * as MaterialApi from '@/api/heli/material'
|
||||
import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file'
|
||||
import download from '@/utils/download'
|
||||
import { getAccessToken, getTenantId } from '@/utils/auth'
|
||||
import {dateFormatter, dateFormatter1, formatDate} from '@/utils/formatTime'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
|
||||
import booms from './boom.vue'
|
||||
|
||||
const reload: any = inject('reload')
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { query } = useRoute()
|
||||
const router = useRouter()
|
||||
const tagsViewStore = useTagsViewStore()
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
projectMaterialPlanNo: undefined,
|
||||
projectId: undefined,
|
||||
projectPlanId: undefined,
|
||||
projectPlanNo: undefined,
|
||||
projectCode: undefined,
|
||||
auditor: undefined,
|
||||
createTime: new Date(),
|
||||
status: undefined,
|
||||
description: undefined,
|
||||
boomItemDOList: [],
|
||||
boomItemRemoveList: [],
|
||||
matBoomDOList: [],
|
||||
matItemRemoveList: [],
|
||||
attachments: []
|
||||
})
|
||||
|
||||
const formRef = ref() // 表单 Ref
|
||||
const subFormRef = ref() // 表单 Ref
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const total = ref(0) // 列表的总页数
|
||||
const subBoomFormLoading = ref(false)
|
||||
const subBoomFormRef = ref()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const closeForm = async () => {
|
||||
router.push({ path: '/purchase/management' })
|
||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||
}
|
||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
projectMaterialPlanId: query.id
|
||||
})
|
||||
// 页面数据加载初始化
|
||||
onMounted(async () => {
|
||||
// 获取物料需求计划信息
|
||||
formData.value = await MaterialPlanApi.getMaterialPlan(query.id)
|
||||
getList();
|
||||
})
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanBoomApi.getMaterialPlanBoomPages(queryParams)
|
||||
formData.value.matBoomDOList = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
281
mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue
Normal file
281
mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/part.vue
Normal file
@ -0,0 +1,281 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>零件物料需求计划</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="子项目名称" prop="projectSubName">
|
||||
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="零件名称" prop="materialName">
|
||||
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="领件状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择标准件状态" clearable class="!w-240px">
|
||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_PLAN_BOOM_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="物料需求单号" prop="projectMaterialPlanNo">
|
||||
<el-input v-model="queryParams.projectMaterialPlanNo" placeholder="请输入物料需求单号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:30px">
|
||||
<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-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExportDetail"
|
||||
:loading="exportLoading"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">零件明细</span>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<el-form ref="multipleTable" :model="list" v-loading="formLoading" label-width="0" >
|
||||
<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 fixed label="序号" align="center" type="index" width="60" />
|
||||
<el-table-column label="工序名称" align="center" prop="procedureName" min-width="180" >
|
||||
<template #default="scope">
|
||||
<el-button text type="primary">
|
||||
{{ scope.row.procedureName }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" />
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
||||
<el-table-column label="客户简码" align="center" prop="customerName" min-width="150" />
|
||||
<el-table-column label="零件名称" align="center" prop="materialName" min-width="180" />
|
||||
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
|
||||
<el-table-column label="数量" align="center" prop="boomAmount" min-width="120" />
|
||||
<el-table-column min-width="200px" align="center" >
|
||||
<template #header><span class="hl-table_header">*</span>要求完成日期</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.boomArriveDate`" class="mb-0px!" >
|
||||
<el-date-picker class="!w-265px" v-model="row.boomArriveDate" type="date" value-format="x" placeholder="要求完成日期" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="200px" align="center" >
|
||||
<template #header>要求说明</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.description`" class="mb-0px!" >
|
||||
<el-input class="!w-265px" v-model="row.description" placeholder="要求说明" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="200px" align="center">
|
||||
<template #header>重量(T)</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.matWeight`" class="mb-0px!" >
|
||||
<el-input-number v-model="row.matWeight" type="number" :precision="2" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="200px" align="center" >
|
||||
<template #header><span class="hl-table_header">*</span>责任人</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.duEmpId`" class="mb-0px!" >
|
||||
<UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料需求单号" align="center" prop="projectMaterialPlanNo" min-width="180" />
|
||||
<el-table-column label="操作" align="center" fixed="right" min-width="120">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="singleSubmission(scope.row)">
|
||||
提交
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<div class="hl-footer text-center">
|
||||
<el-button @click="submitForm()" type="success" size="large">全部提交</el-button>
|
||||
<el-button style="margin-left: 20px" @click="withdraw()" type="danger" size="large">撤回</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import download from '@/utils/download'
|
||||
import * as ProcessBomApi from '@/api/heli/processbom'
|
||||
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||
import UserSelect from "@/views/heli/hlvuestyle/userSelect.vue";
|
||||
import {inject, ref} from "vue";
|
||||
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
||||
import {ElTable} from "element-plus";
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
|
||||
defineOptions({ name: 'standard' })
|
||||
const reload: any = inject('reload')
|
||||
const commonStore = useCommonStateWithOut()
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const router = useRouter()
|
||||
const multipleTable = ref<InstanceType<typeof ElTable>>()
|
||||
const multipleSelection = ref([])
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
code: undefined,
|
||||
planCode: undefined,
|
||||
projectCode: undefined,
|
||||
customerName: undefined,
|
||||
projectName: undefined,
|
||||
projectSubName: undefined,
|
||||
version: undefined,
|
||||
bomStatus: undefined,
|
||||
remark: undefined,
|
||||
status: 0,
|
||||
createTime: [],
|
||||
ownerName:undefined,
|
||||
materialName:undefined,
|
||||
projectMaterialPlanNo:undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanApi.getPartPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
/** 导出按钮操作 */
|
||||
const handleExportDetail = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await MaterialPlanApi.exportPart(queryParams)
|
||||
download.excel(data, '零件物料需求计划.xlsx')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const handleSelectionChange = (val) => {
|
||||
if (val.length > 1) {
|
||||
// multipleTable.value.clearSelection()
|
||||
multipleTable.value=val
|
||||
} else {
|
||||
multipleSelection.value = val.pop()
|
||||
}
|
||||
}
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
const handleSelectedUser = (currentIndex, newValue: any) => {
|
||||
list.value[currentIndex].duEmpId = newValue?.id
|
||||
}
|
||||
const singleSubmission= (val) =>{
|
||||
multipleTable.value=[]
|
||||
multipleTable.value.push(val)
|
||||
submitForm();
|
||||
}
|
||||
const submitForm = async () => {
|
||||
const list= multipleTable.value;
|
||||
if (list.length <= 0) {
|
||||
message.error("提交明细不能为空,请确认");
|
||||
return;
|
||||
}
|
||||
const firstProjectSubId = list[0].projectSubId;
|
||||
for (let i = 1; i < list.length; i++) {
|
||||
if (list[i].projectSubId !== firstProjectSubId) {
|
||||
message.error("零件明细不属于同一个子项目,请确认");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
if (list[i].projectMaterialPlanNo!=null){
|
||||
message.error("零件"+list[i].materialName+"已生成物料需求计划,请确认")
|
||||
return
|
||||
}
|
||||
if (list[i].boomArriveDate==null){
|
||||
message.error("零件"+list[i].materialName+"要求完成日期为空,请确认")
|
||||
return
|
||||
}
|
||||
if (list[i].duEmpId==null){
|
||||
message.error("零件"+list[i].materialName+"责任人为空,请确认")
|
||||
return
|
||||
}
|
||||
}
|
||||
formLoading.value = true
|
||||
try {
|
||||
await MaterialPlanApi.submitForm(list)
|
||||
message.success("提交成功")
|
||||
// 发送操作成功的事件
|
||||
getList()
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
const withdraw = async () => {
|
||||
if (queryParams.projectMaterialPlanNo==null){
|
||||
message.error("物料需求单号为空,不允许撤回")
|
||||
return
|
||||
|
||||
}
|
||||
await MaterialPlanApi.withdraw(queryParams.projectMaterialPlanNo)
|
||||
message.success("撤回成功")
|
||||
// 发送操作成功的事件
|
||||
getList()
|
||||
emit('success')
|
||||
|
||||
}
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
<style>
|
||||
/* 占位样式 */
|
||||
</style>
|
@ -0,0 +1,180 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>物料需求计划管理</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
|
||||
<el-form-item label="需求计划单号" prop="projectMaterialPlanNo">
|
||||
<el-input v-model="queryParams.projectMaterialPlanNo" placeholder="物料计划单号" clearable @keyup.enter="handleQuery"
|
||||
class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="项目名称" clearable @keyup.enter="handleQuery"
|
||||
class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="子项目名称" prop="projectSubName">
|
||||
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="零件名称" prop="materialName">
|
||||
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:15px">
|
||||
<el-button @click="handleQuery" type="primary">
|
||||
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||
</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
|
||||
<el-table-column label="序号" type="index" align="center" fixed min-width="70px" />
|
||||
<el-table-column label="物料需求计划单号" align="center" prop="projectMaterialPlanNo" min-width="180" fixed>
|
||||
<template #default="scope">
|
||||
<el-button text type="primary" @click="openForm('detail', scope.row.id)">
|
||||
{{ scope.row.projectMaterialPlanNo }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180px" />
|
||||
<el-table-column label="子项目名称" align="center" prop="name" min-width="180px" />
|
||||
<el-table-column label="客户简称" align="center" prop="brief" min-width="180px" />
|
||||
<el-table-column label="制单日期" align="center" prop="matPlanDate" :formatter="dateFormatter1" min-width="150" />
|
||||
<el-table-column label="需求计划类型" align="center" prop="matType" min-width="150">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HELI_MAT_TYPE" :value="scope.row.matType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" fixed="right" min-width="180">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="openForm('detail', scope.row.id)">
|
||||
详情信息
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</ContentWrap>
|
||||
|
||||
</el-card>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { dateFormatter1} from '@/utils/formatTime'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
|
||||
|
||||
defineOptions({ name: 'MaterialPlan' })
|
||||
const router = useRouter()
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
id: undefined,
|
||||
projectMaterialPlanNo: undefined,
|
||||
projectId: undefined,
|
||||
projectPlanId: undefined,
|
||||
submitUserId: undefined,
|
||||
projectName: undefined,
|
||||
projectSubName: undefined,
|
||||
materialName:undefined,
|
||||
submitTime: [],
|
||||
auditor: undefined,
|
||||
auditTime: [],
|
||||
status: undefined,
|
||||
description: undefined,
|
||||
createTime: [],
|
||||
matType:1,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanApi.getMaterialPlanPages(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
|
||||
const openForm = (type: string, id?: number) => {
|
||||
|
||||
switch (type) {
|
||||
case 'create':
|
||||
router.push({ path: '/purchase/materialplanadd', query: { id: id } })
|
||||
break;
|
||||
case 'update':
|
||||
router.push({ path: '/purchase/materialplanedit', query: { id: id } })
|
||||
break;
|
||||
case 'detail':
|
||||
router.push({ path: '/purchase/partmanagementdetail', query: { id: id } })
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await MaterialPlanApi.delMaterialPlan(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch { }
|
||||
}
|
||||
|
||||
|
||||
const userInit = ref()
|
||||
/** 初始化 **/
|
||||
onMounted(async () => {
|
||||
//用户列表数据
|
||||
// userInit.value = await UserApi.getSimpleUserList()
|
||||
getList()
|
||||
})
|
||||
</script>
|
@ -0,0 +1,165 @@
|
||||
<template>
|
||||
<el-card class="hl-card" style="position: relative">
|
||||
<template #header>
|
||||
<span>详情页</span>
|
||||
</template>
|
||||
<el-form ref="formRef" :model="formData" label-width="160px" v-loading="formLoading">
|
||||
<!-- 基础信息 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
|
||||
</template>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="需求计划号" prop="projectMaterialPlanNo">
|
||||
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.projectMaterialPlanNo" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.projectName" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="子项目名称" prop="name">
|
||||
<el-input class="!w-300px" placeholder="项目名称" v-model="formData.name" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<!-- 需求单信息 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">需求单信息</span>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<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 prop="matName" min-width="200" label="物料名称" align="center"/>
|
||||
<el-table-column prop="nickname" min-width="120" label="责任人" align="center"/>
|
||||
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
||||
<el-table-column prop="boomArriveDate" min-width="200" label="需求到货日期" align="center" :formatter="dateFormatter1"/>
|
||||
<el-table-column prop="boomSpec" min-width="200" label="规格类型" align="center"/>
|
||||
<el-table-column prop="mplanStatus" min-width="100" label="需求状态" align="center">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_BOOM_STATUS" :value="scope.row.mplanStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="matWeight" min-width="200" label="重量(吨)" align="center"/>
|
||||
<el-table-column prop="description" min-width="200" label="要求说明" align="center"/>
|
||||
</el-table>
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
<div class="hl-footer text-center">
|
||||
<el-button @click="closeForm" size="large">取 消</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 表单弹窗:物料列表 -->
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import * as MaterialPlanDetailApi from '@/api/heli/materialplandetail'
|
||||
import * as MaterialPlanBoomApi from '@/api/heli/materialplanboom'
|
||||
import type { UploadUserFile } from 'element-plus'
|
||||
import * as PlanApi from '@/api/heli/plan'
|
||||
import * as PlanSubApi from '@/api/heli/plansub'
|
||||
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import * as MaterialApi from '@/api/heli/material'
|
||||
import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file'
|
||||
import download from '@/utils/download'
|
||||
import { getAccessToken, getTenantId } from '@/utils/auth'
|
||||
import {dateFormatter, dateFormatter1, formatDate} from '@/utils/formatTime'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||
import MaterialSelect from '@/views/heli/hlvuestyle/materialSelect.vue'
|
||||
import booms from './boom.vue'
|
||||
|
||||
const reload: any = inject('reload')
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { query } = useRoute()
|
||||
const router = useRouter()
|
||||
const tagsViewStore = useTagsViewStore()
|
||||
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
projectMaterialPlanNo: undefined,
|
||||
projectId: undefined,
|
||||
projectPlanId: undefined,
|
||||
projectPlanNo: undefined,
|
||||
projectCode: undefined,
|
||||
auditor: undefined,
|
||||
createTime: new Date(),
|
||||
status: undefined,
|
||||
description: undefined,
|
||||
boomItemDOList: [],
|
||||
boomItemRemoveList: [],
|
||||
matBoomDOList: [],
|
||||
matItemRemoveList: [],
|
||||
attachments: []
|
||||
})
|
||||
|
||||
const formRef = ref() // 表单 Ref
|
||||
const subFormRef = ref() // 表单 Ref
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const total = ref(0) // 列表的总页数
|
||||
const subBoomFormLoading = ref(false)
|
||||
const subBoomFormRef = ref()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const closeForm = async () => {
|
||||
router.push({ path: '/purchase/management' })
|
||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||
}
|
||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
projectMaterialPlanId: query.id
|
||||
})
|
||||
// 页面数据加载初始化
|
||||
onMounted(async () => {
|
||||
// 获取物料需求计划信息
|
||||
formData.value = await MaterialPlanApi.getMaterialPlan(query.id)
|
||||
getList();
|
||||
})
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await MaterialPlanBoomApi.getMaterialPlanBoomPages(queryParams)
|
||||
formData.value.matBoomDOList = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
@ -0,0 +1,282 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>标准件物料需求计划</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="子项目名称" prop="projectSubName">
|
||||
<el-input v-model="queryParams.projectSubName" placeholder="请输入子项目名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="零件名称" prop="materialName">
|
||||
<el-input v-model="queryParams.materialName" placeholder="请输入零件名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="projectCode">
|
||||
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="责任人" prop="ownerName">
|
||||
<el-input
|
||||
v-model="queryParams.ownerName"
|
||||
placeholder="请输入责任人"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准件状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择标准件状态" clearable class="!w-240px">
|
||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_MATERIAL_PLAN_BOOM_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="物料需求单号" prop="projectMaterialPlanNo">
|
||||
<el-input v-model="queryParams.projectMaterialPlanNo" placeholder="请输入物料需求单号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item style="margin-left:30px">
|
||||
<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-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExportDetail"
|
||||
:loading="exportLoading"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<el-card class="hl-card-info">
|
||||
<template #header>
|
||||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">标准件明细</span>
|
||||
</template>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-card class="hl-incard">
|
||||
<el-form ref="subFormRef" :model="list" v-loading="formLoading" label-width="0" >
|
||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table">
|
||||
<el-table-column fixed label="序号" align="center" type="index" width="60" />
|
||||
<el-table-column label="客户简称" align="center" prop="customerName" min-width="240" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" />
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180" />
|
||||
<el-table-column label="零件名称" align="center" prop="materialName" min-width="180" />
|
||||
<el-table-column label="材质" align="center" prop="compositionName" min-width="180" />
|
||||
<el-table-column label="规格型号" align="center" prop="spec" min-width="150" />
|
||||
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
|
||||
<el-table-column label="数量" align="center" prop="amount" min-width="120" />
|
||||
<el-table-column label="单位" align="center" prop="unit" min-width="100">
|
||||
<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" fixed="right">
|
||||
<template #header><span class="hl-table_header">*</span>要求完成日期</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.boomArriveDate`" class="mb-0px!" >
|
||||
<el-date-picker class="!w-265px" v-model="row.boomArriveDate" type="date" value-format="x" placeholder="要求完成日期" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="200px" align="center" fixed="right" >
|
||||
<template #header><span class="hl-table_header">*</span>责任人</template>
|
||||
<template #default="{ row, $index }">
|
||||
<!-- <el-select clearable filterable v-model="row.owner" placeholder="请选择责任人" style="width: 170px">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in ownerList"-->
|
||||
<!-- :key="item.index"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- :value="item.id"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<el-form-item :prop="`${$index}.duEmpId`" class="mb-0px!" >
|
||||
<UserSelect v-model="row.duEmpId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料需求单号" align="center" prop="projectMaterialPlanNo" min-width="180" fixed="right"/>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<div class="hl-footer text-center">
|
||||
<el-button @click="submitForm()" type="success" size="large">提 交</el-button>
|
||||
<el-button style="margin-left: 20px" @click="withdraw()" type="danger" size="large">撤回</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import download from '@/utils/download'
|
||||
import * as ProcessBomApi from '@/api/heli/processbom'
|
||||
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||
import UserSelect from "@/views/heli/hlvuestyle/userSelect.vue";
|
||||
import {inject, ref} from "vue";
|
||||
import * as UserGroupApi from "@/api/bpm/userGroup";
|
||||
import {exportStandard} from "@/api/heli/processbom";
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
|
||||
defineOptions({ name: 'standard' })
|
||||
const reload: any = inject('reload')
|
||||
const commonStore = useCommonStateWithOut()
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const router = useRouter()
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
code: undefined,
|
||||
planCode: undefined,
|
||||
projectCode: undefined,
|
||||
customerName: undefined,
|
||||
projectName: undefined,
|
||||
projectSubName: undefined,
|
||||
version: undefined,
|
||||
bomStatus: undefined,
|
||||
remark: undefined,
|
||||
status: 0,
|
||||
createTime: [],
|
||||
ownerName:undefined,
|
||||
materialName:undefined,
|
||||
projectMaterialPlanNo:undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ProcessBomApi.getStandardPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
/** 导出按钮操作 */
|
||||
const handleExportDetail = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await ProcessBomApi.exportStandard(queryParams)
|
||||
download.excel(data, '标准件物料需求计划.xlsx')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
const handleSelectedUser = (currentIndex, newValue: any) => {
|
||||
list.value[currentIndex].duEmpId = newValue?.id
|
||||
}
|
||||
const submitForm = async () => {
|
||||
const filteredList = list.value.filter(item => item.duEmpId !== null && item.duEmpId !== undefined);
|
||||
if (filteredList.length <= 0) {
|
||||
message.error("提交明细不能为空,请确认");
|
||||
return;
|
||||
}
|
||||
const firstProjectSubId = filteredList[0].projectSubId;
|
||||
for (let i = 1; i < filteredList.length; i++) {
|
||||
if (filteredList[i].projectSubId !== firstProjectSubId) {
|
||||
message.error("标准件明细不属于同一个子项目,请确认");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < filteredList.length; i++) {
|
||||
if (filteredList[i].projectMaterialPlanNo!=null){
|
||||
message.error("零件"+filteredList[i].materialName+"已生成物料需求计划,请确认")
|
||||
return
|
||||
}
|
||||
if (filteredList[i].boomArriveDate==null){
|
||||
message.error("零件"+filteredList[i].materialName+"要求完成日期为空,请确认")
|
||||
return
|
||||
}
|
||||
if (filteredList[i].duEmpId==null){
|
||||
message.error("零件"+filteredList[i].materialName+"责任人为空,请确认")
|
||||
return
|
||||
}
|
||||
}
|
||||
formLoading.value = true
|
||||
try {
|
||||
await ProcessBomApi.submitForm(filteredList)
|
||||
message.success("提交成功")
|
||||
// 发送操作成功的事件
|
||||
getList()
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
const withdraw = async () => {
|
||||
if (queryParams.projectMaterialPlanNo==null){
|
||||
message.error("物料需求单号为空,不允许撤回")
|
||||
return
|
||||
|
||||
}
|
||||
await ProcessBomApi.withdraw(queryParams.projectMaterialPlanNo)
|
||||
message.success("撤回成功")
|
||||
// 发送操作成功的事件
|
||||
getList()
|
||||
emit('success')
|
||||
|
||||
}
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await ProcessBomApi.exportProcessBom(queryParams)
|
||||
download.excel(data, '工艺bom.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
<style>
|
||||
/* 占位样式 */
|
||||
</style>
|
@ -1,164 +1,246 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted, computed, ref } from 'vue'
|
||||
import { onLoad, onShow } from '@dcloudio/uni-app'
|
||||
import { getListAPI, getDictAPI, getListWxAPI, getTaskDetailAPI } from '@/services/productionReport'
|
||||
import { useLoginStore } from '@/stores/modules/login'
|
||||
import { formatDate } from '@/utils/index'
|
||||
import { onMounted, computed, ref } from "vue";
|
||||
import { onLoad, onShow } from "@dcloudio/uni-app";
|
||||
import {
|
||||
getListAPI,
|
||||
getDictAPI,
|
||||
getListWxAPI,
|
||||
getTaskDetailAPI,
|
||||
} from "@/services/productionReport";
|
||||
import { useLoginStore } from "@/stores/modules/login";
|
||||
import { formatDate } from "@/utils/index";
|
||||
|
||||
const userStore = useLoginStore()
|
||||
const userId = userStore.userInfo.userId
|
||||
const userStore = useLoginStore();
|
||||
const userId = userStore.userInfo.userId;
|
||||
|
||||
// 是否分页结束
|
||||
const isFinish = ref(false)
|
||||
const isFinish = ref(false);
|
||||
// 是否触发下拉刷新
|
||||
const isTriggered = ref(false)
|
||||
const isTriggered = ref(false);
|
||||
// 定义 porps
|
||||
const props = defineProps<{
|
||||
orderState : string
|
||||
}>()
|
||||
const noticeMsg = ref('')
|
||||
orderState: string;
|
||||
}>();
|
||||
const noticeMsg = ref("");
|
||||
const isOverBeforeProcedure = async (id: number) => {
|
||||
//console.log(props.orderState)
|
||||
const params = {
|
||||
id,
|
||||
}
|
||||
const data = await getTaskDetailAPI(params)
|
||||
console.log(data.testYn)
|
||||
};
|
||||
const data = await getTaskDetailAPI(params);
|
||||
console.log(data.testYn);
|
||||
if (data.beforeProcedureStatus == 0) {
|
||||
//如果上一道工序没结束
|
||||
noticeMsg.value = '上一道工序尚未完成报工!';
|
||||
noticeMsg.value = "上一道工序尚未完成报工!";
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
const statusText = computed(() => {
|
||||
const text = props.orderState == '0,1' ? '处理' : '查看'
|
||||
return text
|
||||
})
|
||||
const text = props.orderState == "0,1" ? "处理" : "查看";
|
||||
return text;
|
||||
});
|
||||
// 是否加载中标记,用于防止滚动触底触发多次请求
|
||||
const isLoading = ref(false)
|
||||
const isLoading = ref(false);
|
||||
// 请求参数
|
||||
const queryParams: Required<any> = {
|
||||
pageNo: 1,
|
||||
pageSize: 5,
|
||||
owner: userId, //
|
||||
procedureStatusList: props.orderState, // 工序完成状态列表
|
||||
dispatchType: 'PRODUCTION', // 派工类型
|
||||
dispatchType: "PRODUCTION", // 派工类型
|
||||
isReport: 1, // 是否需要报工
|
||||
//20250601新增,项目名称/子项目名称
|
||||
subOrDetailName:'',
|
||||
}
|
||||
const dataList = ref([])
|
||||
subOrDetailName: "",
|
||||
};
|
||||
const dataList = ref([]);
|
||||
const getListData = async () => {
|
||||
if(props.orderState == '2'){
|
||||
queryParams.subOrDetailName = '';
|
||||
if (props.orderState == "2") {
|
||||
queryParams.subOrDetailName = "";
|
||||
}
|
||||
// 如果数据出于加载中,退出函数
|
||||
if (isLoading.value) return
|
||||
if (isLoading.value) return;
|
||||
if (isFinish.value === true) {
|
||||
return uni.showToast({ icon: 'none', title: '没有更多数据~' })
|
||||
return uni.showToast({ icon: "none", title: "没有更多数据~" });
|
||||
}
|
||||
isLoading.value = true
|
||||
isLoading.value = true;
|
||||
// 发送请求
|
||||
// const data = await getListAPI(queryParams)
|
||||
const data = await getListWxAPI(queryParams)
|
||||
isLoading.value = false
|
||||
const data = await getListWxAPI(queryParams);
|
||||
isLoading.value = false;
|
||||
data.list.forEach((e) => {
|
||||
e.orderTime = formatDate(e.orderTime, 'YYYY-MM-DD')
|
||||
e.startTime = formatDate(e.startTime, 'YYYY-MM-DD')
|
||||
e.endTime = formatDate(e.endTime, 'YYYY-MM-DD')
|
||||
})
|
||||
e.orderTime = formatDate(e.orderTime, "YYYY-MM-DD");
|
||||
e.startTime = formatDate(e.startTime, "YYYY-MM-DD");
|
||||
e.endTime = formatDate(e.endTime, "YYYY-MM-DD");
|
||||
});
|
||||
// 数组追加
|
||||
dataList.value.push(...data.list)
|
||||
dataList.value.push(...data.list);
|
||||
// 分页条件
|
||||
if (queryParams.pageNo < data.total) {
|
||||
// 页码累加
|
||||
queryParams.pageNo++
|
||||
queryParams.pageNo++;
|
||||
} else {
|
||||
// 分页已结束
|
||||
isFinish.value = true
|
||||
isFinish.value = true;
|
||||
}
|
||||
}
|
||||
const todayStr = ref('');
|
||||
};
|
||||
const todayStr = ref("");
|
||||
onMounted(async () => {
|
||||
const today = new Date();
|
||||
const year = today.getFullYear();
|
||||
const month = String(today.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(today.getDate()).padStart(2, '0');
|
||||
const month = String(today.getMonth() + 1).padStart(2, "0");
|
||||
const day = String(today.getDate()).padStart(2, "0");
|
||||
|
||||
todayStr.value = `${year}-${month}-${day}`;
|
||||
await getListData()
|
||||
})
|
||||
await getListData();
|
||||
});
|
||||
|
||||
onShow(async () => {
|
||||
isFinish.value = false
|
||||
isLoading.value = false
|
||||
queryParams.pageNo = 1
|
||||
dataList.value = []
|
||||
await getListData()
|
||||
})
|
||||
isFinish.value = false;
|
||||
isLoading.value = false;
|
||||
queryParams.pageNo = 1;
|
||||
dataList.value = [];
|
||||
await getListData();
|
||||
});
|
||||
|
||||
const handleDetail = async (item) => {
|
||||
var isoverBefore = await isOverBeforeProcedure(item.id);
|
||||
if (isoverBefore == true) {
|
||||
uni.showToast({
|
||||
title: noticeMsg.value,
|
||||
icon: 'none',
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
})
|
||||
return
|
||||
}
|
||||
const url = `/pages/productionReport/productionReport-detail?id=${item.id}`
|
||||
uni.navigateTo({ url })
|
||||
});
|
||||
return;
|
||||
}
|
||||
const url = `/pages/productionReport/productionReport-detail?id=${item.id}`;
|
||||
uni.navigateTo({ url });
|
||||
};
|
||||
|
||||
// 自定义下拉刷新被触发
|
||||
const onRefresherrefresh = async () => {
|
||||
// 开始动画
|
||||
isTriggered.value = true
|
||||
isTriggered.value = true;
|
||||
// 重置数据
|
||||
queryParams.pageNo = 1
|
||||
dataList.value = []
|
||||
isFinish.value = false
|
||||
queryParams.pageNo = 1;
|
||||
dataList.value = [];
|
||||
isFinish.value = false;
|
||||
// 加载数据
|
||||
await getListData()
|
||||
await getListData();
|
||||
// 关闭动画
|
||||
isTriggered.value = false
|
||||
}
|
||||
const searchVal = ref('')
|
||||
isTriggered.value = false;
|
||||
};
|
||||
const searchVal = ref("");
|
||||
// const dataListDefault = ref([])
|
||||
const handleSearch = async (e) => {
|
||||
|
||||
queryParams.subOrDetailName = e.inputValue;
|
||||
queryParams.pageNo = 1;
|
||||
isFinish.value = false;
|
||||
dataList.value = []
|
||||
await getListData()
|
||||
dataList.value = [];
|
||||
await getListData();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
const handleScan = () => {
|
||||
uni.scanCode({
|
||||
success: (res) => {
|
||||
searchVal.value = res.result
|
||||
handleSearch({ inputValue: res.result })
|
||||
},
|
||||
fail: () => {
|
||||
uni.showToast({ title: '扫码失败', icon: 'none' })
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<view class="cont">
|
||||
<view class="search" v-if="props.orderState == '0,1' ">
|
||||
<!-- <view class="search" v-if="props.orderState == '0,1' ">
|
||||
<spring-search-box :showScan="true" :showReset="true" bgColor="#E2F3FF" @input="(e) => handleSearch(e)" placeholderColor="#28A0F8" searchColor="#28A0F8" v-model="searchVal" :mode="3" @change="(e) => handleSearch(e)" placeholder="请输入项目或子项目名称" clearable></spring-search-box>
|
||||
|
||||
<!-- <spring-search-box :showScan="true" :showReset="true" bgColor="#E2F3FF" @input="(e) => handleSearch(e)" placeholderColor="#28A0F8" searchColor="#28A0F8" v-model="searchVal" :mode="3" @change="(e) => handleSearch(e)" placeholder="请输入项目或子项目名称"></spring-search-box -->
|
||||
<!-- <input class="uni-input" v-model="searchVal" placeholder="请输入项目或子项目名称" />
|
||||
<button><uni-icons type="search" size="30" class="icons" @click="handleSearch"></uni-icons></button> -->
|
||||
</view> -->
|
||||
<view class="search" v-if="props.orderState == '0,1'">
|
||||
<view
|
||||
style="
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: #e2f3ff;
|
||||
border-radius: 20rpx;
|
||||
padding: 0 8rpx;
|
||||
height: 50px;
|
||||
"
|
||||
>
|
||||
<input
|
||||
class="uni-input"
|
||||
v-model="searchVal"
|
||||
placeholder="请输入项目或子项目名称"
|
||||
:placeholder-style="'color:#28A0F8;'"
|
||||
style="
|
||||
flex: 1;
|
||||
background: transparent;
|
||||
border: none;
|
||||
outline: none;
|
||||
font-size: 25rpx;
|
||||
color: #28a0f8;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
"
|
||||
@input="handleSearch({ inputValue: searchVal })"
|
||||
clearable
|
||||
/>
|
||||
<view
|
||||
style="
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0 10rpx;
|
||||
height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
"
|
||||
@click="handleScan"
|
||||
>
|
||||
<uni-icons type="scan" size="28" color="#28A0F8"></uni-icons>
|
||||
</view>
|
||||
<scroll-view enable-back-to-top scroll-y class="data-list" refresher-enabled :refresher-triggered="isTriggered"
|
||||
@refresherrefresh="onRefresherrefresh" @scrolltolower="getListData">
|
||||
<view class="item" v-for="item in dataList" :key="item.id" @click="handleDetail(item)">
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view
|
||||
enable-back-to-top
|
||||
scroll-y
|
||||
class="data-list"
|
||||
refresher-enabled
|
||||
:refresher-triggered="isTriggered"
|
||||
@refresherrefresh="onRefresherrefresh"
|
||||
@scrolltolower="getListData"
|
||||
>
|
||||
<view
|
||||
class="item"
|
||||
v-for="item in dataList"
|
||||
:key="item.id"
|
||||
@click="handleDetail(item)"
|
||||
>
|
||||
<view class="hd">
|
||||
<view class="num">派工单:</view>
|
||||
<view class="statusLabel">{{ '(单号:'+ item.dispatchCode+') '}}</view>
|
||||
<view class="num">{{ '下工序:'+ (item.nextProcedureName == null ? '无':item.nextProcedureName)}}</view>
|
||||
<view class="statusLabel">{{
|
||||
"(单号:" + item.dispatchCode + ") "
|
||||
}}</view>
|
||||
<view class="num">{{
|
||||
"下工序:" +
|
||||
(item.nextProcedureName == null ? "无" : item.nextProcedureName)
|
||||
}}</view>
|
||||
<!-- <view class="statusLabel " ></view> -->
|
||||
</view>
|
||||
<view class="md">
|
||||
<view class="product-item">项目名称:{{ item.projectCode + ' ' + item.projectName }}</view>
|
||||
<view class="product-item">子项目:{{ item.projectSubCode || '' }} {{' ' + item.projectSubName }}</view>
|
||||
<view class="product-item"
|
||||
>项目名称:{{ item.projectCode + " " + item.projectName }}</view
|
||||
>
|
||||
<view class="product-item"
|
||||
>子项目:{{ item.projectSubCode || "" }}
|
||||
{{ " " + item.projectSubName }}</view
|
||||
>
|
||||
<view class="product-row">
|
||||
<view class="row-item">
|
||||
<view class="label">零件名称: {{ item.materialName }}</view>
|
||||
@ -187,13 +269,24 @@
|
||||
<view class="val high-color">{{ item.totalWorkTime }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="product-item" :style=" (item.endTime < todayStr)&&props.orderState != '2' ? 'color:red':null">预计生产日期:{{ item.startTime }} ~ {{ item.endTime }}</view>
|
||||
<view
|
||||
class="product-item"
|
||||
:style="
|
||||
item.endTime < todayStr && props.orderState != '2'
|
||||
? 'color:red'
|
||||
: null
|
||||
"
|
||||
>预计生产日期:{{ item.startTime }} ~ {{ item.endTime }}</view
|
||||
>
|
||||
</view>
|
||||
<view class="statusText">{{ statusText }}</view>
|
||||
</view>
|
||||
<!-- 底部提示文字 -->
|
||||
<view class="loading-text" :style="{ paddingBottom: safeAreaInsets?.bottom + 'px' }">
|
||||
{{ isFinish ? '没有更多数据~' : '正在加载...' }}
|
||||
<view
|
||||
class="loading-text"
|
||||
:style="{ paddingBottom: safeAreaInsets?.bottom + 'px' }"
|
||||
>
|
||||
{{ isFinish ? "没有更多数据~" : "正在加载..." }}
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
@ -224,7 +317,6 @@
|
||||
}
|
||||
|
||||
.data-list {
|
||||
|
||||
height: 90vh;
|
||||
|
||||
.item {
|
||||
@ -241,7 +333,7 @@
|
||||
|
||||
.statusLabel {
|
||||
font-size: 24rpx;
|
||||
color: #737D88;
|
||||
color: #737d88;
|
||||
}
|
||||
}
|
||||
|
||||
@ -250,13 +342,13 @@
|
||||
padding: 10rpx;
|
||||
min-height: 100rpx;
|
||||
font-size: 28rpx;
|
||||
border-top: 2rpx solid #F2F2F2;
|
||||
border-top: 2rpx solid #f2f2f2;
|
||||
|
||||
.product-item {
|
||||
margin: 20rpx 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #737D88
|
||||
color: #737d88;
|
||||
}
|
||||
|
||||
.product-row {
|
||||
@ -264,7 +356,7 @@
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
color: #737D88;
|
||||
color: #737d88;
|
||||
|
||||
.row-item {
|
||||
flex: 1;
|
||||
@ -274,14 +366,13 @@
|
||||
}
|
||||
|
||||
.val {
|
||||
color: #1D2129;
|
||||
color: #1d2129;
|
||||
|
||||
&.high-color {
|
||||
color: #00B42A
|
||||
color: #00b42a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -294,7 +385,7 @@
|
||||
padding: 10rpx 30rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
background: linear-gradient(149deg, #2DACE6 4%, #356899 98%);
|
||||
background: linear-gradient(149deg, #2dace6 4%, #356899 98%);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@ -438,14 +529,14 @@
|
||||
}
|
||||
|
||||
.secondary {
|
||||
color: #3775F6;
|
||||
border-color: #3775F6;
|
||||
color: #3775f6;
|
||||
border-color: #3775f6;
|
||||
}
|
||||
|
||||
.primary {
|
||||
color: #fff;
|
||||
background-color: #3775F6;
|
||||
border-color: #3775F6;
|
||||
background-color: #3775f6;
|
||||
border-color: #3775f6;
|
||||
}
|
||||
}
|
||||
|
||||
@ -456,4 +547,5 @@
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
</style>import type { stringify } from 'querystring';
|
||||
|
Loading…
Reference in New Issue
Block a user