新火炬后端单体项目初始化代码
zhangherong
3 天以前 53577ae0fcba9342b22ad1758303aa61409160d1
src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java
@@ -7,8 +7,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.base.entity.Factory;
import org.jeecg.modules.base.entity.LineSideWarehouse;
import org.jeecg.modules.base.entity.Shift;
@@ -17,8 +19,11 @@
import org.jeecg.modules.base.service.ILineSideWarehouseService;
import org.jeecg.modules.base.service.IShiftGroupService;
import org.jeecg.modules.base.service.IShiftService;
import org.jeecg.modules.lsw.entity.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.jeecg.modules.lsw.vo.LswMaterialInventoryVo;
import org.jeecg.modules.mes.dto.MesProductionWorkScheduleRequest;
import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck;
@@ -28,6 +33,7 @@
import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
import org.jeecg.modules.mes.mapper.MesProductionWorkOrderMapper;
import org.jeecg.modules.mes.utils.CommonUtils;
import org.jeecg.modules.pms.entity.PmsProcessBillMaterials;
import org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail;
import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsDetailService;
@@ -65,6 +71,8 @@
    @Autowired
    private IPmsProcessBillMaterialsDetailService pmsProcessBillMaterialsDetailService;
    @Autowired
    private ILswMaterialService lswMaterialService;
    @Autowired
    private ILswMaterialInventoryService lswMaterialInventoryService;
    @Autowired
    private ILineSideWarehouseService lineSideWarehouseService;
@@ -93,6 +101,16 @@
                .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1)
                .collect(Collectors.toList());
        List<MesProductionWorkOrder> newProductionWorkOrderList = CollectionUtil.newArrayList();
        String materialNumber = request.getMaterialNumber();
        BigDecimal planQuantity = request.getPlanQuantity();
        if (StringUtils.isNotBlank(materialNumber)) {
            LswMaterial material = lswMaterialService.list(new LambdaQueryWrapper<LswMaterial>()
                            .eq(LswMaterial::getMaterialNumber, materialNumber)
                            .eq(LswMaterial::getDelFlag, CommonConstant.DEL_FLAG_0)
                            .eq(LswMaterial::getMaterialStatus, CommonConstant.STATUS_1))
                    .stream().findFirst().orElse(null);
            request.setMaterialName(Objects.requireNonNull(material).getMaterialName());
        }
        for (LocalDate date : dateRange) {
            for (String shiftId : shiftGroupMap.keySet()) {
@@ -115,7 +133,10 @@
                            .setShiftName(shiftNameMap.get(shiftId).getShiftName())
                            .setGroupId(shiftGroup.getId())
                            .setGroupName(shiftGroup.getGroupName())
                            .setWorkOrderDate(workOrderDate);
                            .setWorkOrderDate(workOrderDate)
                            .setMaterialNumber(StringUtils.isNotBlank(materialNumber) ? materialNumber : "")
                            .setMaterialName(StringUtils.isNotBlank(materialNumber) ? request.getMaterialName() : "")
                            .setPlanQuantity(Objects.nonNull(planQuantity) ? planQuantity : null);
                    newProductionWorkOrderList.add(mesProductionWorkOrder);
                }
@@ -126,7 +147,10 @@
            MesProductionWorkOrder mesProductionWorkOrder = new MesProductionWorkOrder()
                    .setFactoryId(factory.getId())
                    .setFactoryCode(factory.getFactoryCode())
                    .setFactoryName(factory.getFactoryName());
                    .setFactoryName(factory.getFactoryName())
                    .setMaterialNumber(StringUtils.isNotBlank(materialNumber) ? materialNumber : "")
                    .setMaterialName(StringUtils.isNotBlank(materialNumber) ? request.getMaterialName() : "")
                    .setPlanQuantity(Objects.nonNull(planQuantity) ? planQuantity : null);;
            newProductionWorkOrderList.add(mesProductionWorkOrder);
        }
        return newProductionWorkOrderList;
@@ -135,9 +159,27 @@
    @Override
    public IPage<MesProductionWorkOrder> queryPageList(Page<MesProductionWorkOrder> page, Map<String, String[]> parameterMap) {
        QueryWrapper<MesProductionWorkOrder> queryWrapper = Wrappers.query();
        LoginUser loginUser = CommonUtils.getCurrentUser();
        if (loginUser == null) {
            return page;
        }
        queryWrapper.exists("select 1 from base_user_factory t where t.user_id = {0} and t.factory_id = t1.factory_id", loginUser.getId());
        String[] factoryIds = parameterMap.get("factoryId");
        if (factoryIds != null && factoryIds.length > 0) {
            queryWrapper.eq("t1.factory_id", factoryIds[0]);
        }
        String[] materialNumbers = parameterMap.get("materialNumber");
        if (materialNumbers != null && materialNumbers.length > 0) {
            queryWrapper.like("t1.material_number", materialNumbers[0]);
        }
        String[] materialNames = parameterMap.get("materialName");
        if (materialNames != null && materialNames.length > 0) {
            queryWrapper.like("t1.material_name", materialNames[0]);
        }
        String[] workOrderCodes = parameterMap.get("workOrderCode");
        if (workOrderCodes != null && workOrderCodes.length > 0) {
            queryWrapper.like("t1.work_order_code", workOrderCodes[0]);
        }
        String[] startDates = parameterMap.get("startDate");
        String[] endDates = parameterMap.get("endDate");
@@ -192,7 +234,7 @@
        List<String> bomMaterialNumberList = processBillMaterialsDetails.stream()
                .map(PmsProcessBillMaterialsDetail::getMaterialNumber).collect(Collectors.toList());
        Map<String, LswMaterialInventoryVo> lswMaterialInventoryMap = lswMaterialInventoryService
                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId()).stream()
                .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId(), null).stream()
                .collect(Collectors.toMap(LswMaterialInventoryVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1));
        List<MesKittingCompletenessCheck> completenessCheckResultList = CollectionUtil.newArrayList();
        //根据订单BOM明细列出齐套检查结果
@@ -218,4 +260,37 @@
        });
        return completenessCheckResultList;
    }
    @Override
    public List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder) {
        //查询工单所属产线对应的线边仓
        LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>()
                        .eq(LineSideWarehouse::getFactoryId, workOrder.getFactoryId())
                        .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0)
                        .eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.DEFAULT_1))
                .stream().findFirst().orElse(null);
        if (lineSideWarehouse == null) {
            throw new JeecgBootException("该产线未配置线边仓!");
        }
        //查询工单热处理物料对应毛坯在线边仓的库存
        LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryService.selectLineSideMaterialInventoryByMaterialNumber(Collections
                        .singletonList(workOrder.getMaterialNumber()), lineSideWarehouse.getId(), CommonConstant.DEFAULT_0)
                .stream().findFirst().orElse(null);
        if (materialInventoryVo == null) {
            throw new JeecgBootException("线边库物料不存在!");
        }
        MesKittingCompletenessCheck completenessCheck = new MesKittingCompletenessCheck()
                .setMaterialNumber(materialInventoryVo.getMaterialNumber())
                .setMaterialName(materialInventoryVo.getMaterialName())
                .setRequiredQuantity(workOrder.getPlanQuantity())
                .setActualQuantity(materialInventoryVo.getStockQuantity())
                .setProductionUnit("PC")
                .setCheckFlag(materialInventoryVo.getStockQuantity().compareTo(workOrder.getPlanQuantity()) > 0 ? CommonConstant.DEFAULT_1 : CommonConstant.DEFAULT_0);
        return Collections.singletonList(completenessCheck);
    }
    @Override
    public IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page) {
        return this.getBaseMapper().queryWorkOrderByTransfer(page);
    }
}