问题修改
This commit is contained in:
parent
4577472af4
commit
a92d717c5f
@ -1,5 +1,8 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.controller.admin.master;
|
package com.chanko.yunxi.mes.module.heli.controller.admin.master;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.material.MaterialService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -37,6 +40,8 @@ public class MasterController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private MasterService masterService;
|
private MasterService masterService;
|
||||||
|
@Resource
|
||||||
|
private MaterialService materialService;
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建借用主")
|
@Operation(summary = "创建借用主")
|
||||||
@ -68,6 +73,10 @@ public class MasterController {
|
|||||||
@PreAuthorize("@ss.hasPermission('heli:master:query')")
|
@PreAuthorize("@ss.hasPermission('heli:master:query')")
|
||||||
public CommonResult<MasterRespVO> getMaster(@RequestParam("id") Integer id) {
|
public CommonResult<MasterRespVO> getMaster(@RequestParam("id") Integer id) {
|
||||||
MasterDO master = masterService.getMaster(id);
|
MasterDO master = masterService.getMaster(id);
|
||||||
|
MaterialDO material = materialService.getMaterial(Long.valueOf(master.getJyMaster()));
|
||||||
|
if (ObjectUtil.isNotEmpty( material)){
|
||||||
|
master.setJyMasterName(material.getName());
|
||||||
|
}
|
||||||
return success(BeanUtils.toBean(master, MasterRespVO.class));
|
return success(BeanUtils.toBean(master, MasterRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.controller.admin.master.vo;
|
package com.chanko.yunxi.mes.module.heli.controller.admin.master.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -62,4 +63,6 @@ public class MasterRespVO {
|
|||||||
@Schema(description = "借用物料名称")
|
@Schema(description = "借用物料名称")
|
||||||
@ExcelProperty("借用物料名称")
|
@ExcelProperty("借用物料名称")
|
||||||
private String jyMasters;
|
private String jyMasters;
|
||||||
|
@Schema(description = "借用物料名称")
|
||||||
|
private String jyMasterName;
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
|
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -140,4 +141,8 @@ public class PlanRespVO {
|
|||||||
@ExcelProperty("项目变更日期")
|
@ExcelProperty("项目变更日期")
|
||||||
private LocalDateTime changeEndTime;
|
private LocalDateTime changeEndTime;
|
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private LocalDateTime orderTime;
|
||||||
|
|
||||||
}
|
}
|
@ -66,5 +66,7 @@ public class MasterDO extends BaseDO {
|
|||||||
private String jyBms;
|
private String jyBms;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String jyMasters;
|
private String jyMasters;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String jyMasterName;
|
||||||
|
|
||||||
}
|
}
|
@ -205,7 +205,8 @@ public class PlanDO extends BaseDO {
|
|||||||
private String processDesignType;
|
private String processDesignType;
|
||||||
|
|
||||||
private String creator;
|
private String creator;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private LocalDateTime orderTime;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,4 +213,6 @@ public class PurchaseOrderNoDetailDO extends BaseDO {
|
|||||||
private String arriveTimes;
|
private String arriveTimes;
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String requireTimes;
|
private String requireTimes;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private Long projectSubId;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.outsourcestock.OutsourceStockDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.outsourcestock.OutsourceStockDO;
|
||||||
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.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
|
||||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@ -27,7 +28,7 @@ public interface OutsourceStockMapper extends BaseMapperX<OutsourceStockDO> {
|
|||||||
query.selectAll(OutsourceStockDO.class)
|
query.selectAll(OutsourceStockDO.class)
|
||||||
.select("s.name as supplierName","p.purchase_no as purchaseNo")
|
.select("s.name as supplierName","p.purchase_no as purchaseNo")
|
||||||
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, OutsourceStockDO::getSupplierId)
|
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, OutsourceStockDO::getSupplierId)
|
||||||
.leftJoin(PurchaseOrderDO.class, "p", PurchaseOrderDO::getId, OutsourceStockDO::getPurchaseId)
|
.leftJoin(PurchaseOrderNoDO.class, "p", PurchaseOrderNoDO::getId, OutsourceStockDO::getPurchaseId)
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.orderByDesc(OutsourceStockDO::getCreateTime);
|
.orderByDesc(OutsourceStockDO::getCreateTime);
|
||||||
query.like(!StringUtils.isEmpty(reqVO.getOutsourceNo()), OutsourceStockDO::getOutsourceNo, reqVO.getOutsourceNo())
|
query.like(!StringUtils.isEmpty(reqVO.getOutsourceNo()), OutsourceStockDO::getOutsourceNo, reqVO.getOutsourceNo())
|
||||||
|
@ -56,6 +56,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
|
|||||||
|
|
||||||
query.selectAll(PlanDO.class)
|
query.selectAll(PlanDO.class)
|
||||||
.select("u.nickname as businessManName", "e.name as customerName","p.code as projectCode","p.project_name as projectName","p.project_start_time as projectStartTime","p.project_end_time as projectEndTime","p.business_line as businessLine","p.property","p.is_urgency as isUrgency","p.has_alter as hasAlter")
|
.select("u.nickname as businessManName", "e.name as customerName","p.code as projectCode","p.project_name as projectName","p.project_start_time as projectStartTime","p.project_end_time as projectEndTime","p.business_line as businessLine","p.property","p.is_urgency as isUrgency","p.has_alter as hasAlter")
|
||||||
|
.select("p.order_time as orderTime")
|
||||||
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, PlanDO::getProjectId)
|
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, PlanDO::getProjectId)
|
||||||
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan)
|
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan)
|
||||||
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
|
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
|
||||||
|
@ -12,6 +12,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
|
||||||
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.processbom.ProcessBomDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||||
@ -64,7 +65,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","bom.blueprint_no as blueprintNo")
|
.select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName","bom.blueprint_no as blueprintNo","psub.id as projectSubId")
|
||||||
.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)
|
||||||
@ -72,6 +73,7 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX<PurchaseOrderNo
|
|||||||
.leftJoin(CompositionDO.class, "com", CompositionDO::getId, PurchaseOrderNoDetailDO::getComposition)
|
.leftJoin(CompositionDO.class, "com", CompositionDO::getId, PurchaseOrderNoDetailDO::getComposition)
|
||||||
.leftJoin(ProjectOrderSubDO.class,"sub",ProjectOrderSubDO::getId, PurchaseOrderNoDetailDO::getProjectPlanSubId)
|
.leftJoin(ProjectOrderSubDO.class,"sub",ProjectOrderSubDO::getId, PurchaseOrderNoDetailDO::getProjectPlanSubId)
|
||||||
.leftJoin(MaterialDO.class,"mat",MaterialDO::getId,PurchaseOrderNoDetailDO::getMaterialId)
|
.leftJoin(MaterialDO.class,"mat",MaterialDO::getId,PurchaseOrderNoDetailDO::getMaterialId)
|
||||||
|
.leftJoin(PlanSubDO.class,"psub",PlanSubDO::getProjectSubCode, PurchaseOrderNoDetailDO::getProjectSubCode)
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.groupBy(MaterialPlanDetailDO::getId);
|
.groupBy(MaterialPlanDetailDO::getId);
|
||||||
query.eq(PurchaseOrderMaterialDO::getPurchaseOrderId, id)
|
query.eq(PurchaseOrderMaterialDO::getPurchaseOrderId, id)
|
||||||
|
@ -91,8 +91,11 @@ public class BgMasterLineServiceImpl implements BgMasterLineService {
|
|||||||
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
|
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
|
||||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
wrapper1.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort()+1);
|
wrapper1.gt(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort());
|
||||||
|
wrapper1.eq(TaskDispatchDetailDO::getReportStatus, 0);
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0);
|
wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0);
|
||||||
|
wrapper1.orderByAsc(TaskDispatchDetailDO::getSort);
|
||||||
|
wrapper1.last("limit 1");
|
||||||
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1);
|
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1);
|
||||||
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
||||||
nextTaskDispatchDetailDO.setReportStatus(1);
|
nextTaskDispatchDetailDO.setReportStatus(1);
|
||||||
|
@ -182,8 +182,11 @@ public class PgMasterServiceImpl implements PgMasterService {
|
|||||||
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
|
if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){
|
||||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
wrapper1.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort()+1);
|
wrapper1.gt(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort());
|
||||||
|
wrapper1.eq(TaskDispatchDetailDO::getReportStatus, 0);
|
||||||
wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0);
|
wrapper1.eq(TaskDispatchDetailDO::getDeleted, 0);
|
||||||
|
wrapper1.orderByAsc(TaskDispatchDetailDO::getSort);
|
||||||
|
wrapper1.last("limit 1");
|
||||||
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1);
|
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper1);
|
||||||
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
||||||
nextTaskDispatchDetailDO.setReportStatus(1);
|
nextTaskDispatchDetailDO.setReportStatus(1);
|
||||||
|
@ -179,10 +179,14 @@ private StorageLogService storageLogService;
|
|||||||
outsourceStockDO.setStatus(2);
|
outsourceStockDO.setStatus(2);
|
||||||
outsourceStockMapper.updateById(outsourceStockDO);
|
outsourceStockMapper.updateById(outsourceStockDO);
|
||||||
//更改采购单的单据状态为收货中
|
//更改采购单的单据状态为收货中
|
||||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(outsourceStockDO.getPurchaseId());
|
// PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(outsourceStockDO.getPurchaseId());
|
||||||
purchaseOrderDO.setReceivingStatus(2);//收货中
|
// purchaseOrderDO.setReceivingStatus(2);//收货中
|
||||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
// purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||||
|
LambdaUpdateWrapper<PurchaseOrderNoDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
lambdaUpdateWrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId,outsourceStockDO.getPurchaseId());
|
||||||
|
lambdaUpdateWrapper.eq(PurchaseOrderNoDetailDO::getDeleted,0);
|
||||||
|
lambdaUpdateWrapper.set(PurchaseOrderNoDetailDO::getReceivingStatus,2);
|
||||||
|
purchaseOrderNoDetailMapper.update(lambdaUpdateWrapper);
|
||||||
return storageDO.getId();
|
return storageDO.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,9 +265,14 @@ private StorageLogService storageLogService;
|
|||||||
outsourceStockDO.setStatus(2);
|
outsourceStockDO.setStatus(2);
|
||||||
outsourceStockMapper.updateById(outsourceStockDO);
|
outsourceStockMapper.updateById(outsourceStockDO);
|
||||||
//更改采购单的单据状态为收货中
|
//更改采购单的单据状态为收货中
|
||||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(outsourceStockDO.getPurchaseId());
|
// PurchaseOrderDO purchaseOrderDO = purchaseOrderNoMapper.selectById(outsourceStockDO.getPurchaseId());
|
||||||
purchaseOrderDO.setReceivingStatus(2);//收货中
|
LambdaUpdateWrapper<PurchaseOrderNoDetailDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
lambdaUpdateWrapper.eq(PurchaseOrderNoDetailDO::getPurchaseOrderId,outsourceStockDO.getPurchaseId());
|
||||||
|
lambdaUpdateWrapper.eq(PurchaseOrderNoDetailDO::getDeleted,0);
|
||||||
|
lambdaUpdateWrapper.set(PurchaseOrderNoDetailDO::getReceivingStatus,2);
|
||||||
|
purchaseOrderNoDetailMapper.update(lambdaUpdateWrapper);
|
||||||
|
// purchaseOrderDO.setReceivingStatus(2);//收货中
|
||||||
|
// purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||||
//生成出库单
|
//生成出库单
|
||||||
return storageDO.getId();
|
return storageDO.getId();
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrder
|
|||||||
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.projectorder.ProjectOrderDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageinventory.StorageInventoryDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO;
|
||||||
@ -255,9 +256,14 @@ public class StorageMatServiceImpl implements StorageMatService {
|
|||||||
if (storageMatDO.getRgId()!=null){
|
if (storageMatDO.getRgId()!=null){
|
||||||
queryWrapper.eq(StorageInventoryDO::getRgId,storageMatDO.getRgId());
|
queryWrapper.eq(StorageInventoryDO::getRgId,storageMatDO.getRgId());
|
||||||
}
|
}
|
||||||
StorageInventoryDO storageLogNowDO = storageInventoryMapper.selectOne(queryWrapper);
|
List<StorageInventoryDO> storageInventoryDOS = storageInventoryMapper.selectList(queryWrapper);
|
||||||
if (ObjectUtil.isNotEmpty(storageLogNowDO)){
|
if (ObjectUtil.isNotEmpty(storageInventoryDOS)){
|
||||||
storageMatDO.setMatRest(storageLogNowDO.getYardAmount());
|
BigDecimal sum = storageInventoryDOS.stream()
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空对象
|
||||||
|
.map(StorageInventoryDO::getYardAmount)
|
||||||
|
.filter(Objects::nonNull) // 过滤掉空值
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add); // 累加求和
|
||||||
|
storageMatDO.setMatRest(sum);
|
||||||
}else {
|
}else {
|
||||||
storageMatDO.setMatRest(new BigDecimal(0));
|
storageMatDO.setMatRest(new BigDecimal(0));
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,15 @@
|
|||||||
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
|
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
|
||||||
|
|
||||||
import cn.hutool.core.bean.copier.BeanCopier;
|
|
||||||
import cn.hutool.core.bean.copier.CopyOptions;
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
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.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;
|
||||||
@ -48,8 +43,6 @@ import com.chanko.yunxi.mes.module.heli.service.zjpgmaster.ZjPgMasterService;
|
|||||||
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper;
|
import com.chanko.yunxi.mes.module.system.dal.mysql.user.AdminUserMapper;
|
||||||
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
|
import com.chanko.yunxi.mes.module.system.service.user.AdminUserService;
|
||||||
import io.minio.messages.Item;
|
|
||||||
import org.checkerframework.checker.units.qual.N;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@ -62,6 +55,7 @@ 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.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
@ -211,13 +205,19 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else {
|
}else {
|
||||||
|
AtomicReference<Boolean> flag= new AtomicReference<>(true);
|
||||||
updateReqVO.getTaskDispatchDetails().forEach(taskDispatchDetailDO -> {
|
updateReqVO.getTaskDispatchDetails().forEach(taskDispatchDetailDO -> {
|
||||||
if(taskDispatchDetailDO.getProcedureStatus().intValue() == 0 || taskDispatchDetailDO.getBeforeAmount()!=taskDispatchDetailDO.getAmount()
|
if(taskDispatchDetailDO.getProcedureStatus().intValue() == 0 || taskDispatchDetailDO.getBeforeAmount()!=taskDispatchDetailDO.getAmount()
|
||||||
){
|
){
|
||||||
taskDispatchDetailDO.setBeforeAmount(taskDispatchDetailDO.getAmount());
|
taskDispatchDetailDO.setBeforeAmount(taskDispatchDetailDO.getAmount());
|
||||||
taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.SUBMITTED.getCode());
|
taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.SUBMITTED.getCode());
|
||||||
}
|
}
|
||||||
if (taskDispatchDetailDO.getSort()==1){
|
|
||||||
|
if (taskDispatchDetailDO.getIsReport()==0){
|
||||||
|
taskDispatchDetailDO.setReportStatus(1);
|
||||||
|
}
|
||||||
|
if (taskDispatchDetailDO.getIsReport()==1&& flag.get()){
|
||||||
|
flag.set(false);
|
||||||
taskDispatchDetailDO.setReportStatus(1);
|
taskDispatchDetailDO.setReportStatus(1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -900,8 +900,11 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
|||||||
if (taskDispatchDetailDO.getCheckYn()==1&&"PRODUCTION".equals(taskDispatchDO.getDispatchType())){
|
if (taskDispatchDetailDO.getCheckYn()==1&&"PRODUCTION".equals(taskDispatchDO.getDispatchType())){
|
||||||
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<TaskDispatchDetailDO> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
wrapper.eq(TaskDispatchDetailDO::getDispatchId, taskDispatchDetailDO.getDispatchId());
|
||||||
wrapper.eq(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort()+1);
|
wrapper.gt(TaskDispatchDetailDO::getSort, taskDispatchDetailDO.getSort());
|
||||||
|
wrapper.eq(TaskDispatchDetailDO::getReportStatus, 0);
|
||||||
wrapper.eq(TaskDispatchDetailDO::getDeleted, 0);
|
wrapper.eq(TaskDispatchDetailDO::getDeleted, 0);
|
||||||
|
wrapper.orderByAsc(TaskDispatchDetailDO::getSort);
|
||||||
|
wrapper.last("limit 1");
|
||||||
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper);
|
TaskDispatchDetailDO nextTaskDispatchDetailDO = taskDispatchDetailMapper.selectOne(wrapper);
|
||||||
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
if (ObjectUtil.isNotEmpty(nextTaskDispatchDetailDO)){
|
||||||
nextTaskDispatchDetailDO.setReportStatus(1);
|
nextTaskDispatchDetailDO.setReportStatus(1);
|
||||||
|
@ -27,13 +27,13 @@
|
|||||||
FROM
|
FROM
|
||||||
project_outsource_stock pos
|
project_outsource_stock pos
|
||||||
JOIN
|
JOIN
|
||||||
project_purchase_order ppo ON pos.purchase_id = ppo.id AND ppo.deleted = 0
|
project_purchase_order_no ppo ON pos.purchase_id = ppo.id AND ppo.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
base_supplier bs ON ppo.supplier_id = bs.id AND bs.deleted = 0
|
base_supplier bs ON ppo.supplier_id = bs.id AND bs.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
project_outsource_stock_boom posb ON pos.id = posb.outsource_stock_id AND posb.deleted = 0
|
project_outsource_stock_boom posb ON pos.id = posb.outsource_stock_id AND posb.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
project_purchase_order_boom ppob ON posb.boom_detail_id = ppob.boom_detail_id AND ppob.deleted = 0
|
project_purchase_order_no_detail ppob ON posb.boom_detail_id = ppob.boom_detail_id AND ppob.deleted = 0
|
||||||
WHERE
|
WHERE
|
||||||
pos.deleted = 0
|
pos.deleted = 0
|
||||||
<if test="purchaseNo != null and purchaseNo != ''">
|
<if test="purchaseNo != null and purchaseNo != ''">
|
||||||
@ -73,13 +73,13 @@
|
|||||||
FROM
|
FROM
|
||||||
project_outsource_stock pos
|
project_outsource_stock pos
|
||||||
JOIN
|
JOIN
|
||||||
project_purchase_order ppo ON pos.purchase_id = ppo.id AND ppo.deleted = 0
|
project_purchase_order_no ppo ON pos.purchase_id = ppo.id AND ppo.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
base_supplier bs ON ppo.supplier_id = bs.id AND bs.deleted = 0
|
base_supplier bs ON ppo.supplier_id = bs.id AND bs.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
project_outsource_stock_material posm ON pos.id = posm.outsource_stock_id AND posm.deleted = 0
|
project_outsource_stock_material posm ON pos.id = posm.outsource_stock_id AND posm.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
project_purchase_order_material ppm ON posm.material_id = ppm.material_id AND ppm.deleted = 0
|
project_purchase_order_no_detail ppm ON posm.material_id = ppm.material_id AND ppm.deleted = 0
|
||||||
JOIN
|
JOIN
|
||||||
base_material bm ON ppm.material_id = bm.id AND bm.deleted = 0
|
base_material bm ON ppm.material_id = bm.id AND bm.deleted = 0
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
|
@ -293,5 +293,7 @@ export enum DICT_TYPE {
|
|||||||
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'
|
MATERIAL_PLAN_BOOM_MPLAN_STATUS='material_plan_boom_mplan_status',
|
||||||
|
HELI_PROJECT_PURCHASE_ORDER_NO_TYPE = 'heli_project_purchase_order_no_type',//采购单类型
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -85,14 +85,21 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="借用物料名称" prop="jyMaster">
|
<el-form-item label="借用物料名称" prop="jyMaster">
|
||||||
<!-- <el-input v-model="formData.jyMaster" placeholder="请输入借用物料名称" />-->
|
<!-- <el-input v-model="formData.jyMaster" placeholder="请输入借用物料名称" />-->
|
||||||
<el-select v-model="formData.jyMaster" placeholder="请选择借用物料名称">
|
<!-- <el-select v-model="formData.jyMaster" placeholder="请选择借用物料名称">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="material in materialList"
|
<!-- v-for="material in materialList"-->
|
||||||
:key="material.id"
|
<!-- :key="material.id"-->
|
||||||
:label="material.name"
|
<!-- :label="material.name"-->
|
||||||
:value="material.id"
|
<!-- :value="material.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
|
<div class="!w-265px">
|
||||||
|
<el-input v-model="formData.jyMasterName" @click.prevent="serachLog" >
|
||||||
|
<template #append><el-button
|
||||||
|
:icon="Search"
|
||||||
|
@click="serachLog" /></template>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -115,19 +122,20 @@
|
|||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
<matLog ref="matLogRef" @success="getMat" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import * as MasterApi from '@/api/heli/master'
|
import * as MasterApi from '@/api/heli/master'
|
||||||
import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
|
import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
|
||||||
import MaterialSelect from "@/views/heli/hlvuestyle/materialSelect.vue";
|
|
||||||
import * as UserApi from "@/api/system/user";
|
import * as UserApi from "@/api/system/user";
|
||||||
import {getSimpList} from "@/api/heli/material";
|
|
||||||
import * as MaterialApi from "@/api/heli/material";
|
import * as MaterialApi from "@/api/heli/material";
|
||||||
import * as DeptApi from "@/api/system/dept";
|
import * as DeptApi from "@/api/system/dept";
|
||||||
import {getSimpleDeptList} from "@/api/system/dept";
|
|
||||||
import BranchSelect from "@/views/heli/hlvuestyle/branchSelect.vue";
|
import BranchSelect from "@/views/heli/hlvuestyle/branchSelect.vue";
|
||||||
import {number} from "vue-types";
|
import matLog from './storageLogs.vue'
|
||||||
|
import {ref} from "vue";
|
||||||
|
import {Search} from "@element-plus/icons-vue";
|
||||||
|
const matLogRef = ref()
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const userList = ref<any[]>([]) // 用户列表
|
const userList = ref<any[]>([]) // 用户列表
|
||||||
@ -146,7 +154,8 @@ const formData = ref({
|
|||||||
jyUser: undefined,
|
jyUser: undefined,
|
||||||
jyType: undefined,
|
jyType: undefined,
|
||||||
num: undefined,
|
num: undefined,
|
||||||
jyDate:undefined
|
jyDate:undefined,
|
||||||
|
jyMasterName:undefined,
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
})
|
})
|
||||||
@ -196,7 +205,14 @@ const submitForm = async () => {
|
|||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const serachLog = () => {
|
||||||
|
matLogRef.value.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
const getMat = async (data) => {
|
||||||
|
formData.value.jyMaster=data.id;
|
||||||
|
formData.value.jyMasterName=data.name
|
||||||
|
}
|
||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="序号" align="center" prop="id" />
|
<el-table-column fixed type="index" width="100" label="序号" align="center" />
|
||||||
<el-table-column label="借用人" align="center" prop="jyUsers" >
|
<el-table-column label="借用人" align="center" prop="jyUsers" >
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{ userList.find((user) => user.id === scope.row.jyUser)?.nickname }}-->
|
<!-- {{ userList.find((user) => user.id === scope.row.jyUser)?.nickname }}-->
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" show-summary :summary-method="getSummaries">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" show-summary :summary-method="getSummaries">
|
||||||
<el-table-column label="序号" align="center" prop="id" />
|
<el-table-column fixed type="index" width="100" label="序号" align="center" />
|
||||||
<el-table-column label="借用人" align="center" prop="jyUsers" >
|
<el-table-column label="借用人" align="center" prop="jyUsers" >
|
||||||
<!-- <template #default="scope">-->
|
<!-- <template #default="scope">-->
|
||||||
<!-- {{ userList.find((user) => user.id === scope.row.jyUser)?.nickname }}-->
|
<!-- {{ userList.find((user) => user.id === scope.row.jyUser)?.nickname }}-->
|
||||||
|
190
mes-ui/mes-ui-admin-vue3/src/views/heli/master/storageLogs.vue
Normal file
190
mes-ui/mes-ui-admin-vue3/src/views/heli/master/storageLogs.vue
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
<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 label="物料类型" prop="materialType">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.materialType"
|
||||||
|
placeholder="请选择物料类型"
|
||||||
|
clearable
|
||||||
|
class="!w-240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</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, getStrDictOptions} 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:"3",
|
||||||
|
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', clickItem.value[0])
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(async () => {
|
||||||
|
|
||||||
|
await getList()
|
||||||
|
})
|
||||||
|
</script>
|
@ -143,7 +143,7 @@ class="!w-713px" type="textarea" v-model="formData.remark" show-word-limit
|
|||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import * as SupplierApi from '@/api/heli/supplier'
|
import * as SupplierApi from '@/api/heli/supplier'
|
||||||
import { Search, Plus } from '@element-plus/icons-vue'
|
import { Search, Plus } from '@element-plus/icons-vue'
|
||||||
import purchaseorderDialog from '@/views/heli/outsourcestock/purchaseorderDialog.vue'
|
import purchaseorderDialog from '@/views/heli/outsourcestock/purchaseorderDialog1.vue'
|
||||||
import { useTagsViewStore } from '@/store/modules/tagsView'
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
||||||
import supplierDialog from '@/views/heli/purchaseorder/supplierDialog.vue'
|
import supplierDialog from '@/views/heli/purchaseorder/supplierDialog.vue'
|
||||||
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
||||||
|
@ -476,8 +476,8 @@ link type="primary" size="small" :disabled="formData.status == 2"
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||||
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
|
||||||
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
||||||
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
||||||
import * as PurchaseOrderBoomApi from '@/api/heli/purchaseorderboom'
|
import * as PurchaseOrderBoomApi from '@/api/heli/purchaseorderboom'
|
||||||
@ -939,7 +939,7 @@ const deleteForm = async () => {
|
|||||||
// 提示用户是否保存入库信息
|
// 提示用户是否保存入库信息
|
||||||
await message.confirm('确认删除当前采购订单?')
|
await message.confirm('确认删除当前采购订单?')
|
||||||
|
|
||||||
await PurchaseOrderApi.deletePurchaseOrder(formData.value.id)
|
await PurchaseOrderNoApi.deletePurchaseOrderNo(formData.value.id)
|
||||||
router.push({ path: '/purchase/purchaseorder' })
|
router.push({ path: '/purchase/purchaseorder' })
|
||||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
@ -1039,13 +1039,13 @@ onMounted(async () => {
|
|||||||
formData.value.purchaseId != undefined &&
|
formData.value.purchaseId != undefined &&
|
||||||
formData.value.purchaseId != ''
|
formData.value.purchaseId != ''
|
||||||
) {
|
) {
|
||||||
const purchaseOrderDo = await PurchaseOrderApi.getPurchaseOrder(formData.value.purchaseId)
|
const purchaseOrderDo = await PurchaseOrderNoApi.getPurchaseOrderNo(formData.value.purchaseId)
|
||||||
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
||||||
// 获取物料需求计划信息
|
var purchaseOrderNoDetailById = await PurchaseOrderNoDetailApi.getPurchaseOrderNoDetailById(formData.value.purchaseId);
|
||||||
const materialPlan = await MaterialPlanApi.getMaterialPlan(purchaseOrderDo.projectMaterialPlanId)
|
if (purchaseOrderNoDetailById!=null){
|
||||||
//获取物料需求计划中的生产计划id,去查询对应子项目
|
var listElement = purchaseOrderNoDetailById[0];
|
||||||
// 获取生产计划单中子项目编号
|
formData.value.projectPlanSubs = [{projectSubCode:listElement.projectSubCode,projectSubId:listElement.projectSubId}]
|
||||||
await handleInitPlanSub(materialPlan.projectPlanId)
|
}
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.value.supplierId != undefined &&
|
formData.value.supplierId != undefined &&
|
||||||
|
@ -508,8 +508,7 @@ link type="primary" size="small" :disabled="formData.status == 2"
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||||
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
|
||||||
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
||||||
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
||||||
import * as PurchaseOrderBoomApi from '@/api/heli/purchaseorderboom'
|
import * as PurchaseOrderBoomApi from '@/api/heli/purchaseorderboom'
|
||||||
@ -530,6 +529,7 @@ import MaterialDialog from '@/views/heli/purchaseorder/materialDialog.vue'
|
|||||||
import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue'
|
import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue'
|
||||||
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
||||||
import * as PlanSubApi from '@/api/heli/plansub'
|
import * as PlanSubApi from '@/api/heli/plansub'
|
||||||
|
import * as PurchaseOrderNoDetailApi from "@/api/heli/purchaseordernodetail";
|
||||||
|
|
||||||
const reload: any = inject('reload')
|
const reload: any = inject('reload')
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
@ -977,7 +977,7 @@ const deleteForm = async () => {
|
|||||||
// 提示用户是否保存入库信息
|
// 提示用户是否保存入库信息
|
||||||
await message.confirm('确认删除当前采购订单?')
|
await message.confirm('确认删除当前采购订单?')
|
||||||
|
|
||||||
await PurchaseOrderApi.deletePurchaseOrder(formData.value.id)
|
await PurchaseOrderNoApi.deletePurchaseOrderNo(formData.value.id)
|
||||||
router.push({ path: '/purchase/purchaseorder' })
|
router.push({ path: '/purchase/purchaseorder' })
|
||||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
@ -1127,18 +1127,23 @@ onMounted(async () => {
|
|||||||
formData.value.purchaseId != undefined &&
|
formData.value.purchaseId != undefined &&
|
||||||
formData.value.purchaseId != ''
|
formData.value.purchaseId != ''
|
||||||
) {
|
) {
|
||||||
const purchaseOrderDo = await PurchaseOrderApi.getPurchaseOrder(formData.value.purchaseId)
|
const purchaseOrderDo = await PurchaseOrderNoApi.getPurchaseOrderNo(formData.value.purchaseId)
|
||||||
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
||||||
// 获取物料需求计划信息
|
// 获取物料需求计划信息
|
||||||
if (purchaseOrderDo.projectMaterialPlanId!=null){
|
// if (purchaseOrderDo.projectMaterialPlanId!=null){
|
||||||
const materialPlan = await MaterialPlanApi.getMaterialPlan(purchaseOrderDo.projectMaterialPlanId)
|
// const materialPlan = await MaterialPlanApi.getMaterialPlan(purchaseOrderDo.projectMaterialPlanId)
|
||||||
//获取物料需求计划中的生产计划id,去查询对应子项目
|
// //获取物料需求计划中的生产计划id,去查询对应子项目
|
||||||
// 获取生产计划单中子项目编号
|
// // 获取生产计划单中子项目编号
|
||||||
await handleInitPlanSub(materialPlan.projectPlanId)
|
// await handleInitPlanSub(materialPlan.projectPlanId)
|
||||||
|
// }
|
||||||
|
var purchaseOrderNoDetailById = await PurchaseOrderNoDetailApi.getPurchaseOrderNoDetailById(formData.value.purchaseId);
|
||||||
|
if (purchaseOrderNoDetailById!=null){
|
||||||
|
var listElement = purchaseOrderNoDetailById[0];
|
||||||
|
formData.value.projectPlanSubs = [{projectSubCode:listElement.projectSubCode,projectSubId:listElement.projectSubId}]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
|
formData.value.supplierId != undefined &&
|
||||||
formData.value.supplierId != undefined &&
|
formData.value.supplierId != undefined &&
|
||||||
formData.value.supplierId != ''
|
formData.value.supplierId != ''
|
||||||
) {
|
) {
|
||||||
|
@ -346,7 +346,7 @@ class="!w-365px" v-model="row.projectSubId" clearable
|
|||||||
:disabled="formData.status == 2">
|
:disabled="formData.status == 2">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in formData.projectPlanSubs" :key="dict.projectSubId"
|
v-for="dict in formData.projectPlanSubs" :key="dict.projectSubId"
|
||||||
:label="dict.projectSubCode" :value="dict.projectSubId" />
|
:label="dict.projectSubCode" :value="dict.projectSubCode" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
@ -502,7 +502,8 @@ link type="primary" size="small" :disabled="formData.status == 2 || formData.sta
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||||
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||||
|
import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail'
|
||||||
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
import * as PurchaseOrderMaterialApi from '@/api/heli/purchaseordermaterial'
|
||||||
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
import * as OutsourceStockMaterialApi from '@/api/heli/outsourcestockmaterial'
|
||||||
import * as OutsourceStockBoomApi from '@/api/heli/outsourcestockboom'
|
import * as OutsourceStockBoomApi from '@/api/heli/outsourcestockboom'
|
||||||
@ -523,6 +524,8 @@ import MaterialDialog from '@/views/heli/purchaseorder/materialDialog.vue'
|
|||||||
import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue'
|
import BoomDialog from '@/views/heli/purchaseorder/boomDialog.vue'
|
||||||
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
import * as OutsourceStockApi from '@/api/heli/outsourcestock'
|
||||||
import * as PlanSubApi from '@/api/heli/plansub'
|
import * as PlanSubApi from '@/api/heli/plansub'
|
||||||
|
import {getPurchaseOrderNo} from "@/api/heli/purchaseorderno";
|
||||||
|
import {PurchaseOrderNoDetailVO} from "@/api/heli/purchaseordernodetail";
|
||||||
|
|
||||||
const reload: any = inject('reload')
|
const reload: any = inject('reload')
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
@ -848,7 +851,7 @@ const saveMaterials = async () => {
|
|||||||
formData.value.matItemDOList.forEach(async (item) => {
|
formData.value.matItemDOList.forEach(async (item) => {
|
||||||
var subData = item as unknown as OutsourceStockMaterialApi.OutsourceStockMaterialVO
|
var subData = item as unknown as OutsourceStockMaterialApi.OutsourceStockMaterialVO
|
||||||
subData.purchaseAmount = item.purchaseAmount
|
subData.purchaseAmount = item.purchaseAmount
|
||||||
subData.materialId = item.matId
|
subData.materialId = item.materialId
|
||||||
subData.outsourceStockId = formData.value.id
|
subData.outsourceStockId = formData.value.id
|
||||||
subData.id = undefined
|
subData.id = undefined
|
||||||
subData.id = await OutsourceStockMaterialApi.createOutsourceStockMaterial(subData)
|
subData.id = await OutsourceStockMaterialApi.createOutsourceStockMaterial(subData)
|
||||||
@ -864,7 +867,7 @@ const saveUpMaterials = async () => {
|
|||||||
formData.value.matItemDOList.forEach(async (item) => {
|
formData.value.matItemDOList.forEach(async (item) => {
|
||||||
var subData = item as unknown as OutsourceStockMaterialApi.OutsourceStockMaterialVO
|
var subData = item as unknown as OutsourceStockMaterialApi.OutsourceStockMaterialVO
|
||||||
subData.purchaseAmount = item.purchaseAmount
|
subData.purchaseAmount = item.purchaseAmount
|
||||||
subData.materialId = item.matId
|
subData.materialId = item.materialId
|
||||||
subData.outsourceStockId = formData.value.id
|
subData.outsourceStockId = formData.value.id
|
||||||
await OutsourceStockMaterialApi.updateOutsourceStockMaterial(subData)
|
await OutsourceStockMaterialApi.updateOutsourceStockMaterial(subData)
|
||||||
// if (subData.id == undefined) {
|
// if (subData.id == undefined) {
|
||||||
@ -972,7 +975,7 @@ const deleteForm = async () => {
|
|||||||
// 提示用户是否保存入库信息
|
// 提示用户是否保存入库信息
|
||||||
await message.confirm('确认删除当前采购订单?')
|
await message.confirm('确认删除当前采购订单?')
|
||||||
|
|
||||||
await PurchaseOrderApi.deletePurchaseOrder(formData.value.id)
|
await PurchaseOrderNoApi.deletePurchaseOrderNo(formData.value.id)
|
||||||
router.push({ path: '/purchase/purchaseorder' })
|
router.push({ path: '/purchase/purchaseorder' })
|
||||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
@ -1079,13 +1082,13 @@ onMounted(async () => {
|
|||||||
formData.value.purchaseId != undefined &&
|
formData.value.purchaseId != undefined &&
|
||||||
formData.value.purchaseId != ''
|
formData.value.purchaseId != ''
|
||||||
) {
|
) {
|
||||||
const purchaseOrderDo = await PurchaseOrderApi.getPurchaseOrder(formData.value.purchaseId)
|
const purchaseOrderDo = await PurchaseOrderNoApi.getPurchaseOrderNo(formData.value.purchaseId)
|
||||||
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
formData.value.purchaseNo = purchaseOrderDo.purchaseNo
|
||||||
// 获取物料需求计划信息
|
// 获取物料需求计划信息
|
||||||
const materialPlan = await MaterialPlanApi.getMaterialPlan(purchaseOrderDo.projectMaterialPlanId)
|
// const materialPlan = await MaterialPlanApi.getMaterialPlan(purchaseOrderDo.projectMaterialPlanId)
|
||||||
//获取物料需求计划中的生产计划id,去查询对应子项目
|
// //获取物料需求计划中的生产计划id,去查询对应子项目
|
||||||
// 获取生产计划单中子项目编号
|
// // 获取生产计划单中子项目编号
|
||||||
await handleInitPlanSub(materialPlan.projectPlanId)
|
// await handleInitPlanSub(materialPlan.projectPlanId)
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.value.supplierId != undefined &&
|
formData.value.supplierId != undefined &&
|
||||||
@ -1097,11 +1100,9 @@ onMounted(async () => {
|
|||||||
|
|
||||||
// 获取原始物料信息
|
// 获取原始物料信息
|
||||||
matSimpList.value = await MaterialApi.getSimpList()
|
matSimpList.value = await MaterialApi.getSimpList()
|
||||||
|
var purchaseOrderNoDetailById = await PurchaseOrderNoDetailApi.getPurchaseOrderNoDetailById(formData.value.purchaseId);
|
||||||
// 获取采购订单的物料列表
|
// 获取采购订单的物料列表
|
||||||
formData.value.matItemDOList = (
|
formData.value.matItemDOList = purchaseOrderNoDetailById //await OutsourceStockMaterialApi.getOutsourceStockMaterialPage(queryParams)
|
||||||
await PurchaseOrderMaterialApi.getPurchaseOrderMaterialPage(queryParams) //await OutsourceStockMaterialApi.getOutsourceStockMaterialPage(queryParams)
|
|
||||||
).list
|
|
||||||
// var matTypes = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)
|
// var matTypes = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_TYPE)
|
||||||
// var matUnits = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)
|
// var matUnits = getIntDictOptions(DICT_TYPE.HELI_MATERIAL_UNIT)
|
||||||
// formData.value.matItemDOList.forEach((item) => {
|
// formData.value.matItemDOList.forEach((item) => {
|
||||||
@ -1113,10 +1114,12 @@ onMounted(async () => {
|
|||||||
formData.value.boomItemRemoveList = []
|
formData.value.boomItemRemoveList = []
|
||||||
|
|
||||||
// 获取采购订单加工件数据
|
// 获取采购订单加工件数据
|
||||||
formData.value.boomItemDOList = (
|
formData.value.boomItemDOList = purchaseOrderNoDetailById
|
||||||
await PurchaseOrderBoomApi.getPurchaseOrderBoomPage(queryParams)
|
|
||||||
).list;
|
|
||||||
|
|
||||||
|
if (purchaseOrderNoDetailById!=null){
|
||||||
|
var listElement = purchaseOrderNoDetailById[0];
|
||||||
|
formData.value.projectPlanSubs = [{projectSubCode:listElement.projectSubCode,projectSubId:listElement.projectSubId}]
|
||||||
|
}
|
||||||
// 遍历每个 item,进行属性赋值
|
// 遍历每个 item,进行属性赋值
|
||||||
formData.value.boomItemDOList.forEach((item) => {
|
formData.value.boomItemDOList.forEach((item) => {
|
||||||
if (item) { // 确保 item 存在
|
if (item) { // 确保 item 存在
|
||||||
|
@ -0,0 +1,306 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog :title="dialogTitle" width="85%" v-model="dialogVisible" center>
|
||||||
|
<ContentWrap class="borderxx">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="110px">
|
||||||
|
<el-form-item label="采购单号" prop="purchaseNo">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.purchaseNo" placeholder="采购单号" clearable @keyup.enter="handleQuery"
|
||||||
|
class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="供应商" prop="supplierName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.enter="handleQuery"
|
||||||
|
class="!w-240px" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- <el-form-item label="采购物类型" prop="goodsType">-->
|
||||||
|
<!-- <el-select v-model="queryParams.goodsType" placeholder="下拉选择" clearable class="!w-240px">-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!--v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PURCHASE_GOODS_TYPE)" :key="dict.value"-->
|
||||||
|
<!-- :label="dict.label" :value="dict.value" />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<el-form-item style="margin-left:50px">
|
||||||
|
<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="purchaseOrderTable" v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table"
|
||||||
|
@selection-change="handleSelectionChange" @row-click="clickRow" selection>
|
||||||
|
<el-table-column type="selection" fixed width="60" />
|
||||||
|
<el-table-column fixed label="序号" type="index" align="center" width="60" />
|
||||||
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" fixed min-width="190">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" >
|
||||||
|
{{ scope.row.purchaseNo }}
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="单据日期" align="center" prop="createTime" :formatter="dateFormatter" min-width="180px"
|
||||||
|
fixed>
|
||||||
|
<template #default="scope">
|
||||||
|
{{
|
||||||
|
formatDate(scope.row.createTime, 'YYYY-MM-DD')
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="供应商" align="center" min-width="180" prop="supplierName" fixed />
|
||||||
|
<el-table-column label="采购单类型" align="center" prop="purchaseType" min-width="210">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_PROJECT_PURCHASE_ORDER_NO_TYPE" :value="scope.row.purchaseType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="物料需求计划单号" align="center" prop="materialPlanNo" min-width="220" />
|
||||||
|
<el-table-column label="采购物类型" align="center" prop="goodsType" min-width="180">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_PROJECT_PURCHASE_GOODS_TYPE" :value="scope.row.goodsType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="备注" align="center" prop="description" />
|
||||||
|
<el-table-column label="收货状态" align="center" prop="receivingStatus1" fixed="right" min-width="180">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS" :value="scope.row.receivingStatus1" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="单据状态" align="center" prop="status" fixed="right" min-width="180">-->
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <dict-tag :type="DICT_TYPE.HELI_PURCHASE_ORDER_STATUS" :value="scope.row.status" />-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页 -->
|
||||||
|
<Pagination
|
||||||
|
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList" />
|
||||||
|
</ContentWrap>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="dialogVisible = false" size="large">取 消</el-button>
|
||||||
|
<el-button @click="submitForm" type="success" size="large">保 存</el-button>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
|
import { dateFormatter, formatDate } from '@/utils/formatTime'
|
||||||
|
import download from '@/utils/download'
|
||||||
|
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
|
||||||
|
import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||||
|
import PurchaseOrderForm from './PurchaseOrderForm.vue'
|
||||||
|
import { ElTable } from 'element-plus'
|
||||||
|
|
||||||
|
defineOptions({ name: 'PurchaseOrder' })
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
const router = useRouter()
|
||||||
|
const loading = ref(true) // 列表的加载中
|
||||||
|
const list = ref([]) // 列表的数据
|
||||||
|
const total = ref(0) // 列表的总页数
|
||||||
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
id: undefined,
|
||||||
|
ids: undefined,
|
||||||
|
purchaseNo: undefined,
|
||||||
|
supplierId: undefined,
|
||||||
|
contractNo: undefined,
|
||||||
|
purchaseType: 1,
|
||||||
|
projectMaterialPlanId: undefined,
|
||||||
|
goodsType: undefined,
|
||||||
|
currencyType: undefined,
|
||||||
|
taxRatio: undefined,
|
||||||
|
estimatedPrice: undefined,
|
||||||
|
actualPrice: undefined,
|
||||||
|
status: undefined,
|
||||||
|
receivingStatus: undefined,
|
||||||
|
submitUserId: undefined,
|
||||||
|
submitTime: [],
|
||||||
|
auditor: undefined,
|
||||||
|
auditTime: [],
|
||||||
|
description: undefined,
|
||||||
|
creator: undefined,
|
||||||
|
createTime: undefined
|
||||||
|
})
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
const exportLoading = ref(false) // 导出的加载中
|
||||||
|
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
queryParams.ids = undefined
|
||||||
|
// const data = await PurchaseOrderApi.getPurchaseOrderPage(queryParams)
|
||||||
|
const data = await PurchaseOrderNoApi.getPurchaseOrderNoPage(queryParams)
|
||||||
|
list.value = data.list
|
||||||
|
total.value = data.total
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 提交表单 */
|
||||||
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
|
const submitForm = () => {
|
||||||
|
if (!purchaseOrderSelection.value || purchaseOrderSelection.value.length <= 0) {
|
||||||
|
message.warning(t('common.selectText'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dialogVisible.value = false
|
||||||
|
// 发送操作成功的事件
|
||||||
|
emit('success', purchaseOrderSelection.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNo = 1
|
||||||
|
if (queryParams.createTime !== "Invalid Date" && queryParams.createTime !== "") {
|
||||||
|
queryParams.createTime = formatDate(queryParams.createTime, 'YYYY-MM-DD')
|
||||||
|
}
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryFormRef.value.resetFields()
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
const purchaseOrderTable: any = ref<InstanceType<typeof ElTable>>()
|
||||||
|
const purchaseOrderSelection: any = ref([])
|
||||||
|
|
||||||
|
const handleSelectionChange = (val) => {
|
||||||
|
if (val.length > 1) {
|
||||||
|
purchaseOrderTable.value.clearSelection()
|
||||||
|
purchaseOrderTable.value.toggleRowSelection(val.pop())
|
||||||
|
} else {
|
||||||
|
purchaseOrderSelection.value = val.pop()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// const clickRow = (row: any) => {
|
||||||
|
// if (multipleTable.value) { // 检查 multipleTable 是否已初始化
|
||||||
|
// if (row) {
|
||||||
|
// multipleTable.value.toggleRowSelection(row, undefined);
|
||||||
|
// } else {
|
||||||
|
// multipleTable.value.clearSelection();
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// console.error("multipleTable is not initialized."); // 添加错误日志
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
const clickRow = (row: any) => {
|
||||||
|
if (row) {
|
||||||
|
purchaseOrderTable.value!.toggleRowSelection(row, undefined)
|
||||||
|
} else {
|
||||||
|
purchaseOrderTable.value!.clearSelection()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 添加/修改操作 */
|
||||||
|
const openForm = (type: string, id?: number) => {
|
||||||
|
switch (type) {
|
||||||
|
case 'create':
|
||||||
|
router.push({ path: '/purchase/purchaseorderadd', query: { id: id } })
|
||||||
|
break
|
||||||
|
case 'edit':
|
||||||
|
router.push({ path: '/purchase/purchaseorderedit', query: { id: id } })
|
||||||
|
break
|
||||||
|
case 'detail':
|
||||||
|
router.push({ path: '/purchase/purchaseorderdetail', query: { id: id } })
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 修改收货状态按钮操作 */
|
||||||
|
const editReceivingStatus = async (id: number) => {
|
||||||
|
try {
|
||||||
|
// 提示用户是否保存入库信息
|
||||||
|
await message.confirm('确认完成收货?')
|
||||||
|
// 发起修改
|
||||||
|
await PurchaseOrderApi.updateReceivingStatus(id)
|
||||||
|
message.success(t('common.updateSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = async (id: number) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
await PurchaseOrderApi.deletePurchaseOrder(id)
|
||||||
|
message.success(t('common.delSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
const getIds = async () => {
|
||||||
|
queryParams.ids = []
|
||||||
|
multipleSelection.value.forEach(item => {
|
||||||
|
queryParams.ids.push(item.id)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
const handleExport = async () => {
|
||||||
|
try {
|
||||||
|
// 导出的二次确认
|
||||||
|
await message.exportConfirm()
|
||||||
|
// 发起导出
|
||||||
|
exportLoading.value = true
|
||||||
|
await getIds()
|
||||||
|
const data = await PurchaseOrderApi.exportPurchaseOrder(queryParams)
|
||||||
|
download.excel(data, '采购订单(直接导出).xls')
|
||||||
|
} catch {
|
||||||
|
} finally {
|
||||||
|
exportLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const handleExportWithTax = async () => {
|
||||||
|
try {
|
||||||
|
// 导出的二次确认
|
||||||
|
await message.exportConfirm()
|
||||||
|
// 发起导出
|
||||||
|
exportLoading.value = true
|
||||||
|
await getIds()
|
||||||
|
const data = await PurchaseOrderApi.exportPurchaseOrderWithTax(queryParams)
|
||||||
|
download.excel(data, '采购订单(乘税率导出).xls')
|
||||||
|
} catch {
|
||||||
|
} finally {
|
||||||
|
exportLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** 打开弹窗 */
|
||||||
|
const open = async () => {
|
||||||
|
dialogVisible.value = true
|
||||||
|
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(async () => {
|
||||||
|
await getList()
|
||||||
|
})
|
||||||
|
</script>
|
@ -121,7 +121,12 @@ v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)" :key="dict.value
|
|||||||
<el-option v-for="dict in userInit" :key="dict.id"
|
<el-option v-for="dict in userInit" :key="dict.id"
|
||||||
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
</el-select> -->
|
</el-select> -->
|
||||||
<UserSelect v-model="formData.craftOwner" @update:new-value="handleSelectedUser2" class="!w-265px"/>
|
<!-- <UserSelect v-model="formData.craftOwner" @update:new-value="handleSelectedUser2" class="!w-265px"/>-->
|
||||||
|
<el-select class="!w-265px" v-model="formData.craftOwner" clearable filterable>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in userInit4" :key="dict.id"
|
||||||
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -1648,6 +1653,7 @@ const userInit = ref()
|
|||||||
const userInit1 = ref()
|
const userInit1 = ref()
|
||||||
const userInit2= ref()
|
const userInit2= ref()
|
||||||
const userInit3= ref()
|
const userInit3= ref()
|
||||||
|
const userInit4 = ref()
|
||||||
const mergedArray= ref()
|
const mergedArray= ref()
|
||||||
const mergedArray1= ref()
|
const mergedArray1= ref()
|
||||||
const mergedArray2= ref()
|
const mergedArray2= ref()
|
||||||
@ -1665,12 +1671,15 @@ onMounted(async () => {
|
|||||||
userInit1.value = await UserApi.getDeptName("生产部")
|
userInit1.value = await UserApi.getDeptName("生产部")
|
||||||
userInit2.value = await UserApi.getDeptName("检验部")
|
userInit2.value = await UserApi.getDeptName("检验部")
|
||||||
userInit3.value=await UserApi.getDeptName("采购部")
|
userInit3.value=await UserApi.getDeptName("采购部")
|
||||||
|
userInit4.value=await UserApi.getDeptName("技术部")
|
||||||
// 模具类型下拉列表数据
|
// 模具类型下拉列表数据
|
||||||
mouldTypeList.value = await MouldTypeApi.getSimpList()
|
mouldTypeList.value = await MouldTypeApi.getSimpList()
|
||||||
// 设备信息下拉列表数据
|
// 设备信息下拉列表数据
|
||||||
equipInit.value = await EquipApi.getSimpList()
|
equipInit.value = await EquipApi.getSimpList()
|
||||||
// 获取库存信息
|
// 获取库存信息
|
||||||
formData.value = await PlanApi.getPlan(query.id)
|
formData.value = await PlanApi.getPlan(query.id)
|
||||||
|
|
||||||
|
|
||||||
formData.value.hasCraft = 1
|
formData.value.hasCraft = 1
|
||||||
const data = await ProjectLeaderApi.getProjectLeaderType(4)
|
const data = await ProjectLeaderApi.getProjectLeaderType(4)
|
||||||
const data1 = await ProjectLeaderApi.getProjectLeaderType(5)
|
const data1 = await ProjectLeaderApi.getProjectLeaderType(5)
|
||||||
@ -1793,7 +1802,17 @@ onMounted(async () => {
|
|||||||
formData.value.businessLine = projectInit.businessLine
|
formData.value.businessLine = projectInit.businessLine
|
||||||
formData.value.property = projectInit.property
|
formData.value.property = projectInit.property
|
||||||
formData.value.isUrgency = projectInit.isUrgency
|
formData.value.isUrgency = projectInit.isUrgency
|
||||||
|
console.log(projectInit.orderTime)
|
||||||
|
console.log(formData.value.auditDate)
|
||||||
|
if (formData.value.auditDate==null||formData.value.auditDate==''){
|
||||||
|
formData.value.auditDate=projectInit.orderTime
|
||||||
|
}
|
||||||
|
if (formData.value.editorDate==null||formData.value.editorDate==''){
|
||||||
|
formData.value.editorDate=projectInit.orderTime
|
||||||
|
}
|
||||||
|
if (formData.value.approveDate==null||formData.value.approveDate==''){
|
||||||
|
formData.value.approveDate=projectInit.orderTime
|
||||||
|
}
|
||||||
// 操作日志
|
// 操作日志
|
||||||
let logParams = {
|
let logParams = {
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
|
@ -166,7 +166,7 @@
|
|||||||
<td colspan="1" style="max-width: 90px;min-width: 90px">{{ item.compositionName }} </td>
|
<td colspan="1" style="max-width: 90px;min-width: 90px">{{ item.compositionName }} </td>
|
||||||
<td colspan="2" style="max-width: 180px;min-width: 200px">{{equipInit.find((equip) => equip.id == item.deviceModel)?.name}} </td>
|
<td colspan="2" style="max-width: 180px;min-width: 200px">{{equipInit.find((equip) => equip.id == item.deviceModel)?.name}} </td>
|
||||||
<td colspan="1" style="max-width: 60px;min-width: 60px">{{item.amount}} </td>
|
<td colspan="1" style="max-width: 60px;min-width: 60px">{{item.amount}} </td>
|
||||||
<td colspan="1" style="max-width: 60px;min-width: 60px">{{}} </td>
|
<td colspan="1" style="max-width: 60px;min-width: 60px">{{item.remark}} </td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<!-- <tbody v-if="formData.projectOrderSubs.length<4">
|
<!-- <tbody v-if="formData.projectOrderSubs.length<4">
|
||||||
|
Loading…
Reference in New Issue
Block a user