新火炬后端单体项目初始化代码
zhangherong
17 小时以前 399e7d565f19f59a8da82277da8f3eab527c2c56
src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialLoadingServiceImpl.java
@@ -2,15 +2,33 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.shiro.SecurityUtils;
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.LineSideWarehouse;
import org.jeecg.modules.base.service.ILineSideWarehouseService;
import org.jeecg.modules.lsw.entity.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
import org.jeecg.modules.lsw.enums.MaterialCategoryEnum;
import org.jeecg.modules.lsw.enums.MaterialOutboundCategory;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.jeecg.modules.mes.entity.MesMaterialLoading;
import org.jeecg.modules.mes.entity.MesMaterialUnloading;
import org.jeecg.modules.mes.mapper.MesMaterialLoadingMapper;
import org.jeecg.modules.mes.service.IMesMaterialLoadingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -23,44 +41,101 @@
@Service
public class MesMaterialLoadingServiceImpl extends ServiceImpl<MesMaterialLoadingMapper, MesMaterialLoading> implements IMesMaterialLoadingService {
    @Autowired
    private ILineSideWarehouseService lineSideWarehouseService;
    @Autowired
    private ILswMaterialOutboundService lswMaterialOutboundService;
    @Autowired
    private ILswMaterialInventoryService materialInventoryService;
    @Autowired
    private ILswMaterialService materialService;
    @Override
    public List<MesMaterialUnloading> queryUnloadingByLoadingId(String loadingId) {
        return baseMapper.queryUnloadingByLoadingId(loadingId);
    }
    @Override
    public List<MesMaterialLoading> queryLoadingByWorkOrderId(String workOrderId) {
        return baseMapper.queryLoadingByWorkOrderId(workOrderId);
    public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, MesMaterialLoading mesMaterialLoading) {
        QueryWrapper<MesMaterialLoading> queryWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(mesMaterialLoading.getFactoryId())) {
            queryWrapper.eq("mml.factory_id", mesMaterialLoading.getFactoryId());
        }
        if (StringUtils.isNotBlank(mesMaterialLoading.getCategory())) {
            queryWrapper.eq("mml.category", mesMaterialLoading.getCategory());
        }
        if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialNumber())) {
            queryWrapper.like("mml.material_number", mesMaterialLoading.getMaterialNumber());
        }
        if (StringUtils.isNotBlank(mesMaterialLoading.getMaterialName())) {
            queryWrapper.like("mml.material_name", mesMaterialLoading.getMaterialName());
        }
        if (StringUtils.isNotBlank(mesMaterialLoading.getBatchNumber())) {
            queryWrapper.like("mml.batch_number", mesMaterialLoading.getBatchNumber());
        }
        queryWrapper.orderByDesc("mml.create_time");
        return this.baseMapper.queryPageList(page, queryWrapper);
    }
    @Override
    public IPage<MesMaterialLoading> queryPageList(Page<MesMaterialLoading> page, Map<String, String[]> parameterMap) {
        QueryWrapper<MesMaterialLoading> queryWrapper = Wrappers.query();
        String[] factoryIds = parameterMap.get("factoryId");
        if (factoryIds != null && factoryIds.length > 0) {
            queryWrapper.eq("t2.factory_id", factoryIds[0]);
    @Transactional(rollbackFor = Exception.class)
    public boolean loading(MesMaterialLoading mesMaterialLoading) {
        if (mesMaterialLoading == null) {
            throw new JeecgBootException("参数错误!");
        }
        String[] workOrderIds = parameterMap.get("workOrderId");
        if (workOrderIds != null && workOrderIds.length > 0) {
            queryWrapper.eq("t1.work_order_id", workOrderIds[0]);
        if (StringUtils.isBlank(mesMaterialLoading.getFactoryId())
                || StringUtils.isBlank(mesMaterialLoading.getMaterialNumber())
                || mesMaterialLoading.getQuantity() == null
                || mesMaterialLoading.getQuantity().intValue() < 1
                || StringUtils.isBlank(mesMaterialLoading.getBatchNumber())) {
            throw new JeecgBootException("参数错误!");
        }
        String[] materialNumbers = parameterMap.get("materialNumber");
        if (materialNumbers != null && materialNumbers.length > 0) {
            queryWrapper.like("t1.material_number", materialNumbers[0]);
        LineSideWarehouse warehouse = lineSideWarehouseService.queryByFactoryId(mesMaterialLoading.getFactoryId());
        if (warehouse == null) {
            throw new JeecgBootException("线边库不存在,请检查!");
        }
        String[] materialNames = parameterMap.get("materialName");
        if (materialNames != null && materialNames.length > 0) {
            queryWrapper.like("t1.material_name", materialNames[0]);
        LswMaterial material = materialService.queryByMaterialNumber(mesMaterialLoading.getMaterialNumber());
        if (material == null) {
            throw new JeecgBootException("物料信息不存在,请检查!");
        }
        String[] batchNumbers = parameterMap.get("batchNumber");
        if (batchNumbers != null && batchNumbers.length > 0) {
            queryWrapper.like("t1.batch_number", batchNumbers[0]);
        if (MaterialCategoryEnum.STEEL_BALL.name().equals(material.getMaterialCategory()) && StringUtils.isBlank(mesMaterialLoading.getSteelBallSize())) {
            throw new JeecgBootException("钢球尺寸不能为空,请检查!");
        }
        String[] equipmentIds = parameterMap.get("equipmentId");
        if (equipmentIds != null && equipmentIds.length > 0) {
            queryWrapper.eq("t1.equipment_id", equipmentIds[0]);
        LswMaterialInventory inventory = materialInventoryService.queryByMaterialNumberAndBatchNumber(mesMaterialLoading.getMaterialNumber(), mesMaterialLoading.getBatchNumber(), warehouse.getId());
        if (inventory == null) {
            throw new JeecgBootException("库存不存在,请检查!");
        }
        queryWrapper.orderByDesc("t1.create_time");
        return this.baseMapper.queryPageList(page, queryWrapper);
        if (inventory.getQuantity().compareTo(mesMaterialLoading.getQuantity()) != 0) {
            throw new JeecgBootException("上料和库存数量不匹配,请检查!");
        }
        //人员信息
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser == null) {
            throw new JeecgBootException("用户信息获取失败!");
        }
        LswMaterialOutbound outbound = new LswMaterialOutbound();
        outbound.setMaterialNumber(mesMaterialLoading.getMaterialNumber());
        outbound.setMaterialName(mesMaterialLoading.getMaterialName());
        outbound.setQuantity(mesMaterialLoading.getQuantity());
        outbound.setFactoryId(mesMaterialLoading.getFactoryId());
        outbound.setWarehouseId(warehouse.getId());
        outbound.setBatchNumber(mesMaterialLoading.getBatchNumber());
        outbound.setOutboundCategory(MaterialOutboundCategory.MATERIAL_LOADING.name());
        outbound.setInventoryId(inventory.getId());
        outbound.setOutboundStaff(sysUser.getUsername());
        boolean b = lswMaterialOutboundService.outboundMaterial(outbound);
        if (!b) {
            throw new JeecgBootException("库存出库失败!");
        }
        mesMaterialLoading.setWarehouseId(warehouse.getId());
        mesMaterialLoading.setRemainingQuantity(mesMaterialLoading.getQuantity());
        mesMaterialLoading.setDelFlag(CommonConstant.DEL_FLAG_0);
        mesMaterialLoading.setUnloadingFlag(CommonConstant.STATUS_0);
        this.save(mesMaterialLoading);
        return true;
    }
}