From b0841619e23dd01b8fba9561ad9036c7c3d6aa08 Mon Sep 17 00:00:00 2001 From: futian.liu <liufutianyoo@163.com> Date: 星期二, 14 十一月 2023 14:05:20 +0800 Subject: [PATCH] 出库单管理 --- consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java | 258 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 230 insertions(+), 28 deletions(-) diff --git a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java index 98db533..6cda935 100644 --- a/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java +++ b/consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java @@ -1,27 +1,41 @@ package com.consum.base.service; -import com.consum.base.Constants; import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; -import com.consum.base.core.param.BaseWarehouseParam1; -import com.consum.base.pojo.*; -import com.consum.base.util.IdUtil; -import com.consum.model.po.*; +import com.consum.base.core.utils.IdUtil; +import com.consum.base.core.utils.MapRowMapper; +import com.consum.base.pojo.LWhFormTransferParam; +import com.consum.base.pojo.LWhProcureModelParams; +import com.consum.base.pojo.LWhProcureModelUserDTO; +import com.consum.base.pojo.query.TransferQry; +import com.consum.model.po.BaseGoodsModels; +import com.consum.model.po.BaseWarehouse; +import com.consum.model.po.FinSysTenant; +import com.consum.model.po.FinSysTenantUser; +import com.consum.model.po.LWhFormOutput; +import com.consum.model.po.LWhFormTransfer; +import com.consum.model.po.LWhGoodsRecord; +import com.consum.model.po.LWhProcureModel; +import com.consum.model.po.LWhProcureModelUser; +import com.consum.model.vo.LWhFormOutputVo; import com.consum.model.vo.LWhFormTransferVo; +import com.consum.model.vo.LWhGoodsRecordVo; +import com.consum.model.vo.LWhProcureModelVo; import com.iplatform.model.po.S_user_core; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.CollectionUtils; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; /** * @Description 璋冩嫧绠$悊 @@ -41,11 +55,22 @@ private LWhGoodsService lWhGoodsService; @Autowired private LWhProcureModelService lWhProcureModelService; + @Autowired + private LWhFormOutputCoreService lWhFormOutputCoreService; + @Autowired + private LWhFormOutputServiceImpl lWhFormOutputService; + @Autowired + private LWhGoodsRecordService lWhGoodsRecordService; + @Autowired + private BaseGoodsModelsServiceImpl baseGoodsModelsService; + @Autowired + private LWhProcureModelUserServiceImpl lWhProcureModelUserService; private static String QUERY_FORM_TRANSFER_LIST = "SELECT * FROM l_wh_form_transfer WHERE 1 = 1"; + /** - * @Description + * @Description 鏂板 * @Author 鍗㈠簡闃� * @Date 2023/10/30 */ @@ -55,7 +80,12 @@ //璋冩嫧鍗昳d long lWhFormTransferId = IdUtil.generateId(); lWhFormTransfer.setId(lWhFormTransferId); - lWhFormTransfer.setBusinessType(0); + + Integer businessType = param.getTransferBusinessType(); + // 涓氬姟绫诲瀷 璋冩嫧/閮ㄩ棬鍒嗗彂/閮ㄩ棬閫�鍥� 鍗曟嵁绫诲瀷銆�0浠撳簱璋冩嫧锛�1閮ㄩ棬鍒嗗彂锛�2閮ㄩ棬鐗╁搧鍥為�� + // TODO 鏋氫妇瀛楀吀 + lWhFormTransfer.setBusinessType(businessType); + lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Transfer)); Long warehouseId = param.getInWarehouseId(); lWhFormTransfer.setInWarehouseId(warehouseId); @@ -79,43 +109,80 @@ lWhFormTransfer.setOperatorId(sysInfo.getId()); lWhFormTransfer.setOperatorName(sysInfo.getUserName()); lWhFormTransfer.setCreateTime(param.getCreateTime()); + //0=寰呭嚭搴擄紱1=寰呮帴鏀讹紱2=宸插叆搴撳簱:4=宸叉挙閿� lWhFormTransfer.setStates(0); lWhFormTransfer.setProcureDoc(param.getProcureDoc()); + + //3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉 + if (businessType == 1) { + //閮ㄩ棬鍒嗗彂绫诲瀷 鍑哄簱浠撳簱绫诲瀷0鏈烘瀯1閮ㄩ棬 + // TODO 鍑哄簱涓氬姟绫诲瀷 鑱旂郴鐢佃瘽 + lWhFormTransfer.setOutWarehouseType(1); + } int flag1 = this.insert(lWhFormTransfer); if (flag1 == 0) { log.error("鏂板璋冩嫧鍗曞け璐�"); return 0; } + //2.鏂板鐗╁搧鍨嬪彿璁板綍 List<LWhProcureModelParams> models = param.getModels(); List<LWhProcureModel> modelList = new ArrayList<>(); for (LWhProcureModelParams model : models) { LWhProcureModel lWhProcureModel = new LWhProcureModel(); lWhProcureModel.setId(IdUtil.generateId()); - lWhProcureModel.setBusinessType(2); + // 鐗╁搧鍨嬪彿涓氬姟绫诲瀷 + lWhProcureModel.setBusinessType(model.getProcureModelBusinessType()); lWhProcureModel.setBusinessId(lWhFormTransferId); lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId()); lWhProcureModel.setCounts(model.getCounts()); //鏍规嵁鐗╁搧鍨嬪彿鏌ヨ鐗╁搧搴撳瓨 - int goodsNum = this.lWhGoodsService.queryGoodsModelNum(warehouseId, model.getBaseGoodsModelsId(), (short) 1, null); + int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null); lWhProcureModel.setWorehouseCount(goodsNum); + + //3.褰撲笟鍔$被鍨嬩负閮ㄩ棬鍒嗗彂鏃� 娣诲姞閮ㄩ棬鍒嗗彂璁板綍鍜屼娇鐢ㄤ汉 + // 鍗曟嵁绫诲瀷 1 閲囪喘2 璋冩嫧 3鍑哄簱4閮ㄩ棬鍒嗗彂 + if (model.getProcureModelBusinessType() == 4) { + List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList(); + for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getLWhProcureModelUserList()) { + LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); + lWhProcureModelUser.setId(IdUtil.generateId()); + lWhProcureModelUser.setTransBusinessId(lWhFormTransferId); + lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId()); + lWhProcureModelUser.setBaseGoodsModelsId(model.getBaseGoodsModelsId()); + lWhProcureModelUser.setNowUserName(lWhProcureModelUserDTO.getNowUserName()); + lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserDTO.getNowUserPhone()); + lWhProcureModelUser.setGoodsNum(lWhProcureModelUserDTO.getGoodsNum()); + procureModelUserList.add(lWhProcureModelUser); + } + int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList); + if (procureInsertNum != procureModelUserList.size()) { + log.error("鏂板鐗╁搧浣跨敤淇℃伅澶辫触"); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return 0; + } + } + modelList.add(lWhProcureModel); } + int flag2 = this.lWhProcureModelService.insert(modelList); if (flag2 != modelList.size()) { log.error("鏂板鐗╁搧鍨嬪彿澶辫触"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return 0; } + return 1; } + /** - * @Description 鍒楄〃鏌ヨ + * @Description 鍒楄〃鏌ヨ * @Author 鍗㈠簡闃� * @Date 2023/10/30 */ - public GenericPager<LWhFormTransfer> queryFormTransferList(LWhFormTransferParam param) { + public GenericPager<LWhFormTransfer> queryFormTransferList(TransferQry param) { HashMap<String, Object> paramts = new HashMap<>(); StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST); //璋冩嫧鍗曞彿 @@ -125,18 +192,19 @@ } //鐗╁搧鍚嶇О if (!StringUtils.isEmpty(param.getGoodsTemplateName())) { - sql.append(" AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)"); + sql.append( + " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)"); paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); } //璋冩嫧鏈烘瀯 - if (param.getOutAgencyId() != null){ + if (param.getOutAgencyId() != null) { sql.append(" and OUT_AGENCY_ID = :OUT_AGENCY_ID "); paramts.put("OUT_AGENCY_ID", param.getOutAgencyId()); } //鎺ユ敹鏈烘瀯 - if (param.getInAgencyId() != null){ - sql.append(" and OUT_AGENCY_ID = :OUT_AGENCY_ID "); - paramts.put("OUT_AGENCY_ID", param.getOutAgencyId() ); + if (param.getInAgencyId() != null) { + sql.append(" and IN_AGENCY_ID = :IN_AGENCY_ID "); + paramts.put("IN_AGENCY_ID", param.getInAgencyId()); } //鐘舵�� if (param.getStates() != null) { @@ -158,13 +226,13 @@ paramts.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000); } //鎺ユ敹鏃堕棿 - if (param.getInTimeStart() != null) { + if (param.getStartTime() != null) { sql.append(" and IN_TIME >=:inTimeStart "); - paramts.put("inTimeStart", param.getInTimeStart() * 1000000); + paramts.put("inTimeStart", param.getStartTime() * 1000000); } - if (param.getInTimeEnd() != null) { + if (param.getEndTime() != null) { sql.append(" and IN_TIME <:inTimeEnd "); - paramts.put("inTimeEnd", param.getInTimeEnd() * 1000000 + 240000); + paramts.put("inTimeEnd", param.getEndTime() * 1000000 + 240000); } sql.append(" ORDER BY CREATE_TIME DESC"); @@ -174,7 +242,7 @@ } /** - * @Description 鏍规嵁id鏌ヨ璇︽儏 + * @Description 鏍规嵁id鏌ヨ璇︽儏 * @Author 鍗㈠簡闃� * @Date 2023/10/30 */ @@ -183,10 +251,144 @@ //1.鏌ヨ璋冩嫧鍗� LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id)); if (lWhFormTransfer != null) { - BeanUtils.copyProperties(lWhFormTransfer,vo); + BeanUtils.copyProperties(lWhFormTransfer, vo); } //2.鏌ヨ鐗╁搧鍨嬪彿 -// this.lWhProcureModelService.getModelByForm(id) - return null; +// List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id); + List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(null, id); + + if (!CollectionUtils.isEmpty(models)) { + List<LWhProcureModelVo> lWhProcureModelVoList = Lists.newArrayList(); + for (LWhProcureModel model : models) { + LWhProcureModelVo lWhProcureModelVo = new LWhProcureModelVo(); + BeanUtils.copyProperties(model, lWhProcureModelVo); + + LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); + lWhProcureModelUser.setWhProcureModelId(model.getId()); + List<LWhProcureModelUser> select = lWhProcureModelUserService.select(lWhProcureModelUser); + lWhProcureModelVo.setProcureModelUsersList(select); + lWhProcureModelVoList.add(lWhProcureModelVo); + } + vo.setModels(lWhProcureModelVoList); + } + return vo; } + + + /** + * @Description 瀵煎嚭璋冩嫧鍑哄簱鍗� + * @Author 鍗㈠簡闃� + * @Date 2023/10/31 + */ + public LWhFormOutputVo export(Long id, S_user_core currentUser) { + LWhFormOutputVo result = new LWhFormOutputVo(); + long dealTime = DateUtils.getDateTimeNumber(System.currentTimeMillis()); + //1.鏍规嵁璋冩嫧鍗曠敓鎴愬嚭搴撳崟 + Long outWarehouseFormId = this.lWhFormOutputCoreService.createOutFormByTransId(id, currentUser, dealTime); + //2.鍑哄簱鍗昳d鏌ヨ鍑哄簱鍗� + LWhFormOutput lWhFormOutput = this.lWhFormOutputService.get(new LWhFormOutput(outWarehouseFormId)); + if (lWhFormOutput != null) { + BeanUtils.copyProperties(lWhFormOutput, result); + } + //3.鏍规嵁杩涘嚭搴撴祦姘存�昏〃id鏌ヨl_wh_goods_record + LWhGoodsRecord record = new LWhGoodsRecord(); + record.setWarehouseFlowId(lWhFormOutput.getWarehouseFlowId()); + List<LWhGoodsRecord> recordList = this.lWhGoodsRecordService.select(record); + List<LWhGoodsRecordVo> voList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(recordList)) { + for (LWhGoodsRecord lWhGoodsRecord : recordList) { + LWhGoodsRecordVo vo = new LWhGoodsRecordVo(); + BeanUtils.copyProperties(lWhGoodsRecord, vo); + //鏍规嵁鍨嬪彿id鏌ヨ鍨嬪彿 + BaseGoodsModels baseGoodsModels = baseGoodsModelsService.get(new BaseGoodsModels(id)); + if (baseGoodsModels != null) { + vo.setUnit(baseGoodsModels.getUnit()); + } + voList.add(vo); + } + } + result.setRecordVoList(voList); + + return result; + } + + /** + * 鎾ら攢 + * + * @author 鍗㈠簡闃� + * @date 2023/10/31 + */ + public int updateStatus(Long id) { + LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id); + lWhFormTransfer.setStates(4); + return this.update(lWhFormTransfer); + } + + public GenericPager<Map<String, Object>> queryTransferInfo(TransferQry transferQry) { + + HashMap<String, Object> paramts = new HashMap<>(); + StringBuilder sql = new StringBuilder("SELECT\n" + + "\tft.id,\n" + + "\tft.BUSINESS_FORM_CODE businessCode,\n" + + "\tbgt.GOODS_NAME goodsName,\n" + + "\tbgt.CLASSIFICATION goodsType,\n" + + "\tbgm.id goodsModelId,\n" + + "\tbgm.MODEL_NAME goodsModelName,\n" + + "\tpm.COUNTS goodsCount,\n" + + "\tfst.`name` tennatName,\n" + + "\tfstd.NAME departmentName,\n" + + "\tft.OPERATOR_ID distributor,\n" + + "\tft.CREATE_TIME TIME \n" + + "FROM\n" + + "\tl_wh_form_transfer ft\n" + + "\tLEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n" + + "\tLEFT JOIN base_goods_models bgm ON bgm.GOODS_TEMPLATES_ID = pm.BASE_GOODS_MODELS_ID\n" + + "\tLEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID\n" + + "\tLEFT JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID\n" + + "\tLEFT JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID \n" + + "\tLEFT JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where 1=1 "); + //鍗曞彿 + if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) { + sql.append("AND BUSINESS_FORM_CODE like :businessFormCode "); + paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT); + } + //鐗╁搧鍚嶇О + if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) { + sql.append("AND bgt.GOODS_NAME like:goodsName "); + paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); + } + // 瑙勬牸鍨嬪彿 + if (transferQry.getBaseGoodsTemplateId() != null) { + sql.append("AND bgm.id =:goodsModelId "); + paramts.put("goodsModelId", transferQry.getBaseGoodsTemplateId()); + } + //璋冩嫧鏈烘瀯 + if (transferQry.getOutAgencyId() != null) { + sql.append("AND OUT_AGENCY_ID = :OUT_AGENCY_ID "); + paramts.put("OUT_AGENCY_ID", transferQry.getOutAgencyId()); + } + + //鍒涘缓浜� + if (StringUtils.isNotEmpty(transferQry.getOperatorName())) { + sql.append("AND ft.OPERATOR_NAME =:OPERATOR_NAME "); + paramts.put("OPERATOR_NAME", transferQry.getOperatorName()); + } + //鐢宠鏃堕棿 + if (transferQry.getCreateTimeStart() != null) { + sql.append("AND ft.CREATE_TIME >=:createTimeStart "); + paramts.put("createTimeStart", transferQry.getCreateTimeStart() * 1000000); + } + if (transferQry.getCreateTimeEnd() != null) { + sql.append("AND ft.CREATE_TIME <:createTimeEnd "); + paramts.put("createTimeEnd", transferQry.getCreateTimeEnd() * 1000000 + 240000); + } + sql.append("ORDER BY ft.CREATE_TIME DESC"); + + GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(), + new MapRowMapper()); + + return mapGenericPager; + } + + } -- Gitblit v1.9.1