添加自动出入库逻辑
This commit is contained in:
parent
917680e1c6
commit
1af7bb7430
@ -66,9 +66,8 @@ public class OrderYsController {
|
|||||||
@Operation(summary = "获得应收记录")
|
@Operation(summary = "获得应收记录")
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
@PreAuthorize("@ss.hasPermission('heli:order-ys:query')")
|
@PreAuthorize("@ss.hasPermission('heli:order-ys:query')")
|
||||||
public CommonResult<OrderYsRespVO> getOrderYs(@RequestParam("id") Integer id) {
|
public CommonResult<OrderYsDO> getOrderYs(@RequestParam("id") Integer id) {
|
||||||
OrderYsDO orderYs = orderYsService.getOrderYs(id);
|
return success(orderYsService.getOrderYs(id));
|
||||||
return success(BeanUtils.toBean(orderYs, OrderYsRespVO.class));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
|
@ -59,14 +59,14 @@ public class OrderYsRespVO {
|
|||||||
@ExcelProperty("备注")
|
@ExcelProperty("备注")
|
||||||
private String rem;
|
private String rem;
|
||||||
|
|
||||||
private BigDecimal shouFuKuanBiLi;
|
private BigDecimal shouFuKuan;
|
||||||
|
|
||||||
private BigDecimal twoFuKuanBiLi;
|
private BigDecimal twoFuKuan;
|
||||||
|
|
||||||
private BigDecimal threeFuKuanBiLi;
|
private BigDecimal threeFuKuan;
|
||||||
|
|
||||||
private BigDecimal fourFuKuanBiLi;
|
private BigDecimal fourFuKuan;
|
||||||
private BigDecimal fiveFuKuanBiLi;
|
private BigDecimal fiveFuKuan;
|
||||||
private BigDecimal sixFuKuanBiLi;
|
private BigDecimal sixFuKuan;
|
||||||
|
|
||||||
}
|
}
|
@ -171,4 +171,8 @@ public class PartPurchaseOrderPageRespVO extends BaseDO {
|
|||||||
* 单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1
|
* 单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1
|
||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
private String isFoam;
|
||||||
|
private Long projectId;
|
||||||
|
private Long projectPlanId;
|
||||||
|
private String customerId;
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
|||||||
.disableLogicDel()
|
.disableLogicDel()
|
||||||
.disableSubLogicDel()
|
.disableSubLogicDel()
|
||||||
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
|
.eq(PurchaseOrderMakeDO::getGoodsType, 2)
|
||||||
|
.eq(PurchaseOrderMakeDetailDO::getDeleted, 0)
|
||||||
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
|
.eq(Objects.nonNull(pageReqVO.getPurchaseOrderId()), PurchaseOrderMakeDO::getId, pageReqVO.getPurchaseOrderId())
|
||||||
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
|
.eq(StringUtils.isNotBlank(pageReqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, pageReqVO.getContractNo())
|
||||||
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
|
.eq(Objects.nonNull(pageReqVO.getDocumentStatus()), PurchaseOrderMakeDO::getStatus, pageReqVO.getDocumentStatus())
|
||||||
@ -103,8 +104,6 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
|||||||
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
.like(Objects.nonNull(pageReqVO.getOwnerName()), AdminUserDO::getNickname, pageReqVO.getOwnerName())
|
||||||
.like(Objects.nonNull(pageReqVO.getSupplierName()), SupplierDO::getName, pageReqVO.getSupplierName());
|
.like(Objects.nonNull(pageReqVO.getSupplierName()), SupplierDO::getName, pageReqVO.getSupplierName());
|
||||||
|
|
||||||
String sqlStr= query.getTargetSql();
|
|
||||||
|
|
||||||
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query);
|
PageResult<PartPurchaseOrderPageRespVO> pageResult = selectJoinPage(pageReqVO, PartPurchaseOrderPageRespVO.class, query);
|
||||||
return pageResult;
|
return pageResult;
|
||||||
}
|
}
|
||||||
|
@ -134,14 +134,25 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
purchaseOrderNoDetailDO.setUpdateTime(null);
|
purchaseOrderNoDetailDO.setUpdateTime(null);
|
||||||
purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
purchaseOrderNoDetailDO.setPurchaseOrderId(purchaseOrderId);
|
||||||
purchaseOrderNoDetailDO.setPurchaseRemAmount(detailDO.getPurchaseAmount());
|
purchaseOrderNoDetailDO.setPurchaseRemAmount(detailDO.getPurchaseAmount());
|
||||||
|
PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(detailDO.getId());
|
||||||
|
if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){
|
||||||
|
PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId());
|
||||||
|
if (ObjectUtil.isNotEmpty(orderMakeDO)){
|
||||||
|
purchaseOrderNoDetailDO.setProjectId(orderMakeDO.getProjectId());
|
||||||
|
purchaseOrderNoDetailDO.setProjectPlanId(orderMakeDO.getProjectPlanId());
|
||||||
|
purchaseOrderNoDetailDO.setCustomerId(orderMakeDO.getCustomerId());
|
||||||
|
}
|
||||||
|
}
|
||||||
purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetailDO);
|
purchaseOrderNoDetailMapper.insert(purchaseOrderNoDetailDO);
|
||||||
long purchaseOrderDetailId = purchaseOrderNoDetailDO.getId();
|
long purchaseOrderDetailId = purchaseOrderNoDetailDO.getId();
|
||||||
|
|
||||||
|
|
||||||
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
|
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
|
||||||
purchaseOrderMakeDetailDO.setId(detailDO.getId());
|
purchaseOrderMakeDetailDO.setId(detailDO.getId());
|
||||||
purchaseOrderMakeDetailDO.setOrderStatus(2);
|
purchaseOrderMakeDetailDO.setOrderStatus(2);
|
||||||
purchaseOrderMakeDetailDO.setPurchaseOrderNoId(purchaseOrderId);
|
purchaseOrderMakeDetailDO.setPurchaseOrderNoId(purchaseOrderId);
|
||||||
purchaseOrderMakeDetailDO.setPurchaseOrderNoDetailId(purchaseOrderDetailId);
|
purchaseOrderMakeDetailDO.setPurchaseOrderNoDetailId(purchaseOrderDetailId);
|
||||||
|
purchaseOrderMakeDetailDO.setPurchaseNo(purchaseOrderNoDO.getPurchaseNo());
|
||||||
purchaseOrderMakeDetailMapper.updateById(purchaseOrderMakeDetailDO);
|
purchaseOrderMakeDetailMapper.updateById(purchaseOrderMakeDetailDO);
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -165,10 +176,12 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
|
|
||||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
|
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", id);
|
||||||
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
materialPlanBoomDOs.forEach(materialPlanBoomDO -> {
|
||||||
MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO();
|
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||||
materialPlanBoom.setId(materialPlanBoomDO.getId());
|
updateWrapper.eq("id", materialPlanBoomDO.getId())
|
||||||
materialPlanBoom.setMplanStatus(2);
|
.set("mplan_status", 2)
|
||||||
materialPlanBoomMapper.updateById(materialPlanBoom);
|
.set("rej_remark", null);
|
||||||
|
|
||||||
|
materialPlanBoomMapper.update(updateWrapper);
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -181,11 +194,9 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO);
|
||||||
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO);
|
||||||
|
|
||||||
List<PurchaseOrderMakeDetailDO> list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId());
|
LambdaUpdateWrapper<PurchaseOrderMakeDetailDO> wrapper = new LambdaUpdateWrapper<>();
|
||||||
list.forEach(detailDO -> {
|
wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId());
|
||||||
purchaseOrderNoDetailMapper.deleteById(detailDO);
|
purchaseOrderMakeDetailMapper.delete(wrapper);
|
||||||
});
|
|
||||||
|
|
||||||
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
List<MaterialPlanBoomDO> materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId());
|
||||||
materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
materialPlanBoomDOs.forEach(materialPlanBoom -> {
|
||||||
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<MaterialPlanBoomDO> updateWrapper = new UpdateWrapper<>();
|
||||||
@ -357,13 +368,13 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
|
|||||||
purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight());
|
purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight());
|
||||||
purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId());
|
purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId());
|
||||||
purchaseOrderMakeDetailDO.setIsFoam(updateReqVO.getIsFoam());
|
purchaseOrderMakeDetailDO.setIsFoam(updateReqVO.getIsFoam());
|
||||||
purchaseOrderMakeDetailDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
|
|
||||||
purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO);
|
purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO);
|
||||||
long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId();
|
long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId();
|
||||||
|
|
||||||
MaterialPlanBoomDO materialPlanBoomDO = new MaterialPlanBoomDO();
|
MaterialPlanBoomDO materialPlanBoomDO = new MaterialPlanBoomDO();
|
||||||
materialPlanBoomDO.setId(updateReqVO.getId());
|
materialPlanBoomDO.setId(updateReqVO.getId());
|
||||||
materialPlanBoomDO.setMplanStatus(1);
|
materialPlanBoomDO.setMplanStatus(1);
|
||||||
|
materialPlanBoomDO.setRejRemark("");
|
||||||
materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId);
|
materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId);
|
||||||
materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
|
materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
|
||||||
materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId);
|
materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId);
|
||||||
|
@ -10,19 +10,29 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.Materi
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail.MaterialPlanDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
|
||||||
import com.chanko.yunxi.mes.module.heli.service.procedure.ProcedureService;
|
import com.chanko.yunxi.mes.module.heli.service.procedure.ProcedureService;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.storage.StorageService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*;
|
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordernodetail.vo.*;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
@ -34,6 +44,9 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.Purchase
|
|||||||
|
|
||||||
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
|
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
|
||||||
|
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN;
|
||||||
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_OUT;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,6 +70,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
private MaterialMapper materialMapper;
|
private MaterialMapper materialMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private ProcessBomMapper pocessBomMapper;
|
private ProcessBomMapper pocessBomMapper;
|
||||||
|
@Resource
|
||||||
|
private SerialNumberService serialNumberService;
|
||||||
|
@Resource
|
||||||
|
private StorageMapper storageMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMatMapper storageMatMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageService storageService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) {
|
public Long createPurchaseOrderNoDetail(PurchaseOrderNoDetailSaveReqVO createReqVO) {
|
||||||
@ -124,6 +147,36 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
@Transactional
|
@Transactional
|
||||||
public CommonResult<Boolean> receiveGoods(List<PurchaseOrderNoDetailDO> list) {
|
public CommonResult<Boolean> receiveGoods(List<PurchaseOrderNoDetailDO> list) {
|
||||||
List<MaterialDO> materialDOList=new ArrayList<MaterialDO>();
|
List<MaterialDO> materialDOList=new ArrayList<MaterialDO>();
|
||||||
|
//自动生成入库单
|
||||||
|
StorageDO storageDO = new StorageDO();
|
||||||
|
storageDO.setStockType(1);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
|
||||||
|
// 入库前缀
|
||||||
|
storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
storageDO.setStatus(2);
|
||||||
|
storageDO.setKeeper(getLoginUser().getId());
|
||||||
|
storageDO.setKeeperTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(storageDO);
|
||||||
|
//自动生成出库单
|
||||||
|
StorageDO out = new StorageDO();
|
||||||
|
out.setStockType(2);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1);
|
||||||
|
// 出库前缀
|
||||||
|
out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumber);
|
||||||
|
out.setStatus(2);
|
||||||
|
out.setOutbound(getLoginUser().getId());
|
||||||
|
out.setOutboundTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(out);
|
||||||
|
//入库物料集合
|
||||||
|
ArrayList<StorageMatDO> storageMatDOS = new ArrayList<>();
|
||||||
|
//出库库物料集合
|
||||||
|
ArrayList<StorageMatDO> outList = new ArrayList<>();
|
||||||
for (PurchaseOrderNoDetailDO detailDO : list) {
|
for (PurchaseOrderNoDetailDO detailDO : list) {
|
||||||
PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId());
|
PurchaseOrderNoDetailDO byId = purchaseOrderNoDetailMapper.selectById(detailDO.getId());
|
||||||
if (ObjectUtil.isNotEmpty(byId)){
|
if (ObjectUtil.isNotEmpty(byId)){
|
||||||
@ -134,6 +187,16 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
}
|
}
|
||||||
byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts()));
|
byId.setPurchaseRemAmount(byId.getPurchaseRemAmount().subtract(detailDO.getPurchaseRemAmounts()));
|
||||||
purchaseOrderNoDetailMapper.updateById(byId);
|
purchaseOrderNoDetailMapper.updateById(byId);
|
||||||
|
StorageMatDO storageMatDO = new StorageMatDO();
|
||||||
|
StorageMatDO outMat = new StorageMatDO();
|
||||||
|
storageMatDO.setStockId(storageDO.getId());
|
||||||
|
storageMatDO.setStorageOkQty(detailDO.getPurchaseRemAmounts());
|
||||||
|
storageMatDO.setProjectNo(byId.getProjectPlanSubId().toString());
|
||||||
|
storageMatDO.setProjectSubName(byId.getName());
|
||||||
|
outMat.setStockId(out.getId());
|
||||||
|
outMat.setStorageOkQty(detailDO.getPurchaseRemAmounts());
|
||||||
|
outMat.setProjectNo(byId.getProjectPlanSubId().toString());
|
||||||
|
outMat.setProjectSubName(byId.getName());
|
||||||
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId());
|
ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(detailDO.getBoomDetailId());
|
||||||
if (ObjectUtil.isNotEmpty(bomDetailDO)){
|
if (ObjectUtil.isNotEmpty(bomDetailDO)){
|
||||||
String bomCode="";
|
String bomCode="";
|
||||||
@ -150,9 +213,7 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(bomDetailDO.getBlueprintNo())){
|
if (ObjectUtil.isNotEmpty(bomDetailDO.getBlueprintNo())){
|
||||||
if (ObjectUtil.isNotEmpty(processBomDO.getBlueprintNo())){
|
|
||||||
blueprintNo=bomDetailDO.getBlueprintNo();
|
blueprintNo=bomDetailDO.getBlueprintNo();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(detailDO.getProjectMaterialPlanBoomId());
|
MaterialPlanBoomDO boomDO = materialPlanBoomMapper.selectById(detailDO.getProjectMaterialPlanBoomId());
|
||||||
if (ObjectUtil.isNotEmpty(boomDO)){
|
if (ObjectUtil.isNotEmpty(boomDO)){
|
||||||
@ -170,13 +231,25 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe
|
|||||||
materialDO.setVirtualPart("Y");
|
materialDO.setVirtualPart("Y");
|
||||||
MaterialDO material = materialMapper.selectMaterial(code);
|
MaterialDO material = materialMapper.selectMaterial(code);
|
||||||
if (ObjectUtil.isEmpty(material)){
|
if (ObjectUtil.isEmpty(material)){
|
||||||
materialDOList.add(materialDO);
|
// materialDOList.add(materialDO);
|
||||||
|
materialMapper.insert(materialDO);
|
||||||
|
storageMatDO.setMatId(materialDO.getId());
|
||||||
|
outMat.setMatId(materialDO.getId());
|
||||||
|
}else {
|
||||||
|
storageMatDO.setMatId(material.getId());
|
||||||
|
outMat.setMatId(material.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
storageMatDOS.add(storageMatDO);
|
||||||
|
outList.add(outMat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
materialMapper.insertBatch(materialDOList);
|
storageMatMapper.insertBatch(storageMatDOS);
|
||||||
|
storageMatMapper.insertBatch(outList);
|
||||||
|
storageService.updateMatLogList(storageDO.getId(),2);
|
||||||
|
storageService.updateMatLogList(out.getId(),2);
|
||||||
|
|
||||||
|
// materialMapper.insertBatch(materialDOList);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,11 +8,17 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.storageindetail.vo.Stor
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO;
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storageindetail.StorageInDetailDO;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
|
||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storageindetail.StorageInDetailMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.enums.CodeEnum;
|
||||||
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
|
||||||
|
import com.chanko.yunxi.mes.module.heli.service.storage.StorageService;
|
||||||
import com.sun.corba.se.spi.ior.IdentifiableFactory;
|
import com.sun.corba.se.spi.ior.IdentifiableFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@ -22,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -34,8 +41,8 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
|
|||||||
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper;
|
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagein.StorageInMapper;
|
||||||
|
|
||||||
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PURCHASE_ORDER;
|
import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN;
|
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.*;
|
||||||
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -57,6 +64,12 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
private SerialNumberService serialNumberService;
|
private SerialNumberService serialNumberService;
|
||||||
@Resource
|
@Resource
|
||||||
private PurchaseOrderNoMapper purchaseOrderNoMapper;
|
private PurchaseOrderNoMapper purchaseOrderNoMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMapper storageMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageMatMapper storageMatMapper;
|
||||||
|
@Resource
|
||||||
|
private StorageService storageService;
|
||||||
@Override
|
@Override
|
||||||
public Long createStorageIn(StorageInSaveReqVO createReqVO) {
|
public Long createStorageIn(StorageInSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -185,6 +198,10 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
}
|
}
|
||||||
StorageInDO storageInDO = new StorageInDO();
|
StorageInDO storageInDO = new StorageInDO();
|
||||||
|
|
||||||
|
//入库物料集合
|
||||||
|
ArrayList<StorageMatDO> storageMatDOS = new ArrayList<>();
|
||||||
|
//出库库物料集合
|
||||||
|
ArrayList<StorageMatDO> outList = new ArrayList<>();
|
||||||
// 月度流水号
|
// 月度流水号
|
||||||
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
SerialNumberDO serialNumberDO = new SerialNumberDO();
|
||||||
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
@ -195,8 +212,54 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
storageInDO.setIsPrint("N");
|
storageInDO.setIsPrint("N");
|
||||||
storageInDO.setOrdDate(new Date());
|
storageInDO.setOrdDate(new Date());
|
||||||
storageInMapper.insert(storageInDO);
|
storageInMapper.insert(storageInDO);
|
||||||
|
// 回写序列记录
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO);
|
||||||
|
//自动生成入库单
|
||||||
|
StorageDO storageDO = new StorageDO();
|
||||||
|
storageDO.setStockType(1);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumberDO1 = serialNumberService.getSerialNumber(CodeEnum.STOCK_IN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumberDO1.setSerialNumber(serialNumberDO1.getSerialNumber()+1);
|
||||||
|
// 入库前缀
|
||||||
|
storageDO.setStockNo(STOCK_IN.getCode(serialNumberDO1.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumberDO1);
|
||||||
|
storageDO.setStatus(2);
|
||||||
|
storageDO.setKeeper(getLoginUser().getId());
|
||||||
|
storageDO.setKeeperTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(storageDO);
|
||||||
|
//自动生成出库单
|
||||||
|
StorageDO out = new StorageDO();
|
||||||
|
out.setStockType(2);
|
||||||
|
// 月度流水号
|
||||||
|
SerialNumberDO serialNumber = serialNumberService.getSerialNumber(CodeEnum.STOCK_OUT.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
|
||||||
|
serialNumber.setSerialNumber(serialNumber.getSerialNumber()+1);
|
||||||
|
// 出库前缀
|
||||||
|
out.setStockNo(STOCK_OUT.getCode(serialNumber.getSerialNumber().toString()));
|
||||||
|
serialNumberService.updateSerialNumber(serialNumber);
|
||||||
|
out.setStatus(2);
|
||||||
|
out.setOutbound(getLoginUser().getId());
|
||||||
|
out.setOutboundTime(LocalDateTime.now());
|
||||||
|
storageMapper.insert(out);
|
||||||
List<StorageInDetailDO> storageInDetailDOList = new ArrayList<>();
|
List<StorageInDetailDO> storageInDetailDOList = new ArrayList<>();
|
||||||
for (PurchaseOrderNoDetailDO orderNoDetailDO : list) {
|
for (PurchaseOrderNoDetailDO orderNoDetailDO : list) {
|
||||||
|
//入库明细
|
||||||
|
StorageMatDO storageMatDO = new StorageMatDO();
|
||||||
|
storageMatDO.setStockId(storageDO.getId());
|
||||||
|
storageMatDO.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts());
|
||||||
|
storageMatDO.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString());
|
||||||
|
storageMatDO.setProjectSubName(orderNoDetailDO.getName());
|
||||||
|
storageMatDO.setMatId(orderNoDetailDO.getMaterialId());
|
||||||
|
storageMatDOS.add(storageMatDO);
|
||||||
|
//出库明细
|
||||||
|
StorageMatDO outMat = new StorageMatDO();
|
||||||
|
outMat.setStockId(out.getId());
|
||||||
|
outMat.setStorageOkQty(orderNoDetailDO.getPurchaseRemAmounts());
|
||||||
|
outMat.setProjectNo(ObjectUtil.isEmpty(orderNoDetailDO.getProjectPlanSubId())?null:orderNoDetailDO.getProjectPlanSubId().toString());
|
||||||
|
outMat.setProjectSubName(orderNoDetailDO.getName());
|
||||||
|
outMat.setMatId(orderNoDetailDO.getMaterialId());
|
||||||
|
outList.add(outMat);
|
||||||
|
|
||||||
|
|
||||||
StorageInDetailDO storageInDetailDO = new StorageInDetailDO();
|
StorageInDetailDO storageInDetailDO = new StorageInDetailDO();
|
||||||
storageInDetailDO.setStorageNoId(storageInDO.getId());
|
storageInDetailDO.setStorageNoId(storageInDO.getId());
|
||||||
storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode());
|
storageInDetailDO.setProjectSubCode(orderNoDetailDO.getProjectSubCode());
|
||||||
@ -250,8 +313,10 @@ public class StorageInServiceImpl implements StorageInService {
|
|||||||
storageInDetailDOList.add(storageInDetailDO);
|
storageInDetailDOList.add(storageInDetailDO);
|
||||||
}
|
}
|
||||||
storageInDetailMapper.insertBatch(storageInDetailDOList);
|
storageInDetailMapper.insertBatch(storageInDetailDOList);
|
||||||
// 回写序列记录
|
storageMatMapper.insertBatch(storageMatDOS);
|
||||||
serialNumberService.updateSerialNumber(serialNumberDO);
|
storageMatMapper.insertBatch(outList);
|
||||||
|
storageService.updateMatLogList(storageDO.getId(),2);
|
||||||
|
storageService.updateMatLogList(out.getId(),2);
|
||||||
|
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
}
|
}
|
||||||
|
@ -78,35 +78,35 @@
|
|||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="首付款" prop="shouFuKuanBiLi" >
|
<el-form-item label="首付款" prop="shouFuKuan" >
|
||||||
<el-input v-model="formData.shouFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.shouFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第二笔款" prop="twoFuKuanBiLi" >
|
<el-form-item label="第二笔款" prop="twoFuKuan" >
|
||||||
<el-input v-model="formData.twoFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.twoFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第三笔款" prop="threeFuKuanBiLi" >
|
<el-form-item label="第三笔款" prop="threeFuKuan" >
|
||||||
<el-input v-model="formData.threeFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.threeFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第四笔款" prop="fourFuKuanBiLi" >
|
<el-form-item label="第四笔款" prop="fourFuKuan" >
|
||||||
<el-input v-model="formData.fourFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.fourFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第五笔款" prop="fiveFuKuanBiLi" >
|
<el-form-item label="第五笔款" prop="fiveFuKuan" >
|
||||||
<el-input v-model="formData.fiveFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.fiveFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第六笔款" prop="sixFuKuanBiLi" >
|
<el-form-item label="第六笔款" prop="sixFuKuan" >
|
||||||
<el-input v-model="formData.sixFuKuanBiLi" placeholder="请输入应收金额" disabled />
|
<el-input v-model="formData.sixFuKuan" placeholder="请输入" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -209,12 +209,12 @@ const formData = ref({
|
|||||||
orderYsDetails: [],
|
orderYsDetails: [],
|
||||||
rem: undefined,
|
rem: undefined,
|
||||||
amount:undefined,
|
amount:undefined,
|
||||||
shouFuKuanBiLi:undefined,
|
shouFuKuan:undefined,
|
||||||
twoFuKuanBiLi:undefined,
|
twoFuKuan:undefined,
|
||||||
threeFuKuanBiLi:undefined,
|
threeFuKuan:undefined,
|
||||||
fourFuKuanBiLi:undefined,
|
fourFuKuan:undefined,
|
||||||
fiveFuKuanBiLi:undefined,
|
fiveFuKuan:undefined,
|
||||||
sixFuKuanBiLi:undefined
|
sixFuKuan:undefined
|
||||||
})
|
})
|
||||||
// const subFormRules = reactive({
|
// const subFormRules = reactive({
|
||||||
// paymentDate: [{
|
// paymentDate: [{
|
||||||
|
@ -145,6 +145,7 @@
|
|||||||
}}
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="打回原因" align="center" prop="rejRemark" min-width="120" />
|
||||||
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
|
<el-table-column label="采购单号" align="center" prop="purchaseNo" min-width="120" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
@ -161,21 +162,15 @@
|
|||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { useCommonStateWithOut } from '@/store/modules/common'
|
import { useCommonStateWithOut } from '@/store/modules/common'
|
||||||
import UserSelect from "@/views/heli/materialplan/userSelectNew.vue";
|
|
||||||
import {inject, ref} from "vue";
|
import {inject, ref} from "vue";
|
||||||
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
import * as MaterialPlanApi from "@/api/heli/materialplan";
|
||||||
import * as MaterialPlanBoomApi from "@/api/heli/materialplanboom";
|
import * as MaterialPlanBoomApi from "@/api/heli/materialplanboom";
|
||||||
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder";
|
||||||
import {ElTable} from "element-plus";
|
import {ElTable} from "element-plus";
|
||||||
import {useUserStore} from "@/store/modules/user";
|
import {useUserStore} from "@/store/modules/user";
|
||||||
import {dateFormatter1} from "@/utils/formatTime";
|
|
||||||
import {getPartPurchasePages} from "@/api/heli/materialplan";
|
|
||||||
import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue";
|
import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue";
|
||||||
import {getMaterialPlanBoom} from "@/api/heli/materialplanboom";
|
|
||||||
import {createPurchaseOrderMake} from "@/api/heli/partpurchaseorder";
|
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
|
|
||||||
defineOptions({ name: 'standard' })
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const username = userStore.getUser.nickname
|
const username = userStore.getUser.nickname
|
||||||
const reload: any = inject('reload')
|
const reload: any = inject('reload')
|
||||||
@ -215,8 +210,16 @@ const exportLoading = ref(false) // 导出的加载中
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
list.value=[]
|
||||||
const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
|
const data = await MaterialPlanApi.getPartPurchasePages(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
|
list.value.forEach(item=> {
|
||||||
|
if(item.isFoams == 'Y'){
|
||||||
|
item.isFoams = true
|
||||||
|
}else{
|
||||||
|
item.isFoams = false
|
||||||
|
}
|
||||||
|
})
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@ -237,22 +240,16 @@ const handleExportDetail = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const handleOutsourcingChange= async (row: any) => {
|
const handleOutsourcingChange= async (row: any) => {
|
||||||
console.log(1)
|
|
||||||
if(row.isFoams == false){
|
if(row.isFoams == false){
|
||||||
row.isFoam = 'N'
|
row.isFoam = 'N'
|
||||||
console.log(2)
|
|
||||||
}else{
|
}else{
|
||||||
console.log(3)
|
|
||||||
row.isFoam = 'Y'
|
row.isFoam = 'Y'
|
||||||
console.log(row.isFoam)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
const handleSelectionChange = (val) => {
|
const handleSelectionChange = (val) => {
|
||||||
// multipleTable.value.clearSelection()
|
// multipleTable.value.clearSelection()
|
||||||
multipleTable.value=val
|
multipleTable.value=val
|
||||||
console.log( val)
|
|
||||||
console.log( multipleTable.value)
|
|
||||||
}
|
}
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
@ -267,14 +264,6 @@ const handleSelectedUser = (currentIndex, newValue: any) => {
|
|||||||
list.value[currentIndex].supplierIds = newValue?.id
|
list.value[currentIndex].supplierIds = newValue?.id
|
||||||
}
|
}
|
||||||
|
|
||||||
const singleSubmission= (val) =>{
|
|
||||||
multipleTable.value=[]
|
|
||||||
multipleTable.value.push(val)
|
|
||||||
submitForm();
|
|
||||||
}
|
|
||||||
const routerToPurchaseOrderNo=()=>{
|
|
||||||
router.push({ path: '/purchase/purchaseorderno'});
|
|
||||||
}
|
|
||||||
const singleSubmissions=()=>{
|
const singleSubmissions=()=>{
|
||||||
submitForm();
|
submitForm();
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,11 @@
|
|||||||
<el-table-column prop="projectSubCode" min-width="200" label="子项目编码" align="center"/>
|
<el-table-column prop="projectSubCode" min-width="200" label="子项目编码" align="center"/>
|
||||||
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
|
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
|
||||||
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
|
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
|
||||||
|
<el-table-column prop="isFoam" min-width="120" label="是否泡沫" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ scope.row.isFoam=='Y'?"是":"否"}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
|
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
|
||||||
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
<el-table-column prop="boomAmount" min-width="100" label="需求数量" align="center"/>
|
||||||
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center"/>
|
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center"/>
|
||||||
|
@ -215,20 +215,13 @@ const submitForm = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// // 3. 校验每个零件
|
// // 3. 校验每个零件
|
||||||
// for (const item of list) {
|
for (const item of list) {
|
||||||
// if (item.projectMaterialPlanNo) {
|
if (item.orderStatus==2) {
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 已生成物料需求计划,请确认`);
|
message.error(`工序${item.procedureName}中零件 ${item.boomName} 已生成采购订单,请确认`);
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// if (!item.boomArriveDate) { // 注意:原代码是 boomArriveDate,确保拼写正确
|
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 要求完成日期为空,请确认`);
|
}
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// if (!item.duEmpId) {
|
|
||||||
// message.error(`工序${item.procedureName}中零件 ${item.materialName} 责任人为空,请确认`);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 4. 添加加载状态(Element Plus 兼容处理)
|
// 4. 添加加载状态(Element Plus 兼容处理)
|
||||||
formLoading.value = true;
|
formLoading.value = true;
|
||||||
|
@ -81,6 +81,7 @@
|
|||||||
<el-button @click="receiveGoods()" type="primary" size="large" >收货</el-button>
|
<el-button @click="receiveGoods()" type="primary" size="large" >收货</el-button>
|
||||||
<el-button @click="isPrint()" type="primary" size="large" :loading="printLoading">打印</el-button>
|
<el-button @click="isPrint()" type="primary" size="large" :loading="printLoading">打印</el-button>
|
||||||
<el-button @click="deleteForm()" type="danger" size="large" >删除</el-button>
|
<el-button @click="deleteForm()" type="danger" size="large" >删除</el-button>
|
||||||
|
<el-button @click="cancel" size="large">取 消</el-button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -107,7 +108,7 @@
|
|||||||
<span style="margin-left:20px;width: 110px">联系人:{{ printData.contactName }}</span>
|
<span style="margin-left:20px;width: 110px">联系人:{{ printData.contactName }}</span>
|
||||||
<span style="margin-left:20px;width: 150px">电话:{{ printData.contactMobile }}</span>
|
<span style="margin-left:20px;width: 150px">电话:{{ printData.contactMobile }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table class="print-table">
|
<table class="print-table">
|
||||||
@ -183,7 +184,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="printDialogVisible = false">关闭</el-button>
|
<el-button @click="printDialogVisible = false">关闭</el-button>
|
||||||
@ -260,12 +261,11 @@ const handleSelectionChange = (val) => {
|
|||||||
multipleTable.value=val
|
multipleTable.value=val
|
||||||
|
|
||||||
}
|
}
|
||||||
|
const cancel = async () => {
|
||||||
|
|
||||||
const closeForm = async () => {
|
|
||||||
router.push({ path: '/purchase/purchaseorderno' })
|
router.push({ path: '/purchase/purchaseorderno' })
|
||||||
tagsViewStore.delVisitedView(router.currentRoute.value)
|
tagsViewStore.delVisitedView(router.currentRoute.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
@ -337,22 +337,22 @@ function doPrint() {
|
|||||||
.order-info {
|
.order-info {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.stamp-info {
|
.stamp-info {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.stamp-info span{
|
.stamp-info span{
|
||||||
font-size: 15px !important;
|
font-size: 15px !important;
|
||||||
|
|
||||||
}
|
}
|
||||||
.order-info span{
|
.order-info span{
|
||||||
font-size: 15px !important;
|
font-size: 15px !important;
|
||||||
|
|
||||||
}
|
}
|
||||||
.print-table {
|
.print-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -371,7 +371,7 @@ function doPrint() {
|
|||||||
}
|
}
|
||||||
@media print {
|
@media print {
|
||||||
body { margin: 0; }
|
body { margin: 0; }
|
||||||
.print-content {
|
.print-content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
@ -391,7 +391,7 @@ function doPrint() {
|
|||||||
iframe.contentWindow?.print()
|
iframe.contentWindow?.print()
|
||||||
setTimeout(() => document.body.removeChild(iframe), 1000)
|
setTimeout(() => document.body.removeChild(iframe), 1000)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function limitTo20Chars(input) {
|
function limitTo20Chars(input) {
|
||||||
@ -456,12 +456,12 @@ const getList = async () => {
|
|||||||
body * {
|
body * {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 只显示打印区域 */
|
/* 只显示打印区域 */
|
||||||
#printArea, #printArea * {
|
#printArea, #printArea * {
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 打印区域定位 */
|
/* 打印区域定位 */
|
||||||
#printArea {
|
#printArea {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -469,7 +469,7 @@ const getList = async () => {
|
|||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 隐藏弹窗相关元素 */
|
/* 隐藏弹窗相关元素 */
|
||||||
.el-dialog, .el-dialog__wrapper, .el-dialog__header, .el-dialog__footer {
|
.el-dialog, .el-dialog__wrapper, .el-dialog__header, .el-dialog__footer {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
@ -478,7 +478,7 @@ const getList = async () => {
|
|||||||
|
|
||||||
.order-info {
|
.order-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
@ -490,11 +490,11 @@ const getList = async () => {
|
|||||||
}
|
}
|
||||||
.stamp-info {
|
.stamp-info {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.stamp-info span{
|
.stamp-info span{
|
||||||
font-size: 15px !important;
|
font-size: 15px !important;
|
||||||
|
|
||||||
}
|
}
|
||||||
.print-table {
|
.print-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -515,12 +515,12 @@ const getList = async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.print-table th {
|
.print-table th {
|
||||||
background-color: #f5f7fa;
|
background-color: #f5f7fa;
|
||||||
color: #303133;
|
color: #303133;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 13px !important;
|
font-size: 13px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
Loading…
Reference in New Issue
Block a user