|
|
|
|
@ -9,15 +9,26 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpWarehouseMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
|
|
|
|
|
import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService;
|
|
|
|
|
import cn.iocoder.yudao.module.iot.framework.mqtt.utils.DateUtils;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.zjproductrecord.vo.ZjProductRecordSaveReqVO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDetailDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.zjproduct.ZjProductDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.zjproductrecord.ZjProductRecordDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.bom.BomDetailMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.bom.BomMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.bom.BomService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
|
|
|
|
|
@ -25,6 +36,7 @@ import cn.iocoder.yudao.module.mes.service.plan.PlanService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.zjproduct.ZjProductService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.zjproductrecord.ZjProductRecordService;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
@ -42,6 +54,7 @@ import java.math.RoundingMode;
|
|
|
|
|
import java.time.*;
|
|
|
|
|
import java.time.temporal.TemporalAdjusters;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
|
|
|
|
|
@ -68,6 +81,16 @@ public class PlanController {
|
|
|
|
|
@Resource
|
|
|
|
|
private ZjProductRecordService zjProductRecordService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private ErpStockOutService erpStockOutService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private BomMapper bomMapper;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private BomDetailMapper bomDetailMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/create")
|
|
|
|
|
@Operation(summary = "创建生产计划")
|
|
|
|
|
@ -91,6 +114,68 @@ public class PlanController {
|
|
|
|
|
zjProductRecordService.createZjProductRecord(BeanUtils.toBean(zjProductRecordDO, ZjProductRecordSaveReqVO.class));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// // 生成领料出库单据
|
|
|
|
|
// List<ErpStockOutSaveReqVO.Item> itemList;
|
|
|
|
|
//
|
|
|
|
|
// // 1 查询最新 BOM
|
|
|
|
|
// BomDO bomDO = bomMapper.selectOne(
|
|
|
|
|
// Wrappers.<BomDO>lambdaQuery()
|
|
|
|
|
// .eq(BomDO::getProductId, createReqVO.getProductId())
|
|
|
|
|
// .orderByDesc(BomDO::getCreateTime)
|
|
|
|
|
// .last("limit 1")
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// if (bomDO == null) {
|
|
|
|
|
// return success(false);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 2 查询 BOM 明细
|
|
|
|
|
// List<BomDetailDO> bomDetails = bomDetailMapper.selectList(
|
|
|
|
|
// Wrappers.<BomDetailDO>lambdaQuery()
|
|
|
|
|
// .eq(BomDetailDO::getBomId, bomDO.getId())
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// if (bomDetails.isEmpty()) {
|
|
|
|
|
// return success(false);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 3 查询仓库
|
|
|
|
|
// ErpWarehouseDO warehouse = erpWarehouseMapper.selectOne(
|
|
|
|
|
// Wrappers.<ErpWarehouseDO>lambdaQuery()
|
|
|
|
|
// .orderByDesc(ErpWarehouseDO::getCreateTime)
|
|
|
|
|
// .last("limit 1")
|
|
|
|
|
// );
|
|
|
|
|
//
|
|
|
|
|
// if (warehouse == null) {
|
|
|
|
|
// return success(false);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 4 计算领料数量
|
|
|
|
|
// Long planNumber = Optional.ofNullable(createReqVO.getPlanNumber()).orElse(0L);
|
|
|
|
|
//
|
|
|
|
|
// itemList = bomDetails.stream().map(detail -> {
|
|
|
|
|
//
|
|
|
|
|
// BigDecimal usageNumber = Optional.ofNullable(detail.getUsageNumber()).orElse(BigDecimal.ZERO);
|
|
|
|
|
//
|
|
|
|
|
// BigDecimal count = usageNumber.multiply(BigDecimal.valueOf(planNumber));
|
|
|
|
|
//
|
|
|
|
|
// ErpStockOutSaveReqVO.Item item = new ErpStockOutSaveReqVO.Item();
|
|
|
|
|
// item.setProductId(detail.getProductId());
|
|
|
|
|
// item.setWarehouseId(warehouse.getId());
|
|
|
|
|
// item.setCount(count);
|
|
|
|
|
//
|
|
|
|
|
// return item;
|
|
|
|
|
//
|
|
|
|
|
// }).collect(Collectors.toList());
|
|
|
|
|
//
|
|
|
|
|
// // 5 构造出库单
|
|
|
|
|
// ErpStockOutSaveReqVO stockOut = new ErpStockOutSaveReqVO();
|
|
|
|
|
// stockOut.setOutType("领料出库");
|
|
|
|
|
// stockOut.setOutTime(LocalDateTime.now());
|
|
|
|
|
// stockOut.setItems(itemList);
|
|
|
|
|
//
|
|
|
|
|
// // 6 创建出库单
|
|
|
|
|
// erpStockOutService.createStockOut(stockOut);
|
|
|
|
|
|
|
|
|
|
return success(true);
|
|
|
|
|
}
|
|
|
|
|
|