futian.liu
2023-12-02 edc87e2fc3760cd7d1230bc058acf5620ea2c465
consum-base/src/main/java/com/consum/base/service/LWhFormOutputServiceImpl.java
@@ -5,25 +5,32 @@
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.core.param.BaseWarehouseParam1;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.LWFormsOutputGoodsInfoParam;
import com.consum.base.pojo.LWFormsOutputGoodsModelParam;
import com.consum.base.pojo.LWFormsOutputGoodsParam;
import com.consum.base.pojo.LWhFormOutputInsertParam;
import com.consum.base.pojo.LWhFormOutputParam;
import com.consum.base.pojo.excel.OutputExcelTemplate;
import com.consum.base.pojo.query.LWhFormOutputQry;
import com.consum.model.po.*;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormOutput;
import com.consum.model.po.LWhProcureModel;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
/**
 * @Description 出库单
@@ -49,108 +56,13 @@
    private static String QUERY_FORM_OUTPUT_LIST = "SELECT * FROM l_wh_form_output WHERE 1 = 1";
    //    /**
//     * @Description 新增出库单
//     * @Author 卢庆阳
//     * @Date 2023/10/27
//     */
//    public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
//        //1.新增出库单记录
//        LWhFormOutput lWhFormOutput = new LWhFormOutput();
//        //出入库id
//        long lWhFormOutputId = IdUtil.generateId();
//        lWhFormOutput.setId(lWhFormOutputId);
//        Long warehouseId = param.getWarehouseId();
//        lWhFormOutput.setWarehouseId(warehouseId);
//        //根据仓库id查询仓库
//        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
//        if (warehouse == null) {
//            log.error("仓库id不存在");
//            return 0;
//        }
//        lWhFormOutput.setWarehouseName(warehouse.getWarehouseName());
//        lWhFormOutput.setOutputCode(BaseWarehouseParam1.In_OutPutTypeEnum.Fragmentary_Output.getValue()+"");
//        lWhFormOutput.setOutputName("零星出库");
//        lWhFormOutput.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
//        lWhFormOutput.setAgencyName(sysInfo.getTenantName());
//        lWhFormOutput.setOperatorId(sysInfo.getId());
//        lWhFormOutput.setOperatorName(sysInfo.getUserName());
//        long dateTimeNumber = DateUtils.getDateTimeNumber(System.currentTimeMillis());
//        lWhFormOutput.setDealTime(dateTimeNumber);
//        lWhFormOutput.setStates(1);
//        int flag1 = this.insert(lWhFormOutput);
//
//        //2.根据出库单出库
//        Long lWarehouseFlowId = this.lWhFormOutputCoreService.outFormByTransId(lWhFormOutput.getId(), currentUser, dateTimeNumber);
//        //3.向出库单 插入 进出库流水总表ID
//        int flag3 = 0;
//        if (flag1 > 0) {
//            LWhFormOutput lWhFormOutput1 = new LWhFormOutput(lWhFormOutputId);
//            lWhFormOutput1.setWarehouseFlowId(lWarehouseFlowId);
//            flag3 = this.update(lWhFormOutput1);
//        }
//
//        //4.新增l_wh_goods_record记录
//        List<LWhGoodsRecord> recordList = param.getList();
//        if (CollectionUtils.isEmpty(recordList)) {
//            log.error("规格型号为空");
//            return 0;
//        }
//        int flag5 = 0;
//        int number = -1;  //出库后,物品剩余数量
//        for (LWhGoodsRecord record : recordList) {
//            //物品id和物品名称
//            record.setBaseGoodsTemplateId(param.getBaseGoodsTemplateId());
//            record.setGoodsTemplateName(param.getGoodsTemplateName());
//
//            record.setId(IdUtil.generateId());
//            record.setWarehouseId(warehouseId);
//            //根据物品型号查询物品库存
//            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(warehouseId, record.getBaseGoodsModelsId(), (short) 1, null);
//            record.setInitialCount(goodsNum);
//            record.setThisType(2);
//
//            //判断出库数量是否小于库存
//            number = goodsNum - record.getThisCount();
//            if (number < 0) {
//                log.error("库存不足");
//                break;
//            }
//            record.setEndCount(number);
//            record.setDealTime(dateTimeNumber);
//            record.setWarehouseFlowId(lWarehouseFlowId);
//
//            //5.新增L_WH_PROCURE_MODEL记录
//            LWhProcureModel lWhProcureModel = new LWhProcureModel();
//            lWhProcureModel.setId(IdUtil.generateId());
//            lWhProcureModel.setBusinessType(3);
//            lWhProcureModel.setBaseGoodsModelsId(record.getBaseGoodsModelsId());
//            lWhProcureModel.setCounts(record.getThisCount());
//            lWhProcureModel.setWorehouseCount(goodsNum);
//            int res = this.lWhProcureModelService.insert(lWhProcureModel);
//            flag5 += res;
//        }
//        //如果出库后,剩余库存大于0,新增l_wh_goods_record记录
//        int flag4 = 0;
//        if (number >= 0){
//            flag4 = this.lWhGoodsService.insert(recordList);
//        }
//
//        //如果有一条记录新增失败,则回滚
//        if (flag1 == 0 || flag3 == 0 || flag4 != recordList.size() || flag5 != recordList.size() || number < 0) {
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//            return 0;
//        }
//
//        return 1;
//    }
    /**
     * @Description 新增出库单
     * @Author 卢庆阳
     * @Date 2023/10/27
     */
    public int add(LWhFormOutputInsertParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
    public int add(LWhFormOutputParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
        //1.新增出库单记录
        LWhFormOutput lWhFormOutput = new LWhFormOutput();
        //出入库id
@@ -181,9 +93,9 @@
            return 0;
        }
        //2.新增物品型号记录
        List<LWFormsOutputGoodsParam> goodsList = param.getGoods();
        List<LWFormsOutputGoodsInfoParam> goodsList = param.getGoods();
        List<LWhProcureModel> modelList = new ArrayList<>();
        for (LWFormsOutputGoodsParam goods : goodsList) {
        for (LWFormsOutputGoodsInfoParam goods : goodsList) {
            List<LWFormsOutputGoodsModelParam> models = goods.getModels();
            for (LWFormsOutputGoodsModelParam model : models) {
                LWhProcureModel lWhProcureModel = new LWhProcureModel();
@@ -198,7 +110,7 @@
                }
                lWhProcureModel.setCounts(model.getCounts());
                //根据物品型号查询物品库存
                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
                int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), 1, null);
                lWhProcureModel.setWorehouseCount(goodsNum);
                modelList.add(lWhProcureModel);
            }
@@ -317,4 +229,38 @@
    }
    public List<OutputExcelTemplate> getExportList(Long id) {
        String sql = "SELECT\n"
            + "\tfo.BUSINESS_FORM_CODE,\n"
            + "\tfo.AGENCY_NAME tenantName,\n"
            + "\tGOODS_NAME templateName,\n"
            + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n"
            + "\tcounts num,\n"
            + "\ttotal_amount totalAmount,\n"
            + "\tfo.DEAL_TIME createTime,\n"
            + "\tfo.OPERATOR_NAME,\n"
            + "\tBEIZ remark\n"
            + "FROM\n"
            + "\tl_wh_procure_model pm\n"
            + "\tLEFT JOIN base_goods_models bgm ON pm.BASE_GOODS_MODELS_ID = bgm.id\n"
            + "\tLEFT JOIN base_goods_template bgt ON bgm.GOODS_TEMPLATES_ID = bgt.id\n"
            + "\tLEFT JOIN l_wh_form_output fo ON fo.ID = pm.BUSINESS_ID\n"
            + "WHERE\n"
            + "\tpm.BUSINESS_ID = :id";
        Map<String, Object> param = new HashMap<>();
        param.put("id", id);
        List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
        if (CollectionUtils.isEmpty(select)) {
            return null;
        }
        List<OutputExcelTemplate> list = Lists.newArrayList();
        select.forEach(item -> {
            OutputExcelTemplate templateExcelExport = MapUtils.convertMapToObj(item, OutputExcelTemplate.class);
            list.add(templateExcelExport);
        });
        return list;
    }
}