Merge branch 'main' of http://120.48.141.82:3000/licq/heli-mes
This commit is contained in:
commit
a39a6a1c64
@ -103,6 +103,9 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_NOT_EXISTS = new ErrorCode(1_008_008, "采购单明细不存在");
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_NOT_EXISTS = new ErrorCode(1_008_008, "采购单明细不存在");
|
||||||
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!");
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!");
|
||||||
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!");
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!");
|
||||||
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_011, "物料数据不能为空,请选择物料后重试!");
|
||||||
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS = new ErrorCode(1_008_012, "BOM明细ID不能为空!");
|
||||||
|
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS = new ErrorCode(1_008_013, "子项目ID不能为空!");
|
||||||
/************生产管理***********/
|
/************生产管理***********/
|
||||||
ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在");
|
ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在");
|
||||||
ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在");
|
ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在");
|
||||||
|
@ -124,9 +124,8 @@ public class MaterialController {
|
|||||||
}
|
}
|
||||||
@GetMapping({"/getbzjList"})
|
@GetMapping({"/getbzjList"})
|
||||||
@Operation(summary = "TODO:获取物料标准件信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项")
|
@Operation(summary = "TODO:获取物料标准件信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项")
|
||||||
public CommonResult<List<Map<String, Object>> > getbzjList() {
|
public CommonResult<PageResult<MaterialRespVO> > getbzjList(@Valid MaterialPageReqVO pageReqVO) {
|
||||||
List<Map<String, Object>> list = materialService.getbzjList();
|
PageResult<MaterialDO> pageResult = materialService.getbzjList(pageReqVO);
|
||||||
// 拼接数据
|
return success(BeanUtils.toBean(pageResult, MaterialRespVO.class));
|
||||||
return success(list);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,4 +199,18 @@ public class MaterialPlanController {
|
|||||||
public CommonResult<Boolean> delMaterial(@RequestParam("id") Long id) {
|
public CommonResult<Boolean> delMaterial(@RequestParam("id") Long id) {
|
||||||
return materialPlanService.delMaterial(id);
|
return materialPlanService.delMaterial(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @PostMapping("/getPartPurchasePages")
|
||||||
|
// @Operation(summary = "获得零件采购分页")
|
||||||
|
// public CommonResult<PageResult<MaterialPlanBoomDO>> getPartPurchasePages(@Valid @RequestBody MaterialPlanPageReqVO pageReqVO) {
|
||||||
|
// PageResult<MaterialPlanBoomDO> pageResult = materialPlanService.getPartPurchasePages(pageReqVO);
|
||||||
|
// return success(pageResult);
|
||||||
|
// }
|
||||||
|
|
||||||
|
@GetMapping("/getPartPurchasePages")
|
||||||
|
@Operation(summary = "获得零件采购分页")
|
||||||
|
public CommonResult<PageResult<MaterialPlanBoomDO>> getPartPurchasePages() {
|
||||||
|
String a ="asdij";
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,5 +69,11 @@ public class MaterialPlanPageReqVO extends PageParam {
|
|||||||
@Schema(description = "制单日期")
|
@Schema(description = "制单日期")
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime[] matPlanDate;
|
private LocalDateTime[] matPlanDate;
|
||||||
|
@Schema(description = "物料名称")
|
||||||
|
private String matName;
|
||||||
|
@Schema(description = "零件采购需求状态(0-待送审 1 -已送审 2-已批准 3-已打回)")
|
||||||
|
private Integer mplanStatus;
|
||||||
|
@Schema(description = "责任人")
|
||||||
|
private String duEmpName;
|
||||||
|
|
||||||
}
|
}
|
@ -21,12 +21,13 @@ public class MaterialPlanBoomSaveReqVO {
|
|||||||
@NotNull(message = "物料需求计划id不能为空")
|
@NotNull(message = "物料需求计划id不能为空")
|
||||||
private Long projectMaterialPlanId;
|
private Long projectMaterialPlanId;
|
||||||
|
|
||||||
@Schema(description = "工艺boom明细id,零件类型:加工件", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "工艺boom明细id,零件类型:加工件")
|
||||||
@NotNull(message = "工艺boom明细id,零件类型:加工件不能为空")
|
// @NotNull(message = "工艺boom明细id,零件类型:加工件不能为空")
|
||||||
private Long boomDetailId;
|
private Long boomDetailId;
|
||||||
|
|
||||||
@Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED)
|
// @Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "订单子项目id不能为空")
|
// @NotNull(message = "订单子项目id不能为空")
|
||||||
|
@Schema(description = "订单子项目id")
|
||||||
private Long projectPlanSubId;
|
private Long projectPlanSubId;
|
||||||
|
|
||||||
@Schema(description = "需求数量")
|
@Schema(description = "需求数量")
|
||||||
|
@ -90,6 +90,8 @@ public class MaterialDO extends TenantBaseDO {
|
|||||||
* 材质id
|
* 材质id
|
||||||
*/
|
*/
|
||||||
private Long compositionId;
|
private Long compositionId;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String compositionName;
|
||||||
/**
|
/**
|
||||||
* 销项税率或进项税率 (%)
|
* 销项税率或进项税率 (%)
|
||||||
*/
|
*/
|
||||||
|
@ -161,4 +161,15 @@ public class MaterialPlanBoomDO extends BaseDO {
|
|||||||
private String customerBriefName;
|
private String customerBriefName;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String boomArriveDates;
|
private String boomArriveDates;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 责任人姓名
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String duEmpName;
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,7 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 物料id
|
* 物料id
|
||||||
*/
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
private Long materialId;
|
private Long materialId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -136,6 +136,8 @@ public class PurchaseOrderNoDO extends BaseDO {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String username;
|
private String username;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
|
private String auditorName;
|
||||||
|
@TableField(exist = false)
|
||||||
private String userMobile;
|
private String userMobile;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String contactName;
|
private String contactName;
|
||||||
@ -150,6 +152,10 @@ public class PurchaseOrderNoDO extends BaseDO {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private Integer receivingStatus1;
|
private Integer receivingStatus1;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
|
private BigDecimal estimatedPriceSum;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private BigDecimal purchaseAmountSum;
|
||||||
|
@TableField(exist = false)
|
||||||
private List<PurchaseOrderNoDetailDO> PurchaseOrderNoDetailList;
|
private List<PurchaseOrderNoDetailDO> PurchaseOrderNoDetailList;
|
||||||
/**
|
/**
|
||||||
* 是否打印
|
* 是否打印
|
||||||
|
@ -170,6 +170,8 @@ public class PurchaseOrderNoDetailDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long procedureId;
|
private Long procedureId;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
|
private String blueprintNo;
|
||||||
|
@TableField(exist = false)
|
||||||
private Long matId;
|
private Long matId;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String matName;
|
private String matName;
|
||||||
@ -184,6 +186,8 @@ public class PurchaseOrderNoDetailDO extends BaseDO {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private BigDecimal matRest;
|
private BigDecimal matRest;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
|
private BigDecimal unitPrice;
|
||||||
|
@TableField(exist = false)
|
||||||
private BigDecimal requireAmount;
|
private BigDecimal requireAmount;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private LocalDateTime requireArriveTime;
|
private LocalDateTime requireArriveTime;
|
||||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
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.mapper.BaseMapperX;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||||
@ -31,6 +32,15 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
|||||||
query.eq(code != null, MaterialDO::getCode, code);
|
query.eq(code != null, MaterialDO::getCode, code);
|
||||||
return selectOne( query);
|
return selectOne( query);
|
||||||
}
|
}
|
||||||
|
//材质为空时查不出来数据注释
|
||||||
|
// default MaterialDO selectById(Long id) {
|
||||||
|
// MPJLambdaWrapper<MaterialDO> query = new MPJLambdaWrapper<>();
|
||||||
|
// query.selectAll(MaterialDO.class)
|
||||||
|
// .select("c.name as compositionName")
|
||||||
|
// .leftJoin(CompositionDO.class,"c",CompositionDO::getId,MaterialDO::getCompositionId);
|
||||||
|
// query.eq(MaterialDO::getId, id);
|
||||||
|
// return selectOne( query);
|
||||||
|
// }
|
||||||
|
|
||||||
default MaterialDO selectMaterial(String code) {
|
default MaterialDO selectMaterial(String code) {
|
||||||
MPJLambdaWrapper<MaterialDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<MaterialDO> query = new MPJLambdaWrapper<>();
|
||||||
@ -56,6 +66,7 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
|||||||
.orderByDesc(MaterialDO::getId);
|
.orderByDesc(MaterialDO::getId);
|
||||||
query.like(!StringUtils.isEmpty(reqVO.getName()), MaterialDO::getName, reqVO.getName())
|
query.like(!StringUtils.isEmpty(reqVO.getName()), MaterialDO::getName, reqVO.getName())
|
||||||
.like(!StringUtils.isEmpty(reqVO.getCode()), MaterialDO::getCode, reqVO.getCode())
|
.like(!StringUtils.isEmpty(reqVO.getCode()), MaterialDO::getCode, reqVO.getCode())
|
||||||
|
.like(!StringUtils.isEmpty(reqVO.getShortName()), MaterialDO::getShortName, reqVO.getShortName())
|
||||||
.eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType())
|
.eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType())
|
||||||
.eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus())
|
.eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus())
|
||||||
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
|
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
|
||||||
@ -88,8 +99,35 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
default List<Map<String, Object>> getbzjList(){
|
default PageResult<MaterialDO> getbzjList(MaterialPageReqVO reqVO){
|
||||||
return selectMaps(new QueryWrapper<MaterialDO>().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("material_type", 5));
|
MPJLambdaWrapper<MaterialDO> query = new MPJLambdaWrapper<>();
|
||||||
|
query.selectAll(MaterialDO.class)
|
||||||
|
.select("s.name as mainSupplierName")
|
||||||
|
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, MaterialDO::getMainSupplierId)
|
||||||
|
.disableSubLogicDel()
|
||||||
|
.orderByDesc(MaterialDO::getId);
|
||||||
|
query.like(!StringUtils.isEmpty(reqVO.getName()), MaterialDO::getName, reqVO.getName())
|
||||||
|
.like(!StringUtils.isEmpty(reqVO.getSpec()), MaterialDO::getSpec, reqVO.getSpec())
|
||||||
|
.like(!StringUtils.isEmpty(reqVO.getCode()), MaterialDO::getCode, reqVO.getCode())
|
||||||
|
.like(!StringUtils.isEmpty(reqVO.getShortName()), MaterialDO::getShortName, reqVO.getShortName())
|
||||||
|
.eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType())
|
||||||
|
.eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus())
|
||||||
|
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
|
||||||
|
.apply(!StringUtils.isEmpty(reqVO.getCodeAndName()), " (t.name like {0} or t.code like {0})", "%"+reqVO.getCodeAndName()+"%");
|
||||||
|
query.eq(MaterialDO::getTenantId,2);
|
||||||
|
if (!StringUtils.isEmpty(reqVO.getInventoryName())) {
|
||||||
|
query.and(qw ->
|
||||||
|
qw.like("t.name", reqVO.getInventoryName())
|
||||||
|
.or()
|
||||||
|
.like("t.code", reqVO.getInventoryName())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// if(!StringUtils.isEmpty(reqVO.getCodeAndName())){
|
||||||
|
// query.like(MaterialDO::getName, reqVO.getCodeAndName()).or().like(MaterialDO::getCode, reqVO.getCodeAndName());
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
return selectPage(reqVO, query);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,9 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
|
|
||||||
query.selectAll(MaterialPlanBoomDO.class)
|
query.selectAll(MaterialPlanBoomDO.class)
|
||||||
// .select("mat.id as matId","mat.name as matName","mat.code as matCode","mat.spec as matSpec","mat.unit as matUnit","mat.material_type as matType")
|
// .select("mat.id as matId","mat.name as matName","mat.code as matCode","mat.spec as matSpec","mat.unit as matUnit","mat.material_type as matType")
|
||||||
.select("b.material_name as matName","m.code as matCode","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo")
|
// .select("b.material_name as matName","m.code as matCode","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo")
|
||||||
|
.select("b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo")
|
||||||
|
|
||||||
.select("bc.`name` as compositionName","b.`composition_id` as compositionId")
|
.select("bc.`name` as compositionName","b.`composition_id` as compositionId")
|
||||||
.select("ma.brief as customerBriefName,ma.project_name as projectName,ma.name as projectSubName,ma.project_id as projectId")
|
.select("ma.brief as customerBriefName,ma.project_name as projectName,ma.name as projectSubName,ma.project_id as projectId")
|
||||||
.leftJoin(MaterialPlanDO.class,"ma",MaterialPlanDO::getId, MaterialPlanBoomDO::getProjectMaterialPlanId)
|
.leftJoin(MaterialPlanDO.class,"ma",MaterialPlanDO::getId, MaterialPlanBoomDO::getProjectMaterialPlanId)
|
||||||
@ -73,7 +75,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
.leftJoin(CompositionDO.class, "bc", CompositionDO::getId, ProcessBomDetailDO::getCompositionId)
|
.leftJoin(CompositionDO.class, "bc", CompositionDO::getId, ProcessBomDetailDO::getCompositionId)
|
||||||
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
|
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
|
||||||
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
||||||
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId)
|
// .leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId)
|
||||||
.eq(MaterialPlanDO::getMatType,0)
|
.eq(MaterialPlanDO::getMatType,0)
|
||||||
.in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5))
|
.in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5))
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
@ -170,13 +172,13 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
default PageResult<MaterialPlanBoomDO> getStandardPartsPages(MaterialPlanPageReqVO pageReqVO){
|
default PageResult<MaterialPlanBoomDO> getStandardPartsPages(MaterialPlanPageReqVO pageReqVO){
|
||||||
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
||||||
query.selectAll(MaterialPlanBoomDO.class)
|
query.selectAll(MaterialPlanBoomDO.class)
|
||||||
.select("p.project_name as projectName","p.project_id as projectId","p.name as projectSubName","mat.material_id as matId","m.code as materialName")
|
.select("p.project_name as projectName","p.project_id as projectId","p.name as projectSubName","mat.material_id as matId","m.code as materialName","m.code as matCode")
|
||||||
.select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as boomUnit","DATE_FORMAT(t.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates")
|
.select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as boomUnit","DATE_FORMAT(t.boom_arrive_date, '%Y-%m-%d') AS boomArriveDates")
|
||||||
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
||||||
.leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
|
.leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
|
||||||
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
|
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
|
||||||
.leftJoin("project_mat_req_detail mat on (t.id=mat.project_material_plan_detail_id and mat.deleted=0)")
|
.leftJoin("project_mat_req_detail mat on (t.id=mat.project_material_plan_detail_id and mat.deleted=0 and mat.tenant_id = 2)")
|
||||||
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,MatReqDetailDO::getMaterialId)
|
.leftJoin("base_material m ON (m.id = mat.material_id and m.tenant_id = 2) ")
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.groupBy(MaterialPlanBoomDO::getId)
|
.groupBy(MaterialPlanBoomDO::getId)
|
||||||
.orderByDesc(MaterialPlanBoomDO::getCreateTime);
|
.orderByDesc(MaterialPlanBoomDO::getCreateTime);
|
||||||
@ -190,6 +192,35 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
|||||||
return selectPage(pageReqVO, query);
|
return selectPage(pageReqVO, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
default PageResult<MaterialPlanBoomDO> getPartsPages(MaterialPlanPageReqVO pageReqVO){
|
||||||
|
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
||||||
|
query.selectAll(MaterialPlanBoomDO.class)
|
||||||
|
.select("p.project_name as projectName","p.name as projectSubName")
|
||||||
|
.select("d.blueprint_no as blueprintNo","d.unit as unit")
|
||||||
|
.select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName")
|
||||||
|
.select(MaterialPlanDO::getBrief)
|
||||||
|
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
||||||
|
.leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId)
|
||||||
|
.leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
|
||||||
|
.leftJoin(ProcedureDO.class, "c", ProcedureDO::getId, MaterialPlanBoomDO::getProcedureId)
|
||||||
|
.leftJoin(CompositionDO.class, "e", CompositionDO::getId, ProcessBomDetailDO::getCompositionId)
|
||||||
|
.disableSubLogicDel();
|
||||||
|
query
|
||||||
|
.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())
|
||||||
|
.like(!StringUtils.isEmpty(pageReqVO.getMatName()), MaterialPlanBoomDO::getMatName, pageReqVO.getMatName())
|
||||||
|
.like(!StringUtils.isEmpty(pageReqVO.getProjectCode()), ProjectOrderDO::getCode, pageReqVO.getProjectCode())
|
||||||
|
.like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName())
|
||||||
|
.eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType())
|
||||||
|
.eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus())
|
||||||
|
.eq(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus())
|
||||||
|
.eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo());
|
||||||
|
return selectPage(pageReqVO, query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// default PageResult<MaterialPlanBoomDO> selectPage(MaterialPlanBoomPageReqVO reqVO) {
|
// default PageResult<MaterialPlanBoomDO> selectPage(MaterialPlanBoomPageReqVO reqVO) {
|
||||||
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanBoomDO>()
|
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanBoomDO>()
|
||||||
// .eqIfPresent(MaterialPlanBoomDO::getId, reqVO.getId())
|
// .eqIfPresent(MaterialPlanBoomDO::getId, reqVO.getId())
|
||||||
|
@ -2,10 +2,14 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.smallbun.screw.core.util.ArrayUtils;
|
||||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||||
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||||
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*;
|
||||||
|
|
||||||
@ -43,4 +47,50 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX<PurchaseOrderMakeDO
|
|||||||
.orderByDesc(PurchaseOrderMakeDO::getId));
|
.orderByDesc(PurchaseOrderMakeDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default PageResult<PurchaseOrderMakeDO> selectJoinPage(PurchaseOrderMakePageReqVO reqVO) {
|
||||||
|
// 引入 MPJLambdaWrapper(MyBatis-Plus-Join 提供)
|
||||||
|
MPJLambdaWrapper<PurchaseOrderMakeDO> wrapper = new MPJLambdaWrapper<>();
|
||||||
|
|
||||||
|
// 构建查询条件
|
||||||
|
wrapper
|
||||||
|
.selectAll(PurchaseOrderMakeDO.class) // 查询主表所有字段
|
||||||
|
|
||||||
|
.leftJoin(PurchaseOrderMakeDetailDO.class, "a", PurchaseOrderMakeDetailDO::getPurchaseOrderId, PurchaseOrderMakeDO::getId)
|
||||||
|
.like(Objects.nonNull(reqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, reqVO.getProjectSubName())
|
||||||
|
|
||||||
|
.leftJoin(SupplierDO.class, "b", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId)
|
||||||
|
.like(Objects.nonNull(reqVO.getSupplierName()), SupplierDO::getName, reqVO.getSupplierName())
|
||||||
|
|
||||||
|
// eqIfPresent 替换为 eq 方法,并结合 Objects.nonNull 判断
|
||||||
|
.eq(Objects.nonNull(reqVO.getPurchaseNo()), PurchaseOrderMakeDO::getPurchaseNo, reqVO.getPurchaseNo())
|
||||||
|
.eq(Objects.nonNull(reqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, reqVO.getContractNo())
|
||||||
|
.eq(Objects.nonNull(reqVO.getPurchaseType()), PurchaseOrderMakeDO::getPurchaseType, reqVO.getPurchaseType())
|
||||||
|
.eq(Objects.nonNull(reqVO.getGoodsType()), PurchaseOrderMakeDO::getGoodsType, reqVO.getGoodsType())
|
||||||
|
.eq(Objects.nonNull(reqVO.getCurrencyType()), PurchaseOrderMakeDO::getCurrencyType, reqVO.getCurrencyType())
|
||||||
|
.eq(Objects.nonNull(reqVO.getTaxRatio()), PurchaseOrderMakeDO::getTaxRatio, reqVO.getTaxRatio())
|
||||||
|
.eq(Objects.nonNull(reqVO.getEstimatedPrice()), PurchaseOrderMakeDO::getEstimatedPrice, reqVO.getEstimatedPrice())
|
||||||
|
.eq(Objects.nonNull(reqVO.getActualPrice()), PurchaseOrderMakeDO::getActualPrice, reqVO.getActualPrice())
|
||||||
|
.eq(Objects.nonNull(reqVO.getStatus()), PurchaseOrderMakeDO::getStatus, reqVO.getStatus())
|
||||||
|
.eq(Objects.nonNull(reqVO.getSubmitUserId()), PurchaseOrderMakeDO::getSubmitUserId, reqVO.getSubmitUserId())
|
||||||
|
|
||||||
|
.eq(Objects.nonNull(reqVO.getAuditor()), PurchaseOrderMakeDO::getAuditor, reqVO.getAuditor())
|
||||||
|
|
||||||
|
.eq(Objects.nonNull(reqVO.getDescription()), PurchaseOrderMakeDO::getDescription, reqVO.getDescription())
|
||||||
|
|
||||||
|
.eq(Objects.nonNull(reqVO.getProjectId()), PurchaseOrderMakeDO::getProjectId, reqVO.getProjectId())
|
||||||
|
.eq(Objects.nonNull(reqVO.getProjectPlanId()), PurchaseOrderMakeDO::getProjectPlanId, reqVO.getProjectPlanId())
|
||||||
|
.eq(Objects.nonNull(reqVO.getCustomerId()), PurchaseOrderMakeDO::getCustomerId, reqVO.getCustomerId())
|
||||||
|
.eq(Objects.nonNull(reqVO.getBrief()), PurchaseOrderMakeDO::getBrief, reqVO.getBrief())
|
||||||
|
|
||||||
|
// likeIfPresent 替换为 like
|
||||||
|
.like(Objects.nonNull(reqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, reqVO.getProjectName())
|
||||||
|
|
||||||
|
.eq(Objects.nonNull(reqVO.getProjectNameSim()), PurchaseOrderMakeDO::getProjectNameSim, reqVO.getProjectNameSim())
|
||||||
|
.orderByDesc(PurchaseOrderMakeDO::getId);
|
||||||
|
|
||||||
|
// 使用 selectJoinPage 进行分页查询
|
||||||
|
return selectJoinPage(reqVO, PurchaseOrderMakeDO.class, wrapper);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -38,10 +38,9 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
|||||||
default PageResult<PurchaseOrderMakeDetailDO> selectPage(PurchaseOrderMakeDetailPageReqVO reqVO) {
|
default PageResult<PurchaseOrderMakeDetailDO> selectPage(PurchaseOrderMakeDetailPageReqVO reqVO) {
|
||||||
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
|
||||||
query.selectAll(PurchaseOrderMakeDetailDO.class)
|
query.selectAll(PurchaseOrderMakeDetailDO.class)
|
||||||
.select("b.material_name as boomName","m.code as boomCode","b.spec as boomSpec","b.unit as boomUnit")
|
.select("b.material_name as boomName","b.spec as boomSpec","b.unit as boomUnit")
|
||||||
// .select("pom.purchase_no as purchaseNo")
|
// .select("pom.purchase_no as purchaseNo")
|
||||||
.leftJoin(ProcessBomDetailDO.class,"b",ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId)
|
.leftJoin(ProcessBomDetailDO.class,"b",ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId)
|
||||||
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,PurchaseOrderMakeDetailDO::getMaterialId)
|
|
||||||
.leftJoin(ProjectOrderSubDO.class,"pos",ProjectOrderSubDO::getId,PurchaseOrderMakeDetailDO::getProjectPlanSubId)
|
.leftJoin(ProjectOrderSubDO.class,"pos",ProjectOrderSubDO::getId,PurchaseOrderMakeDetailDO::getProjectPlanSubId)
|
||||||
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId)
|
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId)
|
||||||
.leftJoin(PurchaseOrderMakeDO.class,"pom",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId)
|
.leftJoin(PurchaseOrderMakeDO.class,"pom",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId)
|
||||||
|
@ -58,7 +58,7 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX<PurchaseOrderNo
|
|||||||
MPJLambdaWrapper<PurchaseOrderNoDetailDO> query = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<PurchaseOrderNoDetailDO> query = new MPJLambdaWrapper<>();
|
||||||
|
|
||||||
query.selectAll(PurchaseOrderNoDetailDO.class)
|
query.selectAll(PurchaseOrderNoDetailDO.class)
|
||||||
.select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName")
|
.select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName","bom.blueprint_no as blueprintNo")
|
||||||
.leftJoin(PurchaseOrderNoDO.class, "pb", PurchaseOrderNoDO::getId, PurchaseOrderBoomDO::getPurchaseOrderId)
|
.leftJoin(PurchaseOrderNoDO.class, "pb", PurchaseOrderNoDO::getId, PurchaseOrderBoomDO::getPurchaseOrderId)
|
||||||
.leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId)
|
.leftJoin(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId)
|
||||||
.leftJoin(MaterialPlanBoomDO.class,"plan", MaterialPlanBoomDO::getId, PurchaseOrderNoDetailDO::getProjectMaterialPlanBoomId)
|
.leftJoin(MaterialPlanBoomDO.class,"plan", MaterialPlanBoomDO::getId, PurchaseOrderNoDetailDO::getProjectMaterialPlanBoomId)
|
||||||
|
@ -59,5 +59,7 @@ public interface MaterialService {
|
|||||||
|
|
||||||
void importExcel(List<MaterialExcelVO> materialExcelVOList, Boolean updateSupport);
|
void importExcel(List<MaterialExcelVO> materialExcelVOList, Boolean updateSupport);
|
||||||
|
|
||||||
List<Map<String, Object>> getbzjList();
|
|
||||||
|
PageResult<MaterialDO> getbzjList(MaterialPageReqVO pageReqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -205,8 +205,9 @@ public class MaterialServiceImpl implements MaterialService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> getbzjList() {
|
public PageResult<MaterialDO> getbzjList(MaterialPageReqVO pageReqVO) {
|
||||||
return materialMapper.getbzjList(); }
|
return materialMapper.getbzjList( pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
private void checkData(List<MaterialExcelVO> materialExcelVOList) {
|
private void checkData(List<MaterialExcelVO> materialExcelVOList) {
|
||||||
// 基础校验
|
// 基础校验
|
||||||
|
@ -80,4 +80,6 @@ public interface MaterialPlanService {
|
|||||||
Boolean supplement(List<StorageLogNowDO> list);
|
Boolean supplement(List<StorageLogNowDO> list);
|
||||||
|
|
||||||
CommonResult<Boolean> delMaterial(Long id);
|
CommonResult<Boolean> delMaterial(Long id);
|
||||||
|
|
||||||
|
PageResult<MaterialPlanBoomDO> getPartPurchasePages(MaterialPlanPageReqVO pageReqVO);
|
||||||
}
|
}
|
||||||
|
@ -422,7 +422,12 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
|
|||||||
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, id);
|
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, id);
|
||||||
materialPlanBoomMapper.delete(queryWrapper);
|
materialPlanBoomMapper.delete(queryWrapper);
|
||||||
materialPlanMapper.deleteById(id);
|
materialPlanMapper.deleteById(id);
|
||||||
return null;
|
return CommonResult.success( true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<MaterialPlanBoomDO> getPartPurchasePages(MaterialPlanPageReqVO pageReqVO) {
|
||||||
|
return materialPlanBoomMapper.getPartsPages(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -114,6 +114,12 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
|
|||||||
HashMap<Long, PlanSubDO> planSubMap = new HashMap<>();
|
HashMap<Long, PlanSubDO> planSubMap = new HashMap<>();
|
||||||
for (MaterialPlanBoomDO dp : materialPlanBoomDOList) {
|
for (MaterialPlanBoomDO dp : materialPlanBoomDOList) {
|
||||||
PurchaseOrderMakeDetailDO makeDetailDO = new PurchaseOrderMakeDetailDO();
|
PurchaseOrderMakeDetailDO makeDetailDO = new PurchaseOrderMakeDetailDO();
|
||||||
|
if (dp.getBoomDetailId() == null){
|
||||||
|
throw exception(PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS);
|
||||||
|
}
|
||||||
|
if(dp.getProjectPlanSubId() == null){
|
||||||
|
throw exception(PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS);
|
||||||
|
}
|
||||||
makeDetailDO.setBoomDetailId(dp.getBoomDetailId());
|
makeDetailDO.setBoomDetailId(dp.getBoomDetailId());
|
||||||
makeDetailDO.setBoomName(dp.getMatName());
|
makeDetailDO.setBoomName(dp.getMatName());
|
||||||
makeDetailDO.setBoomSpec(dp.getMatSpec());
|
makeDetailDO.setBoomSpec(dp.getMatSpec());
|
||||||
@ -178,7 +184,8 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
|
|||||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
|
||||||
// 入库前缀
|
// 入库前缀
|
||||||
purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
|
String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString());
|
||||||
|
purchaseOrderMakeDO.setPurchaseNo(code);
|
||||||
purchaseOrderMakeDO.setGoodsType(1);
|
purchaseOrderMakeDO.setGoodsType(1);
|
||||||
purchaseOrderMakeDO.setStatus(1);
|
purchaseOrderMakeDO.setStatus(1);
|
||||||
purchaseOrderMakeDO.setSubmitUserId(loginUserId);
|
purchaseOrderMakeDO.setSubmitUserId(loginUserId);
|
||||||
@ -206,7 +213,7 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
|
|||||||
dp.setMplanStatus(1);
|
dp.setMplanStatus(1);
|
||||||
dp.setProjectPurchaseOrderMakeId(purchaseOrderMakeDO.getId());
|
dp.setProjectPurchaseOrderMakeId(purchaseOrderMakeDO.getId());
|
||||||
dp.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailDO.getId());
|
dp.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailDO.getId());
|
||||||
dp.setPurchaseNo(purchaseOrderMakeDO.getPurchaseNo());
|
dp.setPurchaseNo(code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
|
|
||||||
List<PurchaseOrderMakeDetailDO> list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId());
|
List<PurchaseOrderMakeDetailDO> list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId());
|
||||||
list.forEach(detailDO -> {
|
list.forEach(detailDO -> {
|
||||||
purchaseOrderNoDetailMapper.deleteById(detailDO.getId());
|
purchaseOrderNoDetailMapper.deleteById(detailDO);
|
||||||
});
|
});
|
||||||
|
|
||||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
||||||
|
@ -402,8 +402,13 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
List<ProcessBomDetailDO> processBomDetails = updateReqVO.getProcessBomDetails();
|
List<ProcessBomDetailDO> processBomDetails = updateReqVO.getProcessBomDetails();
|
||||||
//不论怎么样,都要校验这次的数据它图号是否唯一、非标准件的名称是否重复,规格是否为空
|
//不论怎么样,都要校验这次的数据它图号是否唯一、非标准件的名称是否重复,规格是否为空
|
||||||
if (CollUtil.isNotEmpty(processBomDetails)){
|
if (CollUtil.isNotEmpty(processBomDetails)){
|
||||||
|
for (ProcessBomDetailDO processBomDetail : processBomDetails) {
|
||||||
|
if (processBomDetail.getId() == null){
|
||||||
|
processBomDetail.setDeleted(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
//校验这次的数据它图号是否唯一
|
//校验这次的数据它图号是否唯一
|
||||||
Map<String, List<ProcessBomDetailDO>> groupedByBluePrintfNo = processBomDetails.stream().collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo()));
|
Map<String, List<ProcessBomDetailDO>> groupedByBluePrintfNo = processBomDetails.stream().filter(e -> e.getDeleted() == false).collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo()));
|
||||||
groupedByBluePrintfNo.forEach((printNo,list)->{
|
groupedByBluePrintfNo.forEach((printNo,list)->{
|
||||||
if (printNo.equals("NULL")){
|
if (printNo.equals("NULL")){
|
||||||
throw exception(PROCESS_BOM_DETAIL_BLUE_PRINT_NO_NOT_EXISTS);
|
throw exception(PROCESS_BOM_DETAIL_BLUE_PRINT_NO_NOT_EXISTS);
|
||||||
@ -439,6 +444,14 @@ public class ProcessBomServiceImpl implements ProcessBomService {
|
|||||||
// processBomDetail.setMaterialCode("");
|
// processBomDetail.setMaterialCode("");
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
}else {
|
||||||
|
if(operateTypeEnum == OperateTypeEnum.SUBMIT){
|
||||||
|
if (processBomDetail.getSpec() == null){
|
||||||
|
throw exception(new ErrorCode(1_006_9998,processBomDetail.getMaterialName()+"规格型号不能为空,请确认!"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO) {
|
public PageResult<PurchaseOrderMakeDO> getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO) {
|
||||||
return purchaseOrderMakeMapper.selectPage(pageReqVO);
|
return purchaseOrderMakeMapper.selectJoinPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,11 +1,15 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail;
|
package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import 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.purchaseorder.PurchaseOrderDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.composition.CompositionMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
|
||||||
@ -53,7 +57,10 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper;
|
private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private PurchaseOrderMakeMapper purchaseOrderMakeMapper;
|
private PurchaseOrderMakeMapper purchaseOrderMakeMapper;
|
||||||
|
@Resource
|
||||||
|
private MaterialMapper materialMapper;
|
||||||
|
@Resource
|
||||||
|
private CompositionMapper compositionMapper;
|
||||||
@Override
|
@Override
|
||||||
public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) {
|
public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -75,7 +82,8 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
|
||||||
// 入库前缀
|
// 入库前缀
|
||||||
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()));
|
String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString());
|
||||||
|
purchaseOrderNoDO.setPurchaseNo(code);
|
||||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
purchaseOrderNoDO.setGoodsType(1);
|
purchaseOrderNoDO.setGoodsType(1);
|
||||||
purchaseOrderNoDO.setPurchaseType(1);
|
purchaseOrderNoDO.setPurchaseType(1);
|
||||||
@ -84,16 +92,39 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
purchaseOrderNoMapper.insert(purchaseOrderNoDO);
|
||||||
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
|
List<PurchaseOrderNoDetailDO> insertList =new ArrayList<>();
|
||||||
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
|
HashMap<Long,PurchaseOrderMakeDO> insertMap = new HashMap<>();
|
||||||
|
HashMap<Long, MaterialDO> insertMaterialMap = new HashMap<>();
|
||||||
|
HashMap<Long ,CompositionDO> compositionDOHashMap = new HashMap<>();
|
||||||
for (PurchaseOrderMakeDetailDO pmd : updateList) {
|
for (PurchaseOrderMakeDetailDO pmd : updateList) {
|
||||||
|
|
||||||
PurchaseOrderNoDetailDO pd = new PurchaseOrderNoDetailDO();
|
PurchaseOrderNoDetailDO pd = new PurchaseOrderNoDetailDO();
|
||||||
pd.setMakeDetailId(pmd.getId());
|
pd.setMakeDetailId(pmd.getId());
|
||||||
pd.setPurchaseOrderId(purchaseOrderNoDO.getId());
|
pd.setPurchaseOrderId(purchaseOrderNoDO.getId());
|
||||||
pd.setBoomDetailId(pmd.getBoomDetailId());
|
pd.setBoomDetailId(pmd.getBoomDetailId());
|
||||||
pd.setBoomName(pmd.getBoomName());
|
if (pd.getMakeDetailId() != null) {
|
||||||
pd.setBoomSpec(pmd.getBoomSpec());
|
MaterialDO materialDO = insertMaterialMap.get(pmd.getMaterialId());
|
||||||
pd.setBoomUnit(pmd.getBoomUnit());
|
|
||||||
pd.setComposition(pmd.getComposition());
|
if (materialDO == null) {
|
||||||
|
materialDO = materialMapper.selectById(pmd.getMaterialId());
|
||||||
|
insertMaterialMap.put(pd.getMakeDetailId(), materialDO);
|
||||||
|
}
|
||||||
|
if (materialDO.getCompositionId() != null) {
|
||||||
|
CompositionDO compositionDO = compositionDOHashMap.get(materialDO.getCompositionId());
|
||||||
|
if (compositionDO == null) {
|
||||||
|
compositionDO = compositionMapper.selectById(materialDO.getCompositionId());
|
||||||
|
compositionDOHashMap.put(materialDO.getCompositionId(), compositionDO);
|
||||||
|
}
|
||||||
|
pd.setComposition(compositionDO == null ?"":compositionDO.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
pd.setBoomName(materialDO.getName());
|
||||||
|
pd.setMaterialId(materialDO.getId());
|
||||||
|
pd.setBoomSpec(materialDO.getSpec());
|
||||||
|
pd.setBoomUnit(materialDO.getUnit());
|
||||||
|
|
||||||
|
}else {
|
||||||
|
throw exception(PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
pd.setPurchaseAmount(pmd.getPurchaseAmount());
|
pd.setPurchaseAmount(pmd.getPurchaseAmount());
|
||||||
pd.setEstimatedPrice(pmd.getEstimatedPrice());
|
pd.setEstimatedPrice(pmd.getEstimatedPrice());
|
||||||
pd.setArriveTime(pmd.getArriveTime());
|
pd.setArriveTime(pmd.getArriveTime());
|
||||||
@ -131,6 +162,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId());
|
pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId());
|
||||||
pmd.setPurchaseOrderNoDetailId(pd.getId());
|
pmd.setPurchaseOrderNoDetailId(pd.getId());
|
||||||
pmd.setOrderStatus(2);
|
pmd.setOrderStatus(2);
|
||||||
|
pmd.setPurchaseNo(code);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,12 +175,12 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
|||||||
validatePurchaseOrderMakeDetailExists(updateReqVO.getId());
|
validatePurchaseOrderMakeDetailExists(updateReqVO.getId());
|
||||||
// 更新
|
// 更新
|
||||||
PurchaseOrderMakeDetailDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDetailDO.class);
|
PurchaseOrderMakeDetailDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDetailDO.class);
|
||||||
if (updateObj.getMaterialId() == null){
|
// if (updateObj.getMaterialId() == null){
|
||||||
purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId());
|
// purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId());
|
||||||
|
// purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||||
|
// }else {
|
||||||
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||||
}else {
|
// }
|
||||||
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@ import javax.annotation.Resource;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -315,6 +317,49 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
|
|||||||
purchaseOrderNoDO.setDeliveryAddress("浙江省杭州市余杭区良渚街道刘林圩路5号");
|
purchaseOrderNoDO.setDeliveryAddress("浙江省杭州市余杭区良渚街道刘林圩路5号");
|
||||||
purchaseOrderNoDO.setBuyer("杭州合立机械有限公司");
|
purchaseOrderNoDO.setBuyer("杭州合立机械有限公司");
|
||||||
List<PurchaseOrderNoDetailDO> detailList = purchaseOrderNoDetailMapper.getPurchaseOrderNoDetailById(id);
|
List<PurchaseOrderNoDetailDO> detailList = purchaseOrderNoDetailMapper.getPurchaseOrderNoDetailById(id);
|
||||||
|
// if ("1".equals(purchaseOrderNoDO.getGoodsType())){
|
||||||
|
if (detailList != null && !detailList.isEmpty()) {
|
||||||
|
detailList.forEach(detail -> {
|
||||||
|
// 跳过对象本身为null的情况
|
||||||
|
if (detail == null) return;
|
||||||
|
|
||||||
|
BigDecimal estimatedPrice = detail.getEstimatedPrice();
|
||||||
|
BigDecimal purchaseAmount = detail.getPurchaseAmount();
|
||||||
|
|
||||||
|
if (estimatedPrice != null &&
|
||||||
|
purchaseAmount != null &&
|
||||||
|
purchaseAmount.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
|
|
||||||
|
// 计算并保留1位小数
|
||||||
|
BigDecimal result = estimatedPrice
|
||||||
|
.divide(purchaseAmount, 1, RoundingMode.HALF_UP);
|
||||||
|
|
||||||
|
detail.setUnitPrice(result);
|
||||||
|
} else {
|
||||||
|
// 设置默认值(根据业务需求选择)
|
||||||
|
detail.setUnitPrice(BigDecimal.ZERO);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 计算 purchaseAmount 的总和
|
||||||
|
BigDecimal purchaseAmountSum = detailList.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(PurchaseOrderNoDetailDO::getPurchaseAmount)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
// 计算 estimatedPrice 的总和
|
||||||
|
BigDecimal estimatedPriceSum = detailList.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(PurchaseOrderNoDetailDO::getEstimatedPrice)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
purchaseOrderNoDO.setPurchaseAmountSum(purchaseAmountSum);
|
||||||
|
purchaseOrderNoDO.setEstimatedPriceSum(estimatedPriceSum);
|
||||||
|
}
|
||||||
|
AdminUserDO users = adminUserService.getUser(purchaseOrderNoDO.getAuditor());
|
||||||
|
if (ObjectUtil.isNotEmpty(users)){
|
||||||
|
purchaseOrderNoDO.setAuditorName(users.getNickname());
|
||||||
|
}
|
||||||
|
// }
|
||||||
purchaseOrderNoDO.setPurchaseOrderNoDetailList(detailList);
|
purchaseOrderNoDO.setPurchaseOrderNoDetailList(detailList);
|
||||||
}
|
}
|
||||||
return CommonResult.success(purchaseOrderNoDO);
|
return CommonResult.success(purchaseOrderNoDO);
|
||||||
@ -339,6 +384,7 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
|
|||||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoId, null);
|
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoId, null);
|
||||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoDetailId,null);
|
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoDetailId,null);
|
||||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getOrderStatus,1);
|
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getOrderStatus,1);
|
||||||
|
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseNo,null);
|
||||||
purchaseOrderMakeDetailMapper.update(lambdaUpdateWrapper);
|
purchaseOrderMakeDetailMapper.update(lambdaUpdateWrapper);
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
for (StorageInDetailDO storageInDetailDO : storageInDetailDOS) {
|
for (StorageInDetailDO storageInDetailDO : storageInDetailDOS) {
|
||||||
LambdaQueryWrapper<PurchaseOrderNoDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<PurchaseOrderNoDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageId,storageInDetailDO.getStorageNoId());
|
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageId,storageInDetailDO.getStorageNoId());
|
||||||
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageMatId,storageInDetailDO.getMaterialId());
|
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageMatId,storageInDetailDO.getId());
|
||||||
PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectOne(wrapper1);
|
PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectOne(wrapper1);
|
||||||
if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){
|
if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){
|
||||||
LambdaUpdateWrapper<PurchaseOrderNoDetailDO> updateWrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<PurchaseOrderNoDetailDO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
|
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.generator.IFill;
|
import com.baomidou.mybatisplus.generator.IFill;
|
||||||
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
|
import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
|
||||||
|
import com.chanko.yunxi.mes.framework.common.exception.ServiceException;
|
||||||
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
|
||||||
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
||||||
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
|
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.ProcessBoomRespVO;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.ygjx.vo.YgjxPageReqVO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.bdgzsomthing.bdgzsomthingDO;
|
||||||
@ -17,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.equipmanufacture.EquipMan
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.fpuserdetail.FpUserDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.fpuserdetail.FpUserDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
|
||||||
@ -28,6 +32,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.equipmanufacture.EquipManufact
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.fpuserdetail.FpUserDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.fpuserdetail.FpUserDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.procedure.ProcedureMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.procedure.ProcedureMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper;
|
||||||
@ -101,6 +106,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
|||||||
private bdgzsomthingMapper bdgzsomthingMapper;
|
private bdgzsomthingMapper bdgzsomthingMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ProcedureMapper procedureMapper;
|
private ProcedureMapper procedureMapper;
|
||||||
|
@Resource
|
||||||
|
private ProcessBomDetailMapper processBomDetailMapper;
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createTaskDispatch(TaskDispatchSaveReqVO createReqVO) {
|
public Long createTaskDispatch(TaskDispatchSaveReqVO createReqVO) {
|
||||||
@ -141,6 +148,27 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
|||||||
if(!updateObj.canOperate(operateTypeEnum)){
|
if(!updateObj.canOperate(operateTypeEnum)){
|
||||||
throw exception(INVALID_OPERATE);
|
throw exception(INVALID_OPERATE);
|
||||||
}
|
}
|
||||||
|
if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("PRODUCTION")){
|
||||||
|
List<Long> idList = updateReqVO.getTaskDispatchDetails().stream()
|
||||||
|
.filter(o -> o.getId() != null)
|
||||||
|
.map(TaskDispatchDetailDO::getId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.in(TaskDispatchDetailDO::getId, idList);
|
||||||
|
wrapper.eq(TaskDispatchDetailDO::getDeleted, 0);
|
||||||
|
List<TaskDispatchDetailDO> detailDOS = taskDispatchDetailMapper.selectList(wrapper);
|
||||||
|
for (TaskDispatchDetailDO dispatchDetailDO : detailDOS) {
|
||||||
|
if (dispatchDetailDO.getPlanStatus()==1){
|
||||||
|
TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(dispatchDetailDO.getDispatchId());
|
||||||
|
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId());
|
||||||
|
ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId());
|
||||||
|
if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){
|
||||||
|
throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 明细工序状态更新
|
// 明细工序状态更新
|
||||||
if(operateTypeEnum == OperateTypeEnum.SUBMIT){
|
if(operateTypeEnum == OperateTypeEnum.SUBMIT){
|
||||||
if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("ASSEMBLE")){
|
if (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("ASSEMBLE")){
|
||||||
@ -437,10 +465,20 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteTaskDispatchDetail(Long id) {
|
public void deleteTaskDispatchDetail(Long id) {
|
||||||
|
TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(id);
|
||||||
|
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)&&taskDispatchDetailDO.getPlanStatus()==1){
|
||||||
|
TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId());
|
||||||
|
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId());
|
||||||
|
ProcedureDO procedureDO = procedureMapper.selectById(taskDispatchDetailDO.getProcedureId());
|
||||||
|
if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){
|
||||||
|
throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认"));
|
||||||
|
}
|
||||||
|
}
|
||||||
taskDispatchDetailMapper.deleteByDispatchId(id);
|
taskDispatchDetailMapper.deleteByDispatchId(id);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void deleteTaskDispatchDetailOwner(Long id) {
|
public void deleteTaskDispatchDetailOwner(Long id) {
|
||||||
|
|
||||||
taskDispatchDetailMapper.deleteByOwnerId(id,null);
|
taskDispatchDetailMapper.deleteByOwnerId(id,null);
|
||||||
taskDispatchDetailOwnerMapper.deleteById(id);
|
taskDispatchDetailOwnerMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,6 @@ export const deleteMaterial = async (id: number) => {
|
|||||||
export const exportMaterial = async (params) => {
|
export const exportMaterial = async (params) => {
|
||||||
return await request.download({ url: `/heli/material/export-excel`, params })
|
return await request.download({ url: `/heli/material/export-excel`, params })
|
||||||
}
|
}
|
||||||
export const getbzjList = async () => {
|
export const getbzjList = async (params) => {
|
||||||
return await request.get({ url: `/heli/material/getbzjList` })
|
return await request.get({ url: `/heli/material/getbzjList`,params })
|
||||||
}
|
}
|
||||||
|
@ -94,3 +94,13 @@ export const supplement = async (data) => {
|
|||||||
export const delMaterial = async (id: number) => {
|
export const delMaterial = async (id: number) => {
|
||||||
return await request.delete({ url: `/heli/material-plan/delMaterial?id=` + id })
|
return await request.delete({ url: `/heli/material-plan/delMaterial?id=` + id })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// // 查询零件采购分页
|
||||||
|
// export const getPartPurchasePages = async (params) => {
|
||||||
|
// return await request.post({ url: `/heli/material-plan/getPartPurchasePages`, params })
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 更新采购单主驳回
|
||||||
|
export const getPartPurchasePages = async () => {
|
||||||
|
return await request.get({ url: `/heli/material-plan/getPartPurchasePage` })
|
||||||
|
}
|
||||||
|
@ -11,6 +11,7 @@ export interface MaterialPlanBoomVO {
|
|||||||
purchaseAmount:number
|
purchaseAmount:number
|
||||||
estimatedPrice:number
|
estimatedPrice:number
|
||||||
arriveTime:Date
|
arriveTime:Date
|
||||||
|
projectPurchaseOrderMakeDetailId:number
|
||||||
supplierId:number
|
supplierId:number
|
||||||
materialPlanBoomDOList:Array<MaterialPlanBoomVO>
|
materialPlanBoomDOList:Array<MaterialPlanBoomVO>
|
||||||
}
|
}
|
||||||
|
@ -292,5 +292,6 @@ export enum DICT_TYPE {
|
|||||||
HELI_MAT_REQ_STATUS='heli_mat_req_status',
|
HELI_MAT_REQ_STATUS='heli_mat_req_status',
|
||||||
HELI_MATERIAL_STATUS='heli_material_status',
|
HELI_MATERIAL_STATUS='heli_material_status',
|
||||||
HELI_DOCUMENT_STATUS='heli_document_status',
|
HELI_DOCUMENT_STATUS='heli_document_status',
|
||||||
HELI_STORAGEIN_STATUS='heli_storagein_status'
|
HELI_STORAGEIN_STATUS='heli_storagein_status',
|
||||||
|
MATERIAL_PLAN_BOOM_MPLAN_STATUS='material_plan_boom_mplan_status'
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="hl-card">
|
<el-card class="hl-card">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>标准件物料需求计划</span>
|
<span>采购订单生成</span>
|
||||||
</template>
|
</template>
|
||||||
<ContentWrap class="borderxx">
|
<ContentWrap class="borderxx">
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="采购状态" prop="orderStatus">
|
<el-form-item label="采购状态" prop="orderStatus">
|
||||||
<el-select v-model="queryParams.orderStatus" placeholder="请选择标准件状态" class="!w-240px">
|
<el-select @change="e => clearItem(e)" clearable v-model="queryParams.orderStatus" placeholder="请选择采购状态" class="!w-240px">
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -75,6 +75,7 @@
|
|||||||
:remote-method="e => remoteMethod(e,scope.row)"
|
:remote-method="e => remoteMethod(e,scope.row)"
|
||||||
remote-show-suffix
|
remote-show-suffix
|
||||||
remote
|
remote
|
||||||
|
@click="remoteMethod(scope.row.boomCode,scope.row)"
|
||||||
:disabled="scope.row.orderStatus == 2"
|
:disabled="scope.row.orderStatus == 2"
|
||||||
clearable
|
clearable
|
||||||
reserve-keyword
|
reserve-keyword
|
||||||
@ -107,6 +108,7 @@
|
|||||||
v-model="scope.row.supplierId"
|
v-model="scope.row.supplierId"
|
||||||
size="large"
|
size="large"
|
||||||
disabled
|
disabled
|
||||||
|
filterable
|
||||||
style="width: 165 px"
|
style="width: 165 px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@ -203,7 +205,9 @@ const exportLoading = ref(false) // 导出的加载中
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
multipleTable.value.clearSelection();
|
||||||
const data = await purchaseOrderMakeDetailApi.page(queryParams)
|
const data = await purchaseOrderMakeDetailApi.page(queryParams)
|
||||||
|
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
for (const row of list.value ) {
|
for (const row of list.value ) {
|
||||||
// 如果boomCode不为空,则调用remoteMethod进行查询
|
// 如果boomCode不为空,则调用remoteMethod进行查询
|
||||||
@ -262,7 +266,9 @@ const getMateriallist = async(row) =>{
|
|||||||
const handleSelectionChange = (selection) => {
|
const handleSelectionChange = (selection) => {
|
||||||
ids.value = selection;
|
ids.value = selection;
|
||||||
}
|
}
|
||||||
|
const clearItem = (e) =>{
|
||||||
|
multipleTable.value.clearSelection();
|
||||||
|
}
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
const handleExportDetail = async () => {
|
const handleExportDetail = async () => {
|
||||||
try {
|
try {
|
||||||
@ -295,7 +301,7 @@ const changeSupp = async(e,row) => {
|
|||||||
// row.boomName = e.materialName;
|
// row.boomName = e.materialName;
|
||||||
// row.boomSpec = e.spec;
|
// row.boomSpec = e.spec;
|
||||||
// row.boomUnit = e.unit
|
// row.boomUnit = e.unit
|
||||||
await updateRows(row)
|
// await updateRows(row)
|
||||||
}else{
|
}else{
|
||||||
row.materialId = null;
|
row.materialId = null;
|
||||||
await updateRows(row)
|
await updateRows(row)
|
||||||
@ -316,11 +322,12 @@ const serachLog = (row) => {
|
|||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
getList()
|
getList()
|
||||||
|
|
||||||
}
|
}
|
||||||
const opearteForm = async(type) =>{
|
const opearteForm = async(type) =>{
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
if(type == 1){
|
if(type == 1){
|
||||||
router.push({ path: '/purchase/PurchaseOrder', query: { flush: 1 } })
|
router.push({ path: '/purchase/purchaseordernomanagement', query: { flush: 1 } })
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(ids.value != null && ids.value.length > 0){
|
if(ids.value != null && ids.value.length > 0){
|
||||||
@ -472,8 +479,8 @@ const handleExport = async () => {
|
|||||||
await message.exportConfirm()
|
await message.exportConfirm()
|
||||||
// 发起导出
|
// 发起导出
|
||||||
exportLoading.value = true
|
exportLoading.value = true
|
||||||
const data = await ProcessBomApi.exportProcessBom(queryParams)
|
// const data = await ProcessBomApi.exportProcessBom(queryParams)
|
||||||
download.excel(data, '工艺bom.xls')
|
// download.excel(data, '工艺bom.xls')
|
||||||
} catch {
|
} catch {
|
||||||
} finally {
|
} finally {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="采购状态" prop="mplanStatus">
|
<el-form-item label="采购状态" prop="mplanStatus">
|
||||||
<el-select v-model="queryParams.mplanStatus" placeholder="请选择标准件状态" class="!w-240px">
|
<el-select @change="e => clearItem(e)" v-model="queryParams.mplanStatus" placeholder="请选择标准件状态" class="!w-240px">
|
||||||
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STANDARD_BUY_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STANDARD_BUY_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -91,12 +91,6 @@
|
|||||||
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" />
|
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="purchaseAmount" min-width="180" >
|
|
||||||
<template #header><span class="hl-table_header">*</span>采购数量</template>
|
|
||||||
<template #default="scope">
|
|
||||||
<el-input-number @blur="updateRow(1,scope.row)" v-model="scope.row.purchaseAmount" :precision="2" :step="0.01" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="物料编码" align="center" prop="matCode" min-width="180" >
|
<el-table-column label="物料编码" align="center" prop="matCode" min-width="180" >
|
||||||
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -115,6 +109,7 @@
|
|||||||
v-model="scope.row.supplierId"
|
v-model="scope.row.supplierId"
|
||||||
size="large"
|
size="large"
|
||||||
clearable
|
clearable
|
||||||
|
filterable
|
||||||
@change="e => changeSupp(e,scope.row)"
|
@change="e => changeSupp(e,scope.row)"
|
||||||
style="width: 165 px"
|
style="width: 165 px"
|
||||||
>
|
>
|
||||||
@ -127,6 +122,12 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="purchaseAmount" min-width="180" >
|
||||||
|
<template #header><span class="hl-table_header">*</span>采购数量</template>
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input-number :disabled="scope.row.stat" @blur="updateRow(1,scope.row)" v-model="scope.row.purchaseAmount" :precision="2" :step="0.01" />
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="estimatedPrice" min-width="180" >
|
<el-table-column align="center" prop="estimatedPrice" min-width="180" >
|
||||||
<template #header><span class="hl-table_header">*</span>预估总价</template>
|
<template #header><span class="hl-table_header">*</span>预估总价</template>
|
||||||
@ -134,7 +135,7 @@
|
|||||||
<el-input-number @blur="updateRow(3,scope.row)" v-model="scope.row.estimatedPrice" :precision="2" :step="0.01" />
|
<el-input-number @blur="updateRow(3,scope.row)" v-model="scope.row.estimatedPrice" :precision="2" :step="0.01" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column min-width="200px" align="center" fixed="right">
|
<el-table-column min-width="200px" align="center" >
|
||||||
<template #header><span class="hl-table_header">*</span>预计到货日期</template>
|
<template #header><span class="hl-table_header">*</span>预计到货日期</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!" >
|
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!" >
|
||||||
@ -142,8 +143,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" prop="mplanStatusName" min-width="80" />
|
|
||||||
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="180" fixed="right"/>
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="180" />
|
||||||
|
<el-table-column label="状态" align="center" prop="mplanStatus" min-width="90" >
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_BOOM_STATUS" :value="scope.row.mplanStatus" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
@ -214,6 +220,7 @@ const exportLoading = ref(false) // 导出的加载中
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
multipleTable.value.clearSelection();
|
||||||
const data = await materialPlanBoomApi.getStandardBuyPage(queryParams)
|
const data = await materialPlanBoomApi.getStandardBuyPage(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
@ -230,9 +237,10 @@ const getRowKeys=(row)=>{
|
|||||||
|
|
||||||
const handleSelectionChange = (selection) => {
|
const handleSelectionChange = (selection) => {
|
||||||
ids.value = selection;
|
ids.value = selection;
|
||||||
console.log(ids.value)
|
|
||||||
}
|
}
|
||||||
|
const clearItem = (e) =>{
|
||||||
|
multipleTable.value.clearSelection();
|
||||||
|
}
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
const handleExportDetail = async () => {
|
const handleExportDetail = async () => {
|
||||||
try {
|
try {
|
||||||
@ -247,13 +255,14 @@ const handleExportDetail = async () => {
|
|||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const getMat = async (rowids,amount,ids) => {
|
const getMat = async (rowids,amount,ids,matCodes) => {
|
||||||
//formData.value.boomItemDOList = arrBoom
|
//formData.value.boomItemDOList = arrBoom
|
||||||
for(var i = 0 ; i < list.value.length ; i ++){
|
for(var i = 0 ; i < list.value.length ; i ++){
|
||||||
if(list.value[i].id == rowids){
|
if(list.value[i].id == rowids){
|
||||||
list.value[i].matRest = amount
|
list.value[i].matRest = amount
|
||||||
|
list.value[i].matCode = matCodes
|
||||||
list.value[i].materialId = ids
|
list.value[i].materialId = ids
|
||||||
await updateRow(2,list.value[i]);
|
// await updateRow(2,list.value[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -332,7 +341,7 @@ const opearteForm = async(type) =>{
|
|||||||
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
||||||
message.success("送审成功")
|
message.success("送审成功")
|
||||||
await getList()
|
await getList()
|
||||||
}catch(e){
|
}catch{
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}finally{
|
}finally{
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@ -341,14 +350,15 @@ const opearteForm = async(type) =>{
|
|||||||
|
|
||||||
}else{
|
}else{
|
||||||
//去库存
|
//去库存
|
||||||
for(var i = 0 ; i<ids.value.length ;i++){
|
// for(var i = 0 ; i<ids.value.length ;i++){
|
||||||
var row = ids.value[i];
|
// var row = ids.value[i];
|
||||||
if(!row.materialId){
|
// if(!row.materialId){
|
||||||
message.error('请先查询库存量后进行操作')
|
// message.error('请先查询库存量后进行操作')
|
||||||
loading.value = false
|
// loading.value = false
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
console.log(ids.value)
|
||||||
var form = {
|
var form = {
|
||||||
id:1,
|
id:1,
|
||||||
projectMaterialPlanId:1,
|
projectMaterialPlanId:1,
|
||||||
@ -361,7 +371,7 @@ const opearteForm = async(type) =>{
|
|||||||
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
||||||
message.success("去库存成功")
|
message.success("去库存成功")
|
||||||
await getList()
|
await getList()
|
||||||
}catch(e){
|
}catch{
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}finally{
|
}finally{
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@ -478,8 +488,8 @@ const handleExport = async () => {
|
|||||||
await message.exportConfirm()
|
await message.exportConfirm()
|
||||||
// 发起导出
|
// 发起导出
|
||||||
exportLoading.value = true
|
exportLoading.value = true
|
||||||
const data = await ProcessBomApi.exportProcessBom(queryParams)
|
// const data = await ProcessBomApi.exportProcessBom(queryParams)
|
||||||
download.excel(data, '工艺bom.xls')
|
// download.excel(data, '工艺bom.xls')
|
||||||
} catch {
|
} catch {
|
||||||
} finally {
|
} finally {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
|
@ -22,7 +22,9 @@
|
|||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true" highlight-current-row @current-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
|
<el-table
|
||||||
|
ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true"
|
||||||
|
@row-click="clickRow" @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
type="selection"
|
type="selection"
|
||||||
width="55"/>
|
width="55"/>
|
||||||
@ -114,12 +116,28 @@ const getList = async () => {
|
|||||||
}
|
}
|
||||||
const clickItem = ref([])
|
const clickItem = ref([])
|
||||||
const handleCurrentChange = (val) => {
|
const handleCurrentChange = (val) => {
|
||||||
multipleTableRef.value!.clearSelection()
|
|
||||||
|
|
||||||
clickItem.value = val;
|
clickItem.value = val;
|
||||||
|
if(val.length > 1){
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(val.pop())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
const clickRow = (row) => {
|
||||||
|
// 单选选中行
|
||||||
|
if ( clickItem.value[0] == row) {
|
||||||
|
// 取消
|
||||||
|
clickItem.value = [];
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
} else {
|
||||||
|
// 选择
|
||||||
|
clickItem.value.push(row);
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(row, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
multipleTableRef.value!.toggleRowSelection(val, undefined)
|
|
||||||
};
|
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.pageNo = 1
|
queryParams.pageNo = 1
|
||||||
@ -162,7 +180,8 @@ const emit = defineEmits(['success'])
|
|||||||
// emit('success', multipleSelection.value)
|
// emit('success', multipleSelection.value)
|
||||||
const success = () =>{
|
const success = () =>{
|
||||||
dialogVisible.value = false;
|
dialogVisible.value = false;
|
||||||
emit('success',rowid.value,clickItem.value.storageOkQty,clickItem.value.id)
|
console.log(clickItem.value)
|
||||||
|
emit('success',rowid.value,clickItem.value[0].storageOkQty,clickItem.value[0].id,clickItem.value[0].matCode)
|
||||||
}
|
}
|
||||||
const handleRg = async (rgid) => {
|
const handleRg = async (rgid) => {
|
||||||
pnCurrentList.value =[]
|
pnCurrentList.value =[]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="hl-card">
|
<el-card class="hl-card">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>物料需求计划管理</span>
|
<span>标准件库存</span>
|
||||||
</template>
|
</template>
|
||||||
<ContentWrap class="borderxx">
|
<ContentWrap class="borderxx">
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
@ -62,14 +62,21 @@
|
|||||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180px" />
|
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180px" />
|
||||||
<el-table-column min-width="200px" align="center" >
|
<el-table-column min-width="200px" align="center" >
|
||||||
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
||||||
<template #default="{ row, $index }">
|
<!-- <template #default="{ row, $index }">-->
|
||||||
<el-form-item :prop="`${$index}.matId`" class="mb-0px!" >
|
<!-- <el-form-item :prop="`${$index}.matId`" class="mb-0px!" >-->
|
||||||
<el-select v-model="row.matId" placeholder="请输入物料" clearable filterable >
|
<!-- <el-select v-model="row.matId" placeholder="请输入物料" clearable filterable >-->
|
||||||
<el-option v-for="item in materialSelectList" :key="item.id" :label="item.code+' '+item.name" :value="item.id" />
|
<!-- <el-option v-for="item in materialSelectList" :key="item.id" :label="item.code+' '+item.name" :value="item.id" />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
<!-- <MaterialSelect v-model="row.matId" @update:newValue="handleSelected($index, $event)" clearable/>-->
|
<!--<!– <MaterialSelect v-model="row.matId" @update:newValue="handleSelected($index, $event)" clearable/>–>-->
|
||||||
|
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-model="scope.row.matCode" disabled>
|
||||||
|
<template #suffix>
|
||||||
|
<Icon @click="serachLog(scope.row)" icon="ep:search" color="primary"/>
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="物料名称" align="center" prop="matName" min-width="180px" />
|
<el-table-column label="物料名称" align="center" prop="matName" min-width="180px" />
|
||||||
@ -100,6 +107,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
link
|
link
|
||||||
type="danger"
|
type="danger"
|
||||||
|
v-if="scope.row.isPurYard==2|| scope.row.isPurYard==5"
|
||||||
@click="operation('del',scope.row.id)"
|
@click="operation('del',scope.row.id)"
|
||||||
>
|
>
|
||||||
删除
|
删除
|
||||||
@ -116,6 +124,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<matLog ref="matLogRef" @success="getMat" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -123,6 +132,7 @@
|
|||||||
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
||||||
import { dateFormatter1} from '@/utils/formatTime'
|
import { dateFormatter1} from '@/utils/formatTime'
|
||||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||||
|
import matLog from './storageLog.vue'
|
||||||
|
|
||||||
|
|
||||||
defineOptions({ name: 'MaterialPlan' })
|
defineOptions({ name: 'MaterialPlan' })
|
||||||
@ -131,17 +141,14 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
|||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
|
|
||||||
import MaterialSelect from "@/views/heli/matreq/materialNewSelect.vue";
|
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
import {ElTable} from "element-plus";
|
import {ElTable} from "element-plus";
|
||||||
import {getStandardPartsPages} from "@/api/heli/materialplan";
|
|
||||||
import * as MatReqApi from "@/api/heli/matreq";
|
import * as MatReqApi from "@/api/heli/matreq";
|
||||||
import {generate} from "@/api/heli/matreq";
|
|
||||||
import * as MaterialApi from "@/api/heli/material";
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const list = ref([]) // 列表的数据
|
const list = ref([]) // 列表的数据
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
|
const matLogRef = ref()
|
||||||
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -168,9 +175,9 @@ const queryFormRef = ref() // 搜索的表单
|
|||||||
const exportLoading = ref(false) // 导出的加载中
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
const multipleTable = ref<InstanceType<typeof ElTable>>()
|
const multipleTable = ref<InstanceType<typeof ElTable>>()
|
||||||
|
|
||||||
const handleSelected = (currentIndex, newValue: any) => {
|
// const handleSelected = (currentIndex, newValue: any) => {
|
||||||
list.value[currentIndex].matId = newValue?.id
|
// list.value[currentIndex].matId = newValue?.id
|
||||||
}
|
// }
|
||||||
const jump = async () => {
|
const jump = async () => {
|
||||||
router.push({ path: '/purchase/matreq' })
|
router.push({ path: '/purchase/matreq' })
|
||||||
// tagsViewStore.delVisitedView(router.currentRoute.value)
|
// tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
@ -186,6 +193,19 @@ const getList = async () => {
|
|||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const serachLog = (row) => {
|
||||||
|
matLogRef.value.open(row.id)
|
||||||
|
}
|
||||||
|
const getMat = async (rowids,ids,matCodes) => {
|
||||||
|
//formData.value.boomItemDOList = arrBoom
|
||||||
|
for(var i = 0 ; i < list.value.length ; i ++){
|
||||||
|
if(list.value[i].id == rowids){
|
||||||
|
list.value[i].matCode = matCodes
|
||||||
|
list.value[i].matId = ids
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
try {
|
try {
|
||||||
console.log("开始提交"); // 调试点1:确认函数是否触发
|
console.log("开始提交"); // 调试点1:确认函数是否触发
|
||||||
@ -305,7 +325,7 @@ const userInit = ref()
|
|||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
//用户列表数据
|
//用户列表数据
|
||||||
materialSelectList.value = await MaterialApi.getbzjList() ;
|
// materialSelectList.value = await MaterialApi.getbzjList() ;
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
175
mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/storageLog.vue
Normal file
175
mes-ui/mes-ui-admin-vue3/src/views/heli/matreq/storageLog.vue
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog title="实时库存" v-model="dialogVisible" width="80%">
|
||||||
|
<el-card class="hl-card">
|
||||||
|
|
||||||
|
<ContentWrap class="borderxx">
|
||||||
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||||
|
<el-form-item label="物料名称" prop="matName" >
|
||||||
|
<el-input v-model="queryParams.name" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="规格型号" prop="matName" >
|
||||||
|
<el-input v-model="queryParams.spec" placeholder="规格型号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料简称" prop="shortName" >
|
||||||
|
<el-input v-model="queryParams.shortName" placeholder="物料简称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item >
|
||||||
|
<el-button @click="handleQuery" type="primary">
|
||||||
|
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="resetQuery">
|
||||||
|
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</ContentWrap>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<ContentWrap>
|
||||||
|
<el-table ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true" @row-click="clickRow" @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
width="55"/>
|
||||||
|
<el-table-column type="index" width="100" fixed label="序号" align="center" />
|
||||||
|
<el-table-column label="物料编码" align="center" prop="code" fixed min-width="120" />
|
||||||
|
<el-table-column label="物料名称" align="center" prop="name" fixed min-width="120"/>
|
||||||
|
<el-table-column label="物料类型" align="center" prop="materialType" min-width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.materialType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="物料简称" align="center" prop="shortName" min-width="120"/>
|
||||||
|
<el-table-column label="规格/型号" align="center" prop="spec" min-width="120"/>
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页 -->
|
||||||
|
<Pagination
|
||||||
|
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList" />
|
||||||
|
</ContentWrap>
|
||||||
|
</el-card>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="success">
|
||||||
|
确认
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {DICT_TYPE} from "@/utils/dict";
|
||||||
|
import * as MaterialApi from "@/api/heli/material";
|
||||||
|
defineOptions({ name: 'StorageLog' })
|
||||||
|
const printref = ref()
|
||||||
|
const whList = ref([])
|
||||||
|
const rgList = ref([])
|
||||||
|
const pnList = ref([])
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
|
|
||||||
|
const loading = ref(true) // 列表的加载中
|
||||||
|
const list = ref([]) // 列表的数据
|
||||||
|
const total = ref(0) // 列表的总页数
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined,
|
||||||
|
matType: undefined,
|
||||||
|
lotNo: undefined,
|
||||||
|
whId: undefined,
|
||||||
|
rgId:undefined,
|
||||||
|
pnId: undefined,
|
||||||
|
headerNo: undefined,
|
||||||
|
spec:undefined,
|
||||||
|
materialType:5,
|
||||||
|
status:1,
|
||||||
|
shortName:undefined
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
|
||||||
|
const currentRow = ref()
|
||||||
|
const multipleTableRef = ref()
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const data = await MaterialApi.getbzjList(queryParams) ;
|
||||||
|
list.value = data.list
|
||||||
|
total.value = data.total
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const clickItem = ref([])
|
||||||
|
const handleCurrentChange = (val) => {
|
||||||
|
clickItem.value = val;
|
||||||
|
if(val.length > 1){
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(val.pop())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const clickRow = (row) => {
|
||||||
|
if (clickItem.value==null){
|
||||||
|
clickItem.value = [];
|
||||||
|
|
||||||
|
}
|
||||||
|
// 单选选中行
|
||||||
|
if ( clickItem.value[0] == row) {
|
||||||
|
// 取消
|
||||||
|
clickItem.value = [];
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
} else {
|
||||||
|
// 选择
|
||||||
|
clickItem.value.push(row);
|
||||||
|
multipleTableRef.value!.clearSelection()
|
||||||
|
multipleTableRef.value!.toggleRowSelection(row, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNo = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryFormRef.value.resetFields()
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
const rowid = ref()
|
||||||
|
const open = async (rowids) => {
|
||||||
|
clickItem.value = null;
|
||||||
|
//multipleTableRef.value!.clearSelection()
|
||||||
|
dialogVisible.value = true
|
||||||
|
// queryParams.matName = matCode;
|
||||||
|
rowid.value = rowids
|
||||||
|
console.log(rowids)
|
||||||
|
console.log(rowid.value)
|
||||||
|
await getList();
|
||||||
|
|
||||||
|
}
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
const emit = defineEmits(['success'])
|
||||||
|
// emit('success', multipleSelection.value)
|
||||||
|
const success = () => {
|
||||||
|
dialogVisible.value = false;
|
||||||
|
emit('success', rowid.value, clickItem.value[0].id, clickItem.value[0].code)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(async () => {
|
||||||
|
|
||||||
|
await getList()
|
||||||
|
})
|
||||||
|
</script>
|
263
mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue
Normal file
263
mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
<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="matName">
|
||||||
|
<el-input v-model="queryParams.matName" 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="duEmpName">
|
||||||
|
<el-input v-model="queryParams.duEmpName" placeholder="请输入责任人" clearable @keyup.enter="handleQuery" class="!w-240px"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="采购状态" prop="mplanStatus">
|
||||||
|
<el-select v-model="queryParams.mplanStatus" placeholder="请选择采购状态" clearable class="!w-240px">
|
||||||
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.MATERIAL_PLAN_BOOM_MPLAN_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>
|
||||||
|
<el-button style="margin-left: 18px" @click="singleSubmissions()" type="success" size="large">送审</el-button>
|
||||||
|
</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="100" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button text type="primary">
|
||||||
|
{{ scope.row.procedureName }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="客户简称" align="center" prop="brief" min-width="180" />
|
||||||
|
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" />
|
||||||
|
<el-table-column label="零件名称" align="center" prop="matName" min-width="180" />
|
||||||
|
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
|
||||||
|
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
|
||||||
|
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="120" />
|
||||||
|
<el-table-column label="单位" align="center" prop="unit" min-width="120" />
|
||||||
|
<el-table-column label="责任人" align="center" prop="duEmpName" min-width="120" />
|
||||||
|
<el-table-column label="状态" align="center" prop="mplanStatus" min-width="120" />
|
||||||
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
|
||||||
|
</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>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
|
import download from '@/utils/download'
|
||||||
|
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||||
|
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
|
||||||
|
import {inject, ref} from "vue";
|
||||||
|
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
||||||
|
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
||||||
|
import {ElTable} from "element-plus";
|
||||||
|
import {useUserStore} from "@/store/modules/user";
|
||||||
|
import {dateFormatter1} from "@/utils/formatTime";
|
||||||
|
import {getPartPurchasePages} from "@/api/heli/materialplan";
|
||||||
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
|
|
||||||
|
defineOptions({ name: 'standard' })
|
||||||
|
const userStore = useUserStore()
|
||||||
|
const username = userStore.getUser.nickname
|
||||||
|
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,
|
||||||
|
projectSubCode: undefined,
|
||||||
|
customerName: undefined,
|
||||||
|
projectName: undefined,
|
||||||
|
projectSubName: undefined,
|
||||||
|
version: undefined,
|
||||||
|
bomStatus: undefined,
|
||||||
|
remark: undefined,
|
||||||
|
mplanStatus: 0,
|
||||||
|
createTime: [],
|
||||||
|
duEmpName:username,
|
||||||
|
materialName:undefined,
|
||||||
|
matName:undefined,
|
||||||
|
projectMaterialPlanNo:undefined,
|
||||||
|
})
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
// const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
|
||||||
|
// list.value = data.list
|
||||||
|
// total.value = data.total
|
||||||
|
await MaterialPlanApi.getPartPurchasePages()
|
||||||
|
} 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) => {
|
||||||
|
// multipleTable.value.clearSelection()
|
||||||
|
multipleTable.value=val
|
||||||
|
|
||||||
|
}
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
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 routerToPurchaseOrderNo=()=>{
|
||||||
|
router.push({ path: '/purchase/purchaseorderno'});
|
||||||
|
}
|
||||||
|
const singleSubmissions=()=>{
|
||||||
|
submitForm();
|
||||||
|
}
|
||||||
|
const submitForm = async () => {
|
||||||
|
try {
|
||||||
|
console.log("开始提交"); // 调试点1:确认函数是否触发
|
||||||
|
|
||||||
|
const list = multipleTable.value|| []; // 安全获取数据
|
||||||
|
console.log("明细数据:", list);
|
||||||
|
console.log(list.length)
|
||||||
|
// 1. 检查空数据
|
||||||
|
if (!list || list.length==null) {
|
||||||
|
message.error("提交明细不能为空,请确认");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 检查供应商一致性
|
||||||
|
const firstSupplierId = list[0].supplierId;
|
||||||
|
if (list.some(item => item.supplierId !== firstSupplierId)) {
|
||||||
|
message.error("零件采购订单不属于同一个供应商,请确认");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 添加加载状态(Element Plus 兼容处理)
|
||||||
|
formLoading.value = true;
|
||||||
|
|
||||||
|
// 5. 提交数据(添加超时处理)
|
||||||
|
const res = await Promise.race([
|
||||||
|
PartPurchaseOrderApi.submitForm(list),
|
||||||
|
new Promise((_, reject) =>
|
||||||
|
setTimeout(() => reject(new Error("请求超时")), 30000)
|
||||||
|
)
|
||||||
|
]);
|
||||||
|
|
||||||
|
message.success("提交成功");
|
||||||
|
getList(); // 确保刷新完成
|
||||||
|
emit('success');
|
||||||
|
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error("提交失败:", error);
|
||||||
|
// message.error(`操作失败: ${error.message || "未知错误"}`);
|
||||||
|
} 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>
|
@ -17,8 +17,8 @@
|
|||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="采购单号" prop="contractNo">
|
<el-form-item label="采购单号" prop="purchaseNo">
|
||||||
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.contractNo" disabled />
|
<el-input class="!w-300px" placeholder="系统自动生成" v-model="formData.purchaseNo" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -60,8 +60,14 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="hl-footer text-center">
|
<div class="hl-footer text-center">
|
||||||
<el-button v-if="formData.type === 'check'" @click="approve" size="large">批 准</el-button>
|
<template v-if="formData.type === 'check'">
|
||||||
<el-button v-if="formData.type === 'cehck'" @click="handleReject" size="large">驳 回</el-button>
|
<el-button @click="approve" size="large">批 准</el-button>
|
||||||
|
<el-button @click="handleReject" size="large">驳 回</el-button>
|
||||||
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
|
</template>
|
||||||
|
<template v-if="formData.type === 'detail'">
|
||||||
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@ -101,7 +107,7 @@ const dialogVisible = ref(false) // 弹窗的是否展示
|
|||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
contractNo: undefined,
|
purchaseNo: undefined,
|
||||||
projectId: undefined,
|
projectId: undefined,
|
||||||
projectPlanId: undefined,
|
projectPlanId: undefined,
|
||||||
projectPlanNo: undefined,
|
projectPlanNo: undefined,
|
||||||
@ -115,7 +121,7 @@ const formData = ref({
|
|||||||
matBoomDOList: [],
|
matBoomDOList: [],
|
||||||
matItemRemoveList: [],
|
matItemRemoveList: [],
|
||||||
attachments: [],
|
attachments: [],
|
||||||
type: query.type
|
type: undefined,
|
||||||
})
|
})
|
||||||
|
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
@ -131,7 +137,8 @@ const updateParams = reactive({
|
|||||||
|
|
||||||
const approve = async () => {
|
const approve = async () => {
|
||||||
await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id)
|
await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id)
|
||||||
console.log("批准成功")
|
message.success("提交成功");
|
||||||
|
getList();
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleReject = async () => {
|
const handleReject = async () => {
|
||||||
@ -158,9 +165,13 @@ const reject = async(reason) => {
|
|||||||
updateParams.reason = reason
|
updateParams.reason = reason
|
||||||
// 这里可以执行提交驳回逻辑
|
// 这里可以执行提交驳回逻辑
|
||||||
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams)
|
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams)
|
||||||
console.log("驳回成功")
|
message.success("已驳回");
|
||||||
|
getList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cancel = async () => {
|
||||||
|
router.push({ path: '/purchase/PartPurchaseCheck'});
|
||||||
|
}
|
||||||
|
|
||||||
const closeForm = async () => {
|
const closeForm = async () => {
|
||||||
router.push({ path: '/purchase/management' })
|
router.push({ path: '/purchase/management' })
|
||||||
@ -177,6 +188,7 @@ const queryParams = reactive({
|
|||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 获取物料需求计划信息
|
// 获取物料需求计划信息
|
||||||
formData.value = await PartPurchaseOrderApi.getPurchaseOrderMake(query.id)
|
formData.value = await PartPurchaseOrderApi.getPurchaseOrderMake(query.id)
|
||||||
|
formData.value.type = query.type
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<ContentWrap class="borderxx">
|
<ContentWrap class="borderxx">
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
|
||||||
<el-form-item label="采购单号" prop="contractNo">
|
<el-form-item label="采购单号" prop="purchaseNo">
|
||||||
<el-input v-model="queryParams.contractNo" placeholder="采购单号" clearable @keyup.enter="handleQuery"
|
<el-input v-model="queryParams.purchaseNo" placeholder="采购单号" clearable @keyup.enter="handleQuery"
|
||||||
class="!w-240px" />
|
class="!w-240px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目名称" prop="projectName">
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
@ -46,10 +46,10 @@
|
|||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
|
<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="序号" type="index" align="center" fixed min-width="70px" />
|
||||||
<el-table-column label="采购单号" align="center" prop="contractNo" min-width="180" fixed>
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="180" fixed>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button text type="primary" @click="openForm('detail', scope.row.id)">
|
<el-button text type="primary" @click="openForm('detail', scope.row.id)">
|
||||||
{{ scope.row.contractNo }}
|
{{ scope.row.purchaseNo }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -80,7 +80,7 @@
|
|||||||
v-if="scope.row.status === 1"
|
v-if="scope.row.status === 1"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="primary"
|
||||||
@click="openForm('detail', scope.row.id)"
|
@click="openForm('check', scope.row.id)"
|
||||||
>
|
>
|
||||||
去审核
|
去审核
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -119,7 +119,7 @@ const queryParams = reactive({
|
|||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
id: undefined,
|
id: undefined,
|
||||||
contractNo: undefined,
|
purchaseNo: undefined,
|
||||||
projectId: undefined,
|
projectId: undefined,
|
||||||
projectPlanId: undefined,
|
projectPlanId: undefined,
|
||||||
submitUserId: undefined,
|
submitUserId: undefined,
|
||||||
|
@ -167,7 +167,7 @@
|
|||||||
<el-table-column label="规格型号" prop="spec" min-width="140">
|
<el-table-column label="规格型号" prop="spec" min-width="140">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<span v-if="row.type == '2'" v-html="row.spec"></span>
|
<span v-if="row.type == '2'" v-html="row.spec"></span>
|
||||||
<el-form-item v-else :prop="`${$index}.spec`" :rules="subFormRules.spec" class="mb-0px!">
|
<el-form-item v-else :prop="`${$index}.spec`" class="mb-0px!">
|
||||||
<el-input :disabled="getDisable(row.bomEditStatus)" v-model="row.spec" />
|
<el-input :disabled="getDisable(row.bomEditStatus)" v-model="row.spec" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
|
@ -24,12 +24,12 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="单据日期" prop="ordDate">
|
<el-form-item label="入库日期" prop="ordDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.ordDate"
|
v-model="formData.ordDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="x"
|
||||||
placeholder="单据日期"
|
placeholder="入库日期"
|
||||||
disabled
|
disabled
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<el-form class="-mb-15px" :model="queryParams" ref="storageNo" :inline="true" label-width="120px">
|
<el-form class="-mb-15px" :model="queryParams" ref="storageNo" :inline="true" label-width="120px">
|
||||||
<el-form-item label="入库单号" prop="storageNo">
|
<el-form-item label="入库单号" prop="storageNo">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.purchaseNo" placeholder="采购单号" clearable @keyup.enter="handleQuery"
|
v-model="queryParams.purchaseNo" placeholder="入库单号" clearable @keyup.enter="handleQuery"
|
||||||
class="!w-240px" />
|
class="!w-240px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="项目名称" prop="projectName">
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
@ -90,7 +90,7 @@ v-for="dict in pnCurrentList" :key="dict.id" :label="dict.pn_name"
|
|||||||
<template #header><span class="hl-table_header">*</span>补充数量</template>
|
<template #header><span class="hl-table_header">*</span>补充数量</template>
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<el-form-item :prop="`${$index}.storageOkQtys`" class="mb-0px!" style="margin-left:10px ">
|
<el-form-item :prop="`${$index}.storageOkQtys`" class="mb-0px!" style="margin-left:10px ">
|
||||||
<el-input-number v-model="row.storageOkQtys" type="number" :precision="2" />
|
<el-input-number v-model="row.storageOkQtys" type="number" :precision="2" :min="0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -87,7 +87,6 @@ import { dateFormatter1} from '@/utils/formatTime'
|
|||||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import {delMaterial} from "@/api/heli/materialplan";
|
|
||||||
|
|
||||||
|
|
||||||
defineOptions({ name: 'MaterialPlan' })
|
defineOptions({ name: 'MaterialPlan' })
|
||||||
@ -171,6 +170,7 @@ const handleDelete = async (id: number) => {
|
|||||||
try {
|
try {
|
||||||
// 删除的二次确认
|
// 删除的二次确认
|
||||||
await message.delConfirm()
|
await message.delConfirm()
|
||||||
|
|
||||||
// 发起删除
|
// 发起删除
|
||||||
await MaterialPlanApi.delMaterial(id)
|
await MaterialPlanApi.delMaterial(id)
|
||||||
message.success(t('common.delSuccess'))
|
message.success(t('common.delSuccess'))
|
||||||
|
@ -1652,6 +1652,8 @@ const goback = () => {
|
|||||||
var listdetail = ref([]);
|
var listdetail = ref([]);
|
||||||
/** 删除子项操作 */
|
/** 删除子项操作 */
|
||||||
const onDeleteItem = async (row,index) => {
|
const onDeleteItem = async (row,index) => {
|
||||||
|
let id = row.id
|
||||||
|
if (id) await TaskDispatchApi.deleteTaskDispatchDetail(id)
|
||||||
var list = [];
|
var list = [];
|
||||||
listdetail.value = [];
|
listdetail.value = [];
|
||||||
var indexs = 1;
|
var indexs = 1;
|
||||||
@ -1672,8 +1674,6 @@ const onDeleteItem = async (row,index) => {
|
|||||||
}
|
}
|
||||||
checkList.value = list;
|
checkList.value = list;
|
||||||
checkListTemp.value = checkList.value;
|
checkListTemp.value = checkList.value;
|
||||||
let id = row.id
|
|
||||||
if (id) await TaskDispatchApi.deleteTaskDispatchDetail(id)
|
|
||||||
message.success(t('common.delSuccess'))
|
message.success(t('common.delSuccess'))
|
||||||
}
|
}
|
||||||
const handleOutsourcingChange= async (row: any) => {
|
const handleOutsourcingChange= async (row: any) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user