consum-base/src/main/java/com/consum/base/service/DepFormScrappedServiceImpl.java
@@ -3,6 +3,8 @@
import cn.hutool.core.convert.Convert;
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.DepFormScrappedCoreServiceImpl;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.DepFormScrappedGoodsParam;
import com.consum.base.pojo.DepFormScrappedModelParam;
@@ -15,7 +17,6 @@
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import com.walker.web.ResponseValue;
@@ -43,15 +44,18 @@
    @Resource
    private CodeGeneratorService codeGeneratorService;
    @Resource
    private FinSysTenantDepartmentServiceImpl departmentService;
    private FinSysTenantDepartmentService departmentService;
    @Resource
    private LWhFormTransferServiceImpl lWhFormTransferService;
    private LWhFormTransferService lWhFormTransferService;
    @Resource
    private BaseCategoryServiceImpl baseCategoryService;
    private BaseCategoryService baseCategoryService;
    @Resource
    private SDictDataServiceImpl sDictDataService;
    @Resource
    private BaseGoodsModelsServiceImpl baseGoodsModelsService;
    private BaseGoodsModelsService baseGoodsModelsService;
    @Resource
    private DepFormScrappedCoreServiceImpl depFormScrappedCoreService;
    @Transactional
    public ResponseValue add(LDeptFormScrappedParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
@@ -60,7 +64,7 @@
        //1.新增报废单记录
        DepFormScrapped lDeptFormScrapped = new DepFormScrapped();
        //报废单id
        long lWhFormScrappedId = NumberGenerator.getLongSequenceNumber();
        long lWhFormScrappedId = IdUtil.generateId();
        lDeptFormScrapped.setId(lWhFormScrappedId);
        lDeptFormScrapped.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Scrapped));
        lDeptFormScrapped.setProcureDoc(param.getProcureDoc());
@@ -86,7 +90,6 @@
            lDeptFormScrapped.setDepartmentName(department.getName());
        }
        lDeptFormScrapped.setCreateTime(dealTime);
        lDeptFormScrapped.setStates(1);
@@ -100,7 +103,7 @@
        for (DepFormScrappedGoodsParam depFormScrappedGoodsParam : scrappedGoodsInfo) {
            DepFormScrappedGoods depFormScrappedGoods = new DepFormScrappedGoods();
            depFormScrappedGoods.setId(NumberGenerator.getLongSequenceNumber());
            depFormScrappedGoods.setId(IdUtil.generateId());
            depFormScrappedGoods.setDepFormScrappedId(lWhFormScrappedId);
            depFormScrappedGoods.setBaseGoodsTemplateId(depFormScrappedGoodsParam.getBaseGoodsTemplateId());
            depFormScrappedGoods.setBaseGoodsTemplateName(depFormScrappedGoodsParam.getGoodsTemplateName());
@@ -138,7 +141,7 @@
            for (DepFormScrappedModelParam depFormScrappedModelParam : modelList) {
                DepFormScrappedModel depFormScrappedModel = new DepFormScrappedModel();
                depFormScrappedModel.setId(NumberGenerator.getLongSequenceNumber());
                depFormScrappedModel.setId(IdUtil.generateId());
                depFormScrappedModel.setDepFormScrappedId(lWhFormScrappedId);
                depFormScrappedModel.setDepFormScrappedGoodsId(depFormScrappedGoods.getId());
                //报废原因
@@ -183,6 +186,7 @@
        }
        int i = insertBatch(scrappedGoodsArrayList);
        int i2 = insertBatch(modelArrayList);
        depFormScrappedCoreService.updateScrapped(lWhFormScrappedId,currentUser,dealTime);
        return ResponseValue.success();
    }
@@ -202,8 +206,8 @@
            paramts.put("businessFormCode", param.getBusinessFormCode());
        }
        //机构
        sql.append(" and scrap.AGENCY_ID = :agencyId ");
        if (param.getAgencyId() != null) {
            sql.append(" and scrap.AGENCY_ID = :agencyId ");
            paramts.put("agencyId", param.getAgencyId());
        }
        //物品名称
@@ -244,6 +248,7 @@
        //2.查询报废单物品
        DepFormScrappedGoods goodsQuery = new DepFormScrappedGoods();
        goodsQuery.setDepFormScrappedId(id);
        List<DepFormScrappedGoods> formScrappedGoodsList = select(goodsQuery);
        List<Map> goodsList = new ArrayList<>();
        for (DepFormScrappedGoods scrappedGoods : formScrappedGoodsList) {
@@ -253,15 +258,21 @@
            DepFormScrappedModel depFormScrappedModel = new DepFormScrappedModel();
            depFormScrappedModel.setDepFormScrappedGoodsId(scrappedGoodsId);
            List<DepFormScrappedModel> scrappedModelList = select(depFormScrappedModel);
            scrappedGoodsMap.put("models", scrappedModelList);
            List<List<DepFormScrappedModel>> modelList = scrappedModelList.stream()
                .collect(Collectors.groupingBy(DepFormScrappedModel::getBaseGoodsModelsId))
                .values().stream()
                .map(list -> list.stream().collect(Collectors.toList()))
                .collect(Collectors.toList());
            scrappedGoodsMap.put("models", modelList);
            goodsList.add(scrappedGoodsMap);
        }
        scrappedExtend.setGoods(goodsList);
        return scrappedExtend;
    }
    private static String EXPORT_SQL = "SELECT scrap.BUSINESS_FORM_CODE,scrap.DEAL_TIME,scrap.OPERATOR_NAME,scrap.AGENCY_NAME,model.BASE_GOODS_TEMPLATE_NAME,model.BASE_GOODS_MODELS_NAME,scrap.OUT_WAREHOUSE_NAME,model.COUNTS,2 AS TOTAL_PRICE,model.SCRAPPED_NAME,NULL AS bz FROM DEP_FORM_SCRAPPED scrap LEFT JOIN DEP_FORM_SCRAPPED_MODEL model ON scrap.id=model.DEP_FORM_SCRAPPED_ID WHERE 1=1 ";
    private static String EXPORT_SQL_END = "order by scrap.BUSINESS_FORM_CODE desc ";
    private static String EXPORT_SQL = "SELECT scrap.id,scrap.BUSINESS_FORM_CODE,model.BASE_GOODS_TEMPLATE_NAME,model.BASE_GOODS_MODELS_NAME,model.COUNTS,scrap.AGENCY_NAME,scrap.DEPARTMENT_NAME,scrap.OPERATOR_NAME,scrap.DEAL_TIME,scrap.OUT_WAREHOUSE_NAME,ROUND( IFNULL( TOTAL_AMOUNT, 0 )/ 100, 2 ) AS TOTAL_PRICE,model.SCRAPPED_NAME,NULL AS bz FROM DEP_FORM_SCRAPPED scrap LEFT JOIN DEP_FORM_SCRAPPED_MODEL model ON scrap.id=model.DEP_FORM_SCRAPPED_ID WHERE 1=1 ";
    private static String EXPORT_SQL_END = "order by scrap.DEAL_TIME DESC";
    public List<Map<String, Object>> export(Long id, String agencyId) {
        HashMap<String, Object> paramts = new HashMap<>();
@@ -278,4 +289,130 @@
        }
        return select(sql.append(EXPORT_SQL_END).toString(), paramts, new MapperUtil());
    }
    public List<Map<String, Object>> listByModel(LDeptFormScrappedQry param) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder(EXPORT_SQL);
        //报废单id
        if (param.getId() != null) {
            sql.append(" and scrap.id = :id");
            paramts.put("id", param.getId());
        }
        //报废单号
        if (param.getBusinessFormCode() != null) {
            sql.append(" and scrap.BUSINESS_FORM_CODE= :businessFormCode");
            paramts.put("businessFormCode", param.getBusinessFormCode());
        }
        //物品名称
        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
            sql.append(" and model.BASE_GOODS_TEMPLATE_NAME LIKE :goodsTemplateName ");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sql.append("and model.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
        }
        //机构
        if (param.getAgencyId() != null) {
            sql.append(" and scrap.AGENCY_ID = :agencyId ");
            paramts.put("agencyId", param.getAgencyId());
        }
        // 部门 此处按的是物品使用部门 而不是 操作人所在部门
        if (param.getDepartmentId() != null) {
            sql.append(" and scrap.OUT_WAREHOUSE_ID= :departmentId");
            paramts.put("departmentId", param.getDepartmentId());
        }
        //创建人
        if (!StringUtils.isEmpty(param.getOperatorName())) {
            sql.append(" and scrap.OPERATOR_NAME LIKE :operatorName ");
            paramts.put("operatorName", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT);
        }
        //报废时间
        if (param.getStartTime() != null) {
            sql.append(" and scrap.DEAL_TIME >=:dealTimeStart ");
            paramts.put("dealTimeStart", param.getStartTime() * 1000000);
        }
        if (param.getEndTime() != null) {
            sql.append(" and scrap.DEAL_TIME <:dealTimeEnd ");
            paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        return select(sql.append(EXPORT_SQL_END).toString(), paramts, new MapperUtil());
    }
    public GenericPager<Map<String, Object>> listByModel2(LDeptFormScrappedQry param) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder(EXPORT_SQL);
        //报废单id
        if (param.getId() != null) {
            sql.append(" and scrap.id = :id");
            paramts.put("id", param.getId());
        }
        //报废单号
        if (param.getBusinessFormCode() != null) {
            sql.append(" and scrap.BUSINESS_FORM_CODE= :businessFormCode");
            paramts.put("businessFormCode", param.getBusinessFormCode());
        }
        //物品名称
        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
            sql.append(" and model.BASE_GOODS_TEMPLATE_NAME LIKE :goodsTemplateName ");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //规格型号
        if (param.getBaseGoodsModelsId() != null) {
            sql.append("and model.BASE_GOODS_MODELS_ID =:baseGoodsModelsId ");
            paramts.put("baseGoodsModelsId", param.getBaseGoodsModelsId());
        }
        //机构
        if (param.getAgencyId() != null) {
            sql.append(" and scrap.AGENCY_ID = :agencyId ");
            paramts.put("agencyId", param.getAgencyId());
        }
        // 部门 此处按的是物品使用部门 而不是 操作人所在部门
        if (param.getDepartmentId() != null) {
            sql.append(" and scrap.OUT_WAREHOUSE_ID= :departmentId");
            paramts.put("departmentId", param.getDepartmentId());
        }
        //创建人
        if (!StringUtils.isEmpty(param.getOperatorName())) {
            sql.append(" and scrap.OPERATOR_NAME LIKE :operatorName ");
            paramts.put("operatorName", StringUtils.CHAR_PERCENT + param.getOperatorName() + StringUtils.CHAR_PERCENT);
        }
        //报废时间
        if (param.getStartTime() != null) {
            sql.append(" and scrap.DEAL_TIME >=:dealTimeStart ");
            paramts.put("dealTimeStart", param.getStartTime() * 1000000);
        }
        if (param.getEndTime() != null) {
            sql.append(" and scrap.DEAL_TIME <:dealTimeEnd ");
            paramts.put("dealTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        return selectSplit(sql.append(EXPORT_SQL_END).toString(),paramts, param.getPageNum(), param.getPageSize(),  new MapperUtil());
//        return select(sql.append(EXPORT_SQL_END).toString(), paramts, new MapperUtil());
    }
    private static String GET_BF_MODEL_LIST = "SELECT\n" +
            "\tscrGoods.TRANS_BUSINESS_ID,\n" +
            "\tscrGoods.BUSINESS_FORM_CODE,\n" +
            "\tscrGoods.TRANS_OUT_WAREHOUSE_TYPE,\n" +
            "\tscrGoods.TRANS_OUT_WAREHOUSE_ID,\n" +
            "\tgoodsModel.BASE_GOODS_TEMPLATE_ID,\n" +
            "\tgoodsModel.COUNTS,\n" +
            "\tgoodsModel.PROCURE_MODEL_USER_ID,\n" +
            "\tgoodsModel.GOODS_USER_NAME \n" +
            "FROM\n" +
            "\tDEP_FORM_SCRAPPED_GOODS scrGoods\n" +
            "\tLEFT JOIN DEP_FORM_SCRAPPED_MODEL goodsModel ON scrgoods.id = goodsModel.DEP_FORM_SCRAPPED_GOODS_ID";
    public List<Map<String, Object>> getBfModelList(Long lWhFormScrappedId) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder(GET_BF_MODEL_LIST);
        //报废单id
        sql.append(" and scrGoods.DEP_FORM_SCRAPPED_ID = :lWhFormScrappedId");
        paramts.put("lWhFormScrappedId", lWhFormScrappedId);
        return select(sql.toString(), paramts, new MapperUtil());
    }
}