问题修改
This commit is contained in:
parent
daca9ec9f8
commit
a8a4adb162
@ -124,9 +124,8 @@ public class MaterialController {
|
||||
}
|
||||
@GetMapping({"/getbzjList"})
|
||||
@Operation(summary = "TODO:获取物料标准件信息列表", description = "只包含被开启的物料,主要用于前端的下拉选项")
|
||||
public CommonResult<List<Map<String, Object>> > getbzjList() {
|
||||
List<Map<String, Object>> list = materialService.getbzjList();
|
||||
// 拼接数据
|
||||
return success(list);
|
||||
public CommonResult<PageResult<MaterialRespVO> > getbzjList(@Valid MaterialPageReqVO pageReqVO) {
|
||||
PageResult<MaterialDO> pageResult = materialService.getbzjList(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, MaterialRespVO.class));
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,6 @@ public class MaterialPlanBoomDO extends BaseDO {
|
||||
/**
|
||||
* 物料id
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private Long materialId;
|
||||
/**
|
||||
* 零件重量
|
||||
|
@ -136,6 +136,8 @@ public class PurchaseOrderNoDO extends BaseDO {
|
||||
@TableField(exist = false)
|
||||
private String username;
|
||||
@TableField(exist = false)
|
||||
private String auditorName;
|
||||
@TableField(exist = false)
|
||||
private String userMobile;
|
||||
@TableField(exist = false)
|
||||
private String contactName;
|
||||
@ -150,6 +152,10 @@ public class PurchaseOrderNoDO extends BaseDO {
|
||||
@TableField(exist = false)
|
||||
private Integer receivingStatus1;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal estimatedPriceSum;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal purchaseAmountSum;
|
||||
@TableField(exist = false)
|
||||
private List<PurchaseOrderNoDetailDO> PurchaseOrderNoDetailList;
|
||||
/**
|
||||
* 是否打印
|
||||
|
@ -170,6 +170,8 @@ public class PurchaseOrderNoDetailDO extends BaseDO {
|
||||
*/
|
||||
private Long procedureId;
|
||||
@TableField(exist = false)
|
||||
private String blueprintNo;
|
||||
@TableField(exist = false)
|
||||
private Long matId;
|
||||
@TableField(exist = false)
|
||||
private String matName;
|
||||
@ -184,6 +186,8 @@ public class PurchaseOrderNoDetailDO extends BaseDO {
|
||||
@TableField(exist = false)
|
||||
private BigDecimal matRest;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal unitPrice;
|
||||
@TableField(exist = false)
|
||||
private BigDecimal requireAmount;
|
||||
@TableField(exist = false)
|
||||
private LocalDateTime requireArriveTime;
|
||||
|
@ -66,6 +66,7 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
||||
.orderByDesc(MaterialDO::getId);
|
||||
query.like(!StringUtils.isEmpty(reqVO.getName()), MaterialDO::getName, reqVO.getName())
|
||||
.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())
|
||||
@ -98,8 +99,35 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
|
||||
|
||||
}
|
||||
|
||||
default List<Map<String, Object>> getbzjList(){
|
||||
return selectMaps(new QueryWrapper<MaterialDO>().select("id", "name","short_name","code","material_type","spec","unit","brand").eq("material_type", 5));
|
||||
default PageResult<MaterialDO> getbzjList(MaterialPageReqVO reqVO){
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -172,13 +172,13 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
||||
default PageResult<MaterialPlanBoomDO> getStandardPartsPages(MaterialPlanPageReqVO pageReqVO){
|
||||
MPJLambdaWrapper<MaterialPlanBoomDO> query = new MPJLambdaWrapper<>();
|
||||
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")
|
||||
.leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId)
|
||||
.leftJoin(ProjectOrderDO.class,"b",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
|
||||
.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(MaterialDO.class,"m",MaterialDO::getId,MatReqDetailDO::getMaterialId)
|
||||
.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("base_material m ON (m.id = mat.material_id and m.tenant_id = 2) ")
|
||||
.disableSubLogicDel()
|
||||
.groupBy(MaterialPlanBoomDO::getId)
|
||||
.orderByDesc(MaterialPlanBoomDO::getCreateTime);
|
||||
|
@ -58,7 +58,7 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX<PurchaseOrderNo
|
||||
MPJLambdaWrapper<PurchaseOrderNoDetailDO> query = new MPJLambdaWrapper<>();
|
||||
|
||||
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(ProcessBomDetailDO.class,"bom", ProcessBomDetailDO::getId, PurchaseOrderNoDetailDO::getBoomDetailId)
|
||||
.leftJoin(MaterialPlanBoomDO.class,"plan", MaterialPlanBoomDO::getId, PurchaseOrderNoDetailDO::getProjectMaterialPlanBoomId)
|
||||
|
@ -59,5 +59,7 @@ public interface MaterialService {
|
||||
|
||||
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
|
||||
public List<Map<String, Object>> getbzjList() {
|
||||
return materialMapper.getbzjList(); }
|
||||
public PageResult<MaterialDO> getbzjList(MaterialPageReqVO pageReqVO) {
|
||||
return materialMapper.getbzjList( pageReqVO);
|
||||
}
|
||||
|
||||
private void checkData(List<MaterialExcelVO> materialExcelVOList) {
|
||||
// 基础校验
|
||||
|
@ -422,7 +422,7 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
|
||||
queryWrapper.eq(MaterialPlanBoomDO::getProjectMaterialPlanId, id);
|
||||
materialPlanBoomMapper.delete(queryWrapper);
|
||||
materialPlanMapper.deleteById(id);
|
||||
return null;
|
||||
return CommonResult.success( true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -39,6 +39,8 @@ import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
@ -315,6 +317,49 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
|
||||
purchaseOrderNoDO.setDeliveryAddress("浙江省杭州市余杭区良渚街道刘林圩路5号");
|
||||
purchaseOrderNoDO.setBuyer("杭州合立机械有限公司");
|
||||
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);
|
||||
}
|
||||
return CommonResult.success(purchaseOrderNoDO);
|
||||
@ -339,6 +384,7 @@ public class PurchaseOrderNoServiceImpl implements PurchaseOrderNoService {
|
||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoId, null);
|
||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseOrderNoDetailId,null);
|
||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getOrderStatus,1);
|
||||
lambdaUpdateWrapper.set(PurchaseOrderMakeDetailDO::getPurchaseNo,null);
|
||||
purchaseOrderMakeDetailMapper.update(lambdaUpdateWrapper);
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ public class StorageInServiceImpl implements StorageInService {
|
||||
for (StorageInDetailDO storageInDetailDO : storageInDetailDOS) {
|
||||
LambdaQueryWrapper<PurchaseOrderNoDetailDO> wrapper1 = new LambdaQueryWrapper<>();
|
||||
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageId,storageInDetailDO.getStorageNoId());
|
||||
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageMatId,storageInDetailDO.getMaterialId());
|
||||
wrapper1.eq(PurchaseOrderNoDetailDO::getStorageMatId,storageInDetailDO.getId());
|
||||
PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectOne(wrapper1);
|
||||
if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){
|
||||
LambdaUpdateWrapper<PurchaseOrderNoDetailDO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
|
@ -1,15 +1,18 @@
|
||||
package com.chanko.yunxi.mes.module.heli.service.taskdispatch;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
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.ServiceException;
|
||||
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.mybatis.core.query.LambdaQueryWrapperX;
|
||||
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.ygjx.vo.YgjxPageReqVO;
|
||||
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.plan.PlanDO;
|
||||
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.serialnumber.SerialNumberDO;
|
||||
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.plan.PlanMapper;
|
||||
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.taskdispatch.TaskDispatchDetailMapper;
|
||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper;
|
||||
@ -101,6 +106,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
private bdgzsomthingMapper bdgzsomthingMapper;
|
||||
@Resource
|
||||
private ProcedureMapper procedureMapper;
|
||||
@Resource
|
||||
private ProcessBomDetailMapper processBomDetailMapper;
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createTaskDispatch(TaskDispatchSaveReqVO createReqVO) {
|
||||
@ -141,7 +148,28 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
if(!updateObj.canOperate(operateTypeEnum)){
|
||||
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 (updateReqVO.getDispatchType() != null && updateReqVO.getDispatchType().equals("ASSEMBLE")){
|
||||
updateReqVO.getTaskDispatchDetailOwnerDOList().forEach(taskDispatchDetailDO -> {
|
||||
@ -437,10 +465,20 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
@Override
|
||||
public void deleteTaskDispatchDetailOwner(Long id) {
|
||||
|
||||
taskDispatchDetailMapper.deleteByOwnerId(id,null);
|
||||
taskDispatchDetailOwnerMapper.deleteById(id);
|
||||
}
|
||||
|
@ -67,6 +67,6 @@ export const deleteMaterial = async (id: number) => {
|
||||
export const exportMaterial = async (params) => {
|
||||
return await request.download({ url: `/heli/material/export-excel`, params })
|
||||
}
|
||||
export const getbzjList = async () => {
|
||||
return await request.get({ url: `/heli/material/getbzjList` })
|
||||
export const getbzjList = async (params) => {
|
||||
return await request.get({ url: `/heli/material/getbzjList`,params })
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>物料需求计划管理</span>
|
||||
<span>标准件库存</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
@ -62,14 +62,21 @@
|
||||
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180px" />
|
||||
<el-table-column min-width="200px" align="center" >
|
||||
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
||||
<template #default="{ row, $index }">
|
||||
<el-form-item :prop="`${$index}.matId`" class="mb-0px!" >
|
||||
<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-select>
|
||||
<!-- <MaterialSelect v-model="row.matId" @update:newValue="handleSelected($index, $event)" clearable/>-->
|
||||
<!-- <template #default="{ row, $index }">-->
|
||||
<!-- <el-form-item :prop="`${$index}.matId`" class="mb-0px!" >-->
|
||||
<!-- <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-select>-->
|
||||
<!--<!– <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>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料名称" align="center" prop="matName" min-width="180px" />
|
||||
@ -100,6 +107,7 @@
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
v-if="scope.row.isPurYard==2|| scope.row.isPurYard==5"
|
||||
@click="operation('del',scope.row.id)"
|
||||
>
|
||||
删除
|
||||
@ -116,6 +124,7 @@
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-card>
|
||||
<matLog ref="matLogRef" @success="getMat" />
|
||||
|
||||
</template>
|
||||
|
||||
@ -123,6 +132,7 @@
|
||||
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
||||
import { dateFormatter1} from '@/utils/formatTime'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import matLog from './storageLog.vue'
|
||||
|
||||
|
||||
defineOptions({ name: 'MaterialPlan' })
|
||||
@ -131,17 +141,14 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
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 {ElTable} from "element-plus";
|
||||
import {getStandardPartsPages} from "@/api/heli/materialplan";
|
||||
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 list = ref([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const matLogRef = ref()
|
||||
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
@ -168,9 +175,9 @@ const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
const multipleTable = ref<InstanceType<typeof ElTable>>()
|
||||
|
||||
const handleSelected = (currentIndex, newValue: any) => {
|
||||
list.value[currentIndex].matId = newValue?.id
|
||||
}
|
||||
// const handleSelected = (currentIndex, newValue: any) => {
|
||||
// list.value[currentIndex].matId = newValue?.id
|
||||
// }
|
||||
const jump = async () => {
|
||||
router.push({ path: '/purchase/matreq' })
|
||||
// tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||
@ -186,6 +193,19 @@ const getList = async () => {
|
||||
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 () => {
|
||||
try {
|
||||
console.log("开始提交"); // 调试点1:确认函数是否触发
|
||||
@ -305,7 +325,7 @@ const userInit = ref()
|
||||
/** 初始化 **/
|
||||
onMounted(async () => {
|
||||
//用户列表数据
|
||||
materialSelectList.value = await MaterialApi.getbzjList() ;
|
||||
// materialSelectList.value = await MaterialApi.getbzjList() ;
|
||||
getList()
|
||||
})
|
||||
</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>
|
@ -24,12 +24,12 @@
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="单据日期" prop="ordDate">
|
||||
<el-form-item label="入库日期" prop="ordDate">
|
||||
<el-date-picker
|
||||
v-model="formData.ordDate"
|
||||
type="date"
|
||||
value-format="x"
|
||||
placeholder="单据日期"
|
||||
placeholder="入库日期"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="storageNo" :inline="true" label-width="120px">
|
||||
<el-form-item label="入库单号" prop="storageNo">
|
||||
<el-input
|
||||
v-model="queryParams.purchaseNo" placeholder="采购单号" clearable @keyup.enter="handleQuery"
|
||||
v-model="queryParams.purchaseNo" placeholder="入库单号" clearable @keyup.enter="handleQuery"
|
||||
class="!w-240px" />
|
||||
</el-form-item>
|
||||
<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 #default="{ row, $index }">
|
||||
<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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
@ -87,7 +87,6 @@ import { dateFormatter1} from '@/utils/formatTime'
|
||||
import * as MaterialPlanApi from '@/api/heli/materialplan'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import dayjs from "dayjs";
|
||||
import {delMaterial} from "@/api/heli/materialplan";
|
||||
|
||||
|
||||
defineOptions({ name: 'MaterialPlan' })
|
||||
@ -171,11 +170,12 @@ const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
|
||||
// 发起删除
|
||||
await MaterialPlanApi.delMaterial(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
await getList()
|
||||
} catch { }
|
||||
}
|
||||
const setDefaultDate = () => {
|
||||
|
@ -1652,6 +1652,8 @@ const goback = () => {
|
||||
var listdetail = ref([]);
|
||||
/** 删除子项操作 */
|
||||
const onDeleteItem = async (row,index) => {
|
||||
let id = row.id
|
||||
if (id) await TaskDispatchApi.deleteTaskDispatchDetail(id)
|
||||
var list = [];
|
||||
listdetail.value = [];
|
||||
var indexs = 1;
|
||||
@ -1672,8 +1674,6 @@ const onDeleteItem = async (row,index) => {
|
||||
}
|
||||
checkList.value = list;
|
||||
checkListTemp.value = checkList.value;
|
||||
let id = row.id
|
||||
if (id) await TaskDispatchApi.deleteTaskDispatchDetail(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
}
|
||||
const handleOutsourcingChange= async (row: any) => {
|
||||
|
Loading…
Reference in New Issue
Block a user