cy
2023-11-20 717ff115ee5c57c8df0fd491b40b848090d2c68e
consum-base/src/main/java/com/consum/base/service/LWhFormInventoryServiceImpl.java
@@ -2,9 +2,10 @@
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.MapRowMapper;
import com.consum.base.pojo.LWhFormInventoryDto;
import com.consum.base.pojo.LWhFormInventoryParam;
import com.consum.base.util.IdUtil;
import com.consum.base.core.utils.IdUtil;
import com.consum.model.po.*;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
@@ -17,7 +18,6 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -53,6 +53,18 @@
            "                      AND STATES = ?\n" +
            "                    GROUP BY BASE_GOODS_MODELS_ID) record ON record.BASE_GOODS_MODELS_ID = model.id\n" +
            "left join base_goods_template bgt on bgt.ID = model.GOODS_TEMPLATES_ID; ";
    private static final String QUERY_PD_DETAIL_LIST = "select lwfi.WAREHOUSE_NAME,lwfig.GOODS_TEMPLATE_NAME,\n" +
            "       lwfig.BASE_GOODS_MODELS_NAME,\n" +
            "       lwfig.INVENTORY_RESULT,\n" +
            "       lwfig.INIT_COUNTS,\n" +
            "       lwfig.INVENTORY_COUNTS,\n" +
            "       lwfig.ERROR_COUNTS,\n" +
            "       lwfi.AGENCY_NAME,\n" +
            "       lwfi.OPERATOR_NAME,\n" +
            "       lwfi.STOP_TIME\n" +
            "from l_wh_form_inventory lwfi\n" +
            "         inner join l_wh_form_inventory_goods lwfig on lwfi.ID = lwfig.WH_FORM_INVENTORY_ID ";
    /**
     * @Description 新增
@@ -165,9 +177,140 @@
     */
    public int temporaryStorage(LWhFormInventoryDto dto) {
        //1.根据盘点单id查询盘点单
        //2.删除盘点单物品
        //3.新增盘点单物品
        return 0;
        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
        if (lWhFormInventory == null) {
            log.error("根据盘点单id查询盘点单 失败");
            return 0;
        }
        //2.修改盘点单
        lWhFormInventory.setStates(1);
        lWhFormInventory.setInventoryDate(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        int flag1 = this.update(lWhFormInventory);
        if (flag1 == 0) {
            log.error("修改盘点单 失败");
            return 0;
        }
        //3.更新盘点单物品
        List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList();
        int flag2 = inventoryGoodsService.update(inventoryGoodsList);
        if (flag2 != inventoryGoodsList.size()) {
            log.error("更新盘点单物品 失败");
            return 0;
        }
        return 1;
    }
    /**
     * 完成盘点
     * @author 卢庆阳
     * @date 2023/10/31
     */
    public int finishPd(LWhFormInventoryDto dto) {
        //1.根据盘点单id查询盘点单
        LWhFormInventory lWhFormInventory = this.get(new LWhFormInventory(dto.getId()));
        if (lWhFormInventory == null) {
            log.error("根据盘点单id查询盘点单 失败");
            return 0;
        }
        //2.修改盘点单
        lWhFormInventory.setStates(2);
        lWhFormInventory.setStopTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        int flag1 = this.update(lWhFormInventory);
        if (flag1 == 0) {
            log.error("修改盘点单 失败");
            return 0;
        }
        //3.更新盘点单物品
        List<LWhFormInventoryGoods> inventoryGoodsList = dto.getInventoryGoodsList();
        if (CollectionUtils.isEmpty(inventoryGoodsList)) {
            log.error("盘点单物品 为空");
            return 0;
        }
        for (LWhFormInventoryGoods inventoryGoods : inventoryGoodsList) {
            int errorCounts = inventoryGoods.getInitCounts() - inventoryGoods.getInventoryCounts();
            if (errorCounts >0 ) {
                inventoryGoods.setInventoryResult(3);
            } else if (errorCounts <0){
                inventoryGoods.setInventoryResult(2);
            } else {
                inventoryGoods.setInventoryResult(1);
            }
            inventoryGoods.setErrorCounts(Math.abs(errorCounts));
        }
        int flag2 = inventoryGoodsService.update(inventoryGoodsList);
        if (flag2 != inventoryGoodsList.size()) {
            log.error("更新盘点单物品 失败");
            return 0;
        }
        return 1;
    }
    /**
     * @Description 异常明细列表查询
     * @Author 卢庆阳
     * @Date 2023/11/1
     * @return
     */
    public GenericPager<Map<String, Object>> queryPdDetailList(LWhFormInventoryParam param, FinSysTenantUser sysInfo) {
        StringBuilder sql = new StringBuilder(QUERY_PD_DETAIL_LIST);
        HashMap<String, Object> paramts = new HashMap<>();
        //机构
        sql.append(" and AGENCY_ID like:AGENCY_ID ");
        if (param.getAgencyId() != null) {
            paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT);
        } else {
            paramts.put("AGENCY_ID", sysInfo.getTenantId() + StringUtils.CHAR_PERCENT);
        }
        //仓库编号
        if (param.getWarehouseId() != null) {
            sql.append(" and WAREHOUSE_ID =:WAREHOUSE_ID ");
            paramts.put("WAREHOUSE_ID", param.getWarehouseId());
        }
        //物品名称
        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
            sql.append(" and GOODS_TEMPLATE_NAME =:GOODS_TEMPLATE_NAME ");
            paramts.put("GOODS_TEMPLATE_NAME", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sql.append(" and BASE_GOODS_MODELS_ID =:BASE_GOODS_MODELS_ID ");
            paramts.put("BASE_GOODS_MODELS_ID", param.getBaseGoodsModelsId());
        }
        //类型(出入库类型)
        Integer inventoryResult = param.getInventoryResult();
        if (inventoryResult != null) {
            sql.append(" and INVENTORY_RESULT =:INVENTORY_RESULT ");
            paramts.put("INVENTORY_RESULT", inventoryResult);
        }
        //出入库单号
        if (param.getWarehouseFormCode() != null) {
            if (inventoryResult == 2) { //盘盈入库
                sql.append(" and IN_BUSINESS_FORM_CODE =:IN_BUSINESS_FORM_CODE ");
                paramts.put("IN_BUSINESS_FORM_CODE", StringUtils.CHAR_PERCENT + param.getWarehouseFormCode() + StringUtils.CHAR_PERCENT);
            } else {  //盘亏出库
                sql.append(" and OUT_BUSINESS_FORM_CODE =:OUT_BUSINESS_FORM_CODE ");
                paramts.put("OUT_BUSINESS_FORM_CODE", StringUtils.CHAR_PERCENT + param.getWarehouseFormCode() + StringUtils.CHAR_PERCENT);
            }
        }
        //操作人
        if (!StringUtils.isEmpty(param.getOperatorName())) {
            sql.append(" and OPERATOR_NAME =:OPERATOR_NAME ");
            paramts.put("OPERATOR_NAME", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT);
        }
        //结束时间
        if (param.getStopTimeStart() != null) {
            sql.append(" and STOP_TIME >=:stopTimeStart ");
            paramts.put("stopTimeStart", param.getStopTimeStart() * 1000000);
        }
        if (param.getStopTimeEnd() != null) {
            sql.append(" and STOP_TIME <:stopTimeEnd ");
            paramts.put("stopTimeEnd", param.getStopTimeEnd() * 1000000 + 240000);
        }
        sql.append(" ORDER BY CREATE_TIME DESC ");
        return selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapRowMapper());
    }
}