| | |
| | | |
| | | import com.consum.base.core.CodeGeneratorEnum; |
| | | import com.consum.base.core.CodeGeneratorService; |
| | | import com.consum.base.core.tools.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.TransferQryDto; |
| | | import com.consum.base.util.IdUtil; |
| | | import com.consum.model.po.BaseGoodsModels; |
| | | 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.LWhFormTransferGoodsInfoParam; |
| | | import com.consum.base.pojo.LWhProcureModelUserParam; |
| | | import com.consum.base.pojo.LWhTransferModelParam; |
| | | import com.consum.base.pojo.excel.TemplateExcelTransfer; |
| | | import com.consum.base.pojo.query.TransferQry; |
| | | import com.consum.base.pojo.request.LWhFormTransferParam; |
| | | import com.consum.base.pojo.response.DepartGoodsUseInfo; |
| | | import com.consum.base.pojo.response.FormTransferGoodsVO; |
| | | import com.consum.base.pojo.response.GoodsModelVO; |
| | | import com.consum.base.pojo.response.LWHFromTransferExtendVO; |
| | | import com.consum.model.po.BaseWarehouse; |
| | | import com.consum.model.po.BaseWarehouseManager; |
| | | 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.consum.model.po.LWhProcureModelUserRecord; |
| | | import com.walker.db.page.GenericPager; |
| | | import com.walker.infrastructure.utils.DateUtils; |
| | | import com.walker.infrastructure.utils.StringUtils; |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | import org.apache.commons.compress.utils.Lists; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private BaseGoodsModelsServiceImpl baseGoodsModelsService; |
| | | @Autowired |
| | | private LWhProcureModelUserServiceImpl lWhProcureModelUserService; |
| | | @Autowired |
| | | private LWhProcureModelUserRecordServiceImpl lWhProcureModelUserRecordService; |
| | | @Autowired |
| | | private BaseWarehouseManagerServiceImpl baseWarehouseManagerService; |
| | | @Autowired |
| | | private BaseGoodsTemplateServiceImpl baseGoodsTemplateService; |
| | | |
| | | private static String QUERY_FORM_TRANSFER_LIST = "SELECT * FROM l_wh_form_transfer WHERE 1 = 1"; |
| | | private static String QUERY_FORM_TRANSFER_LIST = "SELECT ft.* FROM l_wh_form_transfer ft " |
| | | + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id " |
| | | + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID " |
| | | + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 "; |
| | | |
| | | |
| | | /** |
| | |
| | | * @Author 卢庆阳 |
| | | * @Date 2023/10/30 |
| | | */ |
| | | public int add(LWhFormTransferParam param, S_user_core currentUser, FinSysTenantUser sysInfo) { |
| | | public long add(LWhFormTransferParam param, FinSysTenantUser sysInfo) throws Exception { |
| | | //1.新增调拨单记录 |
| | | LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(); |
| | | //调拨单id |
| | |
| | | lWhFormTransfer.setId(lWhFormTransferId); |
| | | |
| | | Integer businessType = param.getTransferBusinessType(); |
| | | // 业务类型 调拨/部门分发/部门退回 单据类型。0仓库调拨;1部门分发;2部门物品回退 |
| | | // 单据类型。0仓库调拨;1部门分发;2部门物品回退 |
| | | // TODO 枚举字典 |
| | | lWhFormTransfer.setBusinessType(businessType); |
| | | |
| | | lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Transfer)); |
| | | Long warehouseId = param.getInWarehouseId(); |
| | | lWhFormTransfer.setInWarehouseId(warehouseId); |
| | | //根据仓库id查询仓库 |
| | | BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId); |
| | | if (warehouse == null) { |
| | | log.error("仓库不存在"); |
| | | return 0; |
| | | CodeGeneratorEnum codeGeneratorEnum = null; |
| | | if (businessType == 0) { |
| | | codeGeneratorEnum = CodeGeneratorEnum.Transfer; |
| | | } else if (businessType == 1) { |
| | | codeGeneratorEnum = CodeGeneratorEnum.Distribute; |
| | | } else if (businessType == 2) { |
| | | codeGeneratorEnum = CodeGeneratorEnum.GOBACK; |
| | | } |
| | | lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName()); |
| | | lWhFormTransfer.setInAgencyId(Long.valueOf(sysInfo.getTenantId())); |
| | | lWhFormTransfer.setInAgencyName(sysInfo.getTenantName()); |
| | | |
| | | lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(codeGeneratorEnum)); |
| | | |
| | | Long warehouseId = param.getInWarehouseId(); |
| | | // 调拨类型单据 |
| | | if (businessType == 0) { |
| | | //入库仓库为当前用户的默认仓库 |
| | | String tenantId = sysInfo.getTenantId(); |
| | | String tenantName = sysInfo.getTenantName(); |
| | | BaseWarehouse warehouse = baseWarehouseService.getDefaultWarehouseByAgencyId(Long.valueOf(tenantId)); |
| | | if (warehouse == null) { |
| | | log.error("仓库不存在"); |
| | | throw new Exception("仓库不存在"); |
| | | } |
| | | lWhFormTransfer.setInWarehouseId(warehouse.getId()); |
| | | lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName()); |
| | | lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId)); |
| | | lWhFormTransfer.setInAgencyName(tenantName); |
| | | } |
| | | //当业务类型为部门分发时 添加部门分发记录和使用人 |
| | | if (businessType == 1) { |
| | | //部门分发类型 出库仓库类型0机构1部门 |
| | | //从当前登录库管人从库中出库,入到所选部门的下 |
| | | |
| | | //查询库管员信息和相关仓库 |
| | | Long id = sysInfo.getId(); |
| | | BaseWarehouseManager manager = new BaseWarehouseManager(); |
| | | manager.setManagerId(id); |
| | | List<BaseWarehouseManager> managerList = baseWarehouseManagerService.select(manager); |
| | | if (CollectionUtils.isEmpty(managerList)) { |
| | | log.error("该用户不是库管员"); |
| | | throw new Exception("该用户不是库管员"); |
| | | } |
| | | Optional<BaseWarehouseManager> first = managerList.stream().findFirst(); |
| | | if (first.isPresent()) { |
| | | BaseWarehouseManager baseWarehouseManager = first.get(); |
| | | Long baseWarehouseId = baseWarehouseManager.getBaseWarehouseId(); |
| | | BaseWarehouse baseWarehouse = new BaseWarehouse(); |
| | | baseWarehouse.setId(baseWarehouseId); |
| | | BaseWarehouse warehouse = baseWarehouseService.get(baseWarehouse); |
| | | |
| | | lWhFormTransfer.setInWarehouseType(1); |
| | | lWhFormTransfer.setInWarehouseId(param.getDepartmentId()); |
| | | lWhFormTransfer.setInWarehouseName(param.getDepartmentName()); |
| | | lWhFormTransfer.setInOperatorName(param.getOperatorName()); |
| | | lWhFormTransfer.setInTime(param.getCreateTime()); |
| | | |
| | | lWhFormTransfer.setOutWarehouseType(0); |
| | | lWhFormTransfer.setOutWarehouseId(warehouse.getId()); |
| | | lWhFormTransfer.setOutWarehouseName(warehouse.getWarehouseName()); |
| | | |
| | | lWhFormTransfer.setOutOperatorId(sysInfo.getId()); |
| | | lWhFormTransfer.setOutOperatorName(sysInfo.getUserName()); |
| | | lWhFormTransfer.setOutputTime(param.getCreateTime()); |
| | | lWhFormTransfer.setTel(param.getTel()); |
| | | } |
| | | } |
| | | |
| | | //根据机构id查询调拨机构 |
| | | FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId())); |
| | | if (finSysTenant == null) { |
| | | log.error("调拨机构不存在"); |
| | | return 0; |
| | | } |
| | | lWhFormTransfer.setOutAgencyId(finSysTenant.getId()); |
| | | lWhFormTransfer.setOutAgencyName(finSysTenant.getName()); |
| | |
| | | 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<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods(); |
| | | List<LWhProcureModel> modelList = new ArrayList<>(); |
| | | for (LWhProcureModelParams model : models) { |
| | | LWhProcureModel lWhProcureModel = new LWhProcureModel(); |
| | | lWhProcureModel.setId(IdUtil.generateId()); |
| | | // 物品型号业务类型 |
| | | lWhProcureModel.setBusinessType(model.getProcureModelBusinessType()); |
| | | lWhProcureModel.setBusinessId(lWhFormTransferId); |
| | | lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId()); |
| | | lWhProcureModel.setCounts(model.getCounts()); |
| | | //根据物品型号查询物品库存 |
| | | int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null); |
| | | lWhProcureModel.setWorehouseCount(goodsNum); |
| | | for (LWhFormTransferGoodsInfoParam transferGoodsInfo : transferGoods) { |
| | | for (LWhTransferModelParam model : transferGoodsInfo.getModels()) { |
| | | LWhProcureModel lWhProcureModel = new LWhProcureModel(); |
| | | lWhProcureModel.setId(IdUtil.generateId()); |
| | | // 调拨业务类型转换到物品类型 |
| | | // 物品类型 1 采购2 调拨 3出库4部门分发 |
| | | Long baseGoodsModelsId = model.getBaseGoodsModelsId(); |
| | | if (businessType == 0) { |
| | | lWhProcureModel.setBusinessType(2); |
| | | //根据物品型号查询物品库存 |
| | | int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null); |
| | | lWhProcureModel.setWorehouseCount(goodsNum); |
| | | } |
| | | if (businessType == 1) { |
| | | lWhProcureModel.setBusinessType(4); |
| | | } |
| | | lWhProcureModel.setCounts(model.getCounts()); |
| | | lWhProcureModel.setBusinessId(lWhFormTransferId); |
| | | lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId); |
| | | //根据型号id查询型号 |
| | | List<Map<String, Object>> baseGoodsModels = this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId); |
| | | Map<String, Object> baseModelMap = baseGoodsModels.get(0); |
| | | if (baseGoodsModels != null && !CollectionUtils.isEmpty(baseModelMap)) { |
| | | Object modelName = baseModelMap.get("modelName"); |
| | | lWhProcureModel.setBaseGoodsModelsName(modelName.toString()); |
| | | } |
| | | lWhProcureModel.setSupplier(transferGoodsInfo.getSupplier()); |
| | | |
| | | //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); |
| | | //3.当业务类型为部门分发时 添加部门分发记录和使用人 |
| | | // 单据类型 1 采购2 调拨 3出库4部门分发 |
| | | //部门分发类型 |
| | | if (businessType == 1 && "A".equals(baseModelMap.get("type"))) { |
| | | LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord(); |
| | | lWhProcureModelUserRecord.setId(IdUtil.generateId()); |
| | | lWhProcureModelUserRecord.setTransBusinessId(lWhFormTransferId); |
| | | lWhProcureModelUserRecord.setOperatorId(sysInfo.getId()); |
| | | lWhProcureModelUserRecord.setOperatorName(sysInfo.getUserName()); |
| | | lWhProcureModelUserRecordService.insert(lWhProcureModelUserRecord); |
| | | |
| | | List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList(); |
| | | for (LWhProcureModelUserParam lWhProcureModelUserParam : model.getProcureModelUserList()) { |
| | | LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); |
| | | lWhProcureModelUser.setId(IdUtil.generateId()); |
| | | lWhProcureModelUser.setTransBusinessId(lWhFormTransferId); |
| | | lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId()); |
| | | lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId); |
| | | lWhProcureModelUser.setNowUserName(lWhProcureModelUserParam.getNowUserName()); |
| | | lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserParam.getNowUserPhone()); |
| | | lWhProcureModelUser.setGoodsNum(lWhProcureModelUserParam.getGoodsNum()); |
| | | lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId()); |
| | | procureModelUserList.add(lWhProcureModelUser); |
| | | } |
| | | int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList); |
| | | if (procureInsertNum != procureModelUserList.size()) { |
| | | log.error("新增物品使用信息失败"); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | |
| | | } |
| | | int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList); |
| | | if (procureInsertNum != procureModelUserList.size()) { |
| | | log.error("新增物品使用信息失败"); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return 0; |
| | | } |
| | | |
| | | modelList.add(lWhProcureModel); |
| | | } |
| | | |
| | | modelList.add(lWhProcureModel); |
| | | } |
| | | |
| | | int flag2 = this.lWhProcureModelService.insert(modelList); |
| | | if (flag2 != modelList.size()) { |
| | | log.error("新增物品型号失败"); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return 0; |
| | | } |
| | | |
| | | return 1; |
| | | return lWhFormTransferId; |
| | | } |
| | | |
| | | |
| | |
| | | * @Author 卢庆阳 |
| | | * @Date 2023/10/30 |
| | | */ |
| | | public GenericPager<LWhFormTransfer> queryFormTransferList(TransferQryDto param) { |
| | | public GenericPager<LWhFormTransfer> queryFormTransferList(TransferQry param) { |
| | | HashMap<String, Object> paramts = new HashMap<>(); |
| | | StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST); |
| | | //调拨单号 |
| | | if (!StringUtils.isEmpty(param.getBusinessFormCode())) { |
| | | sql.append(" and BUSINESS_FORM_CODE like :businessFormCode "); |
| | | paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT); |
| | | sql.append(" and BUSINESS_FORM_CODE = :businessFormCode "); |
| | | paramts.put("businessFormCode", param.getBusinessFormCode()); |
| | | } |
| | | if (param.getQryType() != null) { |
| | | sql.append("and ft.BUSINESS_TYPE = :businessType "); |
| | | paramts.put("businessType", param.getQryType()); |
| | | } |
| | | //物品名称 |
| | | 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 bgt.GOODS_NAME LIKE :goodsTemplateName "); |
| | | paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //调拨机构 |
| | |
| | | } |
| | | //状态 |
| | | if (param.getStates() != null) { |
| | | sql.append(" and states =:states "); |
| | | sql.append(" and ft.states =:states "); |
| | | paramts.put("states", param.getStates()); |
| | | } |
| | | //创建人 |
| | |
| | | } |
| | | //申请时间 |
| | | if (param.getCreateTimeStart() != null) { |
| | | sql.append(" and CREATE_TIME >=:createTimeStart "); |
| | | sql.append(" and ft.CREATE_TIME >=:createTimeStart "); |
| | | paramts.put("createTimeStart", param.getCreateTimeStart() * 1000000); |
| | | } |
| | | if (param.getCreateTimeEnd() != null) { |
| | | sql.append(" and CREATE_TIME <:createTimeEnd "); |
| | | sql.append(" and ft.CREATE_TIME <:createTimeEnd "); |
| | | 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); |
| | | } |
| | | //分发部门 |
| | | if (param.getInWarehouseId() != null) { |
| | | sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId "); |
| | | paramts.put("inWarehouseId", param.getInWarehouseId()); |
| | | } |
| | | |
| | | sql.append(" ORDER BY CREATE_TIME DESC"); |
| | | sql.append(" ORDER BY ft.CREATE_TIME DESC"); |
| | | GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormTransfer()); |
| | | return genericPager; |
| | | |
| | |
| | | * @Author 卢庆阳 |
| | | * @Date 2023/10/30 |
| | | */ |
| | | public LWhFormTransferVo getById(Long id) { |
| | | LWhFormTransferVo vo = new LWhFormTransferVo(); |
| | | public LWHFromTransferExtendVO getById(Long id) { |
| | | LWHFromTransferExtendVO result = new LWHFromTransferExtendVO(); |
| | | //1.查询调拨单 |
| | | LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id)); |
| | | if (lWhFormTransfer != null) { |
| | | BeanUtils.copyProperties(lWhFormTransfer, vo); |
| | | BeanUtils.copyProperties(lWhFormTransfer, result); |
| | | result.setDepartmentName(lWhFormTransfer.getInWarehouseName()); |
| | | } |
| | | //2.查询物品型号 |
| | | // 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); |
| | | String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type " |
| | | + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " |
| | | + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id "; |
| | | Map<String, Object> paramMap = new HashMap<>(); |
| | | paramMap.put("id", result.getId()); |
| | | List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil()); |
| | | |
| | | LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); |
| | | lWhProcureModelUser.setWhProcureModelId(model.getId()); |
| | | List<LWhProcureModelUser> select = lWhProcureModelUserService.select(lWhProcureModelUser); |
| | | lWhProcureModelVo.setProcureModelUsersList(select); |
| | | lWhProcureModelVoList.add(lWhProcureModelVo); |
| | | } |
| | | vo.setModels(lWhProcureModelVoList); |
| | | String queryRecord = "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1"; |
| | | LWhProcureModelUserRecord lWhProcureModelUserRecord = lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord()); |
| | | List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList(); |
| | | for (Map<String, Object> map : procureModelList) { |
| | | FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.class); |
| | | |
| | | // 查询型号数量 |
| | | List<GoodsModelVO> goodsModelVOList = Lists.newArrayList(); |
| | | String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount " |
| | | + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " |
| | | + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id"; |
| | | List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap, new MapperUtil()); |
| | | modelList.forEach(item -> { |
| | | GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class); |
| | | Integer businessType = result.getBusinessType(); |
| | | String type = procureTemplateInfoVO.getType(); |
| | | //部门分发需要查询使用信息 |
| | | if (businessType == 1 && "A".equals(type)) { |
| | | Long procureModelId = goodsModelVO.getId(); |
| | | LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); |
| | | lWhProcureModelUser.setWhProcureModelId(procureModelId); |
| | | lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId()); |
| | | List<LWhProcureModelUser> procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser); |
| | | if (!CollectionUtils.isEmpty(procureModelUserList)) { |
| | | List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList(); |
| | | procureModelUserList.forEach(useInfo -> { |
| | | Integer goodsNum = useInfo.getGoodsNum(); |
| | | Long nowUserPhone = useInfo.getNowUserPhone(); |
| | | String nowUserName = useInfo.getNowUserName(); |
| | | DepartGoodsUseInfo departGoodsUseInfo = new DepartGoodsUseInfo(); |
| | | departGoodsUseInfo.setName(nowUserName); |
| | | departGoodsUseInfo.setNum(goodsNum); |
| | | departGoodsUseInfo.setTel(nowUserPhone); |
| | | departGoodsUseInfoList.add(departGoodsUseInfo); |
| | | }); |
| | | goodsModelVO.setUseInfo(departGoodsUseInfoList); |
| | | } |
| | | |
| | | } |
| | | goodsModelVOList.add(goodsModelVO); |
| | | }); |
| | | |
| | | procureTemplateInfoVO.setModels(goodsModelVOList); |
| | | formTransferGoods.add(procureTemplateInfoVO); |
| | | } |
| | | return vo; |
| | | result.setFormTransferGoods(formTransferGoods); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |
| | |
| | | * @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.出库单id查询出库单 |
| | | 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); |
| | | public Map<String, Object> export(Long id, Integer type) { |
| | | String sql = "SELECT\n" |
| | | + "\tft.BUSINESS_FORM_CODE,\n" |
| | | + "\tft.OPERATOR_NAME,\n" |
| | | + "\tft.CREATE_TIME,\n" |
| | | + "\tft.IN_AGENCY_NAME,\n" |
| | | + "\tft.OUT_AGENCY_NAME,\n" |
| | | + "\tGOODS_NAME,\n" |
| | | + "\tpm.BASE_GOODS_MODELS_NAME,\n" |
| | | + "\tpm.COUNTS num,\n" |
| | | + "\tpm.PRICE,\n" |
| | | + "\tpm.total_amount,\n" |
| | | + "\tft.BEIZ1 remark\n" |
| | | + "FROM\n" |
| | | + "\tl_wh_form_transfer ft\n" |
| | | + "\tINNER JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n" |
| | | + "\tINNER JOIN base_goods_models bgm ON bgm.ID = pm.BASE_GOODS_MODELS_ID\n" |
| | | + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n" |
| | | + "WHERE\n" |
| | | + "\tft.id = :id"; |
| | | Map<String, Object> paramts = new HashMap<>(); |
| | | paramts.put("id", id); |
| | | List<Map<String, Object>> select = this.select(sql, paramts, new MapperUtil()); |
| | | List<TemplateExcelTransfer> list = Lists.newArrayList(); |
| | | select.forEach(item -> { |
| | | TemplateExcelTransfer templateExcelTransfer = MapUtils.convertMapToObj(item, TemplateExcelTransfer.class); |
| | | if (type == 1) { |
| | | templateExcelTransfer.setTenantName(templateExcelTransfer.getOutAgencyName()); |
| | | } else { |
| | | templateExcelTransfer.setTenantName(templateExcelTransfer.getInAgencyName()); |
| | | } |
| | | } |
| | | result.setRecordVoList(voList); |
| | | list.add(templateExcelTransfer); |
| | | }); |
| | | |
| | | return result; |
| | | int countNum = list.stream().filter(item -> item.getNum() != null).mapToInt(TemplateExcelTransfer::getNum).sum(); |
| | | int totalAmount = list.stream().filter(export -> export.getTotalAmount() != null).mapToInt(TemplateExcelTransfer::getTotalAmount).sum(); |
| | | Optional<TemplateExcelTransfer> first = list.stream().findFirst(); |
| | | TemplateExcelTransfer entity = first.get(); |
| | | String businessFormCode = entity.getBusinessFormCode(); |
| | | Long createTime = entity.getCreateTime(); |
| | | String operatorName = entity.getOperatorName(); |
| | | String tenantName; |
| | | if (type == 1) { |
| | | tenantName = entity.getInAgencyName(); |
| | | } else { |
| | | tenantName = entity.getOutAgencyName(); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("code", businessFormCode); |
| | | map.put("date", DateUtils.toShowDate(createTime)); |
| | | map.put("tenantName", tenantName); |
| | | map.put("name", operatorName); |
| | | map.put("countNum", countNum); |
| | | map.put("totalAmount", totalAmount); |
| | | map.put("data", list); |
| | | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | |
| | | return this.update(lWhFormTransfer); |
| | | } |
| | | |
| | | public GenericPager<Map<String, Object>> queryTransferInfo(TransferQryDto transferQryDto) { |
| | | 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 "); |
| | | StringBuilder sql = new StringBuilder( |
| | | "SELECT ft.id,ft.BUSINESS_FORM_CODE,bgt.GOODS_NAME,bgt.CLASSIFICATION type,bgm.id goodsModelId,bgm.MODEL_NAME goodsModelName,pm.COUNTS goodsCount,fst.`name` tenantName," |
| | | + "ft.IN_WAREHOUSE_NAME departmentName,ft.OPERATOR_ID,ft.CREATE_TIME,ft.OPERATOR_NAME FROM l_wh_form_transfer ft " |
| | | + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID " + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID " |
| | | + "inner JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " |
| | | + "inner JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID " |
| | | + "inner JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID " |
| | | + "inner JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where ft.BUSINESS_TYPE =1 "); |
| | | //单号 |
| | | if (StringUtils.isNotEmpty(transferQryDto.getBusinessFormCode())) { |
| | | if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) { |
| | | sql.append("AND BUSINESS_FORM_CODE like :businessFormCode "); |
| | | paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQryDto.getBusinessFormCode() + StringUtils.CHAR_PERCENT); |
| | | paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | //物品名称 |
| | | if (StringUtils.isNotEmpty(transferQryDto.getGoodsTemplateName())) { |
| | | if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) { |
| | | sql.append("AND bgt.GOODS_NAME like:goodsName "); |
| | | paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQryDto.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | // 规格型号 |
| | | if (transferQryDto.getBaseGoodsTemplateId() != null) { |
| | | if (transferQry.getBaseGoodsModelsId() != null) { |
| | | sql.append("AND bgm.id =:goodsModelId "); |
| | | paramts.put("goodsModelId", transferQryDto.getBaseGoodsTemplateId()); |
| | | paramts.put("goodsModelId", transferQry.getBaseGoodsModelsId()); |
| | | } |
| | | //调拨机构 |
| | | if (transferQryDto.getOutAgencyId() != null) { |
| | | if (transferQry.getOutAgencyId() != null) { |
| | | sql.append("AND OUT_AGENCY_ID = :OUT_AGENCY_ID "); |
| | | paramts.put("OUT_AGENCY_ID", transferQryDto.getOutAgencyId()); |
| | | paramts.put("OUT_AGENCY_ID", transferQry.getOutAgencyId()); |
| | | } |
| | | |
| | | //分发部门 |
| | | if (transferQry.getInWarehouseId() != null) { |
| | | sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId "); |
| | | paramts.put("inWarehouseId", transferQry.getInWarehouseId()); |
| | | } |
| | | //创建人 |
| | | if (StringUtils.isNotEmpty(transferQryDto.getOperatorName())) { |
| | | if (StringUtils.isNotEmpty(transferQry.getOperatorName())) { |
| | | sql.append("AND ft.OPERATOR_NAME =:OPERATOR_NAME "); |
| | | paramts.put("OPERATOR_NAME", transferQryDto.getOperatorName()); |
| | | paramts.put("OPERATOR_NAME", transferQry.getOperatorName()); |
| | | } |
| | | //申请时间 |
| | | if (transferQryDto.getCreateTimeStart() != null) { |
| | | if (transferQry.getStartTime() != null) { |
| | | sql.append("AND ft.CREATE_TIME >=:createTimeStart "); |
| | | paramts.put("createTimeStart", transferQryDto.getCreateTimeStart() * 1000000); |
| | | paramts.put("createTimeStart", transferQry.getStartTime() * 1000000); |
| | | } |
| | | if (transferQryDto.getCreateTimeEnd() != null) { |
| | | if (transferQry.getEndTime() != null) { |
| | | sql.append("AND ft.CREATE_TIME <:createTimeEnd "); |
| | | paramts.put("createTimeEnd", transferQryDto.getCreateTimeEnd() * 1000000 + 240000); |
| | | paramts.put("createTimeEnd", transferQry.getEndTime() * 1000000 + 240000); |
| | | } |
| | | sql.append("ORDER BY ft.CREATE_TIME DESC"); |
| | | |
| | | GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQryDto.getPageNum(), transferQryDto.getPageSize(), |
| | | new MapRowMapper()); |
| | | GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(), |
| | | new MapperUtil()); |
| | | |
| | | return mapGenericPager; |
| | | } |
| | | |
| | | |
| | | public GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param) { |
| | | |
| | | HashMap<String, Object> params = new HashMap<>(); |
| | | StringBuilder sql = new StringBuilder( |
| | | "SELECT ft.id,\n" + " ft.BUSINESS_FORM_CODE,\n" + " bgt.GOODS_NAME,\n" + " bgt.CLASSIFICATION,\n" |
| | | + " pm.BASE_GOODS_MODELS_NAME,\n" + " pm.COUNTS,\n" + " ft.IN_AGENCY_NAME,\n" + " ft.OPERATOR_NAME,\n" |
| | | + " ft.CREATE_TIME,\n" + " ft.IN_TIME,\n" + " ft.OUT_AGENCY_NAME,\n" + " ft.OUT_OPERATOR_NAME,\n" |
| | | + " ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n" + " LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n" |
| | | + " LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n" |
| | | + " LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where 1=1 "); |
| | | if (StringUtils.isNotEmpty(param.getBusinessFormCode())) { |
| | | sql.append("AND ft.BUSINESS_FORM_CODE = :businessFormCode "); |
| | | params.put("businessFormCode", param.getBusinessFormCode()); |
| | | } |
| | | if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) { |
| | | sql.append("AND bgt.GOODS_NAME like :goodsName "); |
| | | params.put("goodsName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); |
| | | } |
| | | if (param.getBaseGoodsModelsId() != null) { |
| | | sql.append("AND bgm.id = :goodsModelId "); |
| | | params.put("goodsModelId", param.getBaseGoodsModelsId()); |
| | | } |
| | | if (param.getOutAgencyId() != null) { |
| | | sql.append("AND ft.OUT_AGENCY_ID like :outAgencyId "); |
| | | params.put("outAgencyId", param.getOutAgencyId()); |
| | | } |
| | | if (param.getOutAgencyId() != null) { |
| | | sql.append("AND ft.IN_AGENCY_ID like :inAgencyId "); |
| | | params.put("inAgencyId", param.getInAgencyId()); |
| | | } |
| | | if (StringUtils.isNotEmpty(param.getOperatorName())) { |
| | | sql.append("AND ft.OPERATOR_NAME = :operatorName "); |
| | | params.put("operatorName", param.getOperatorName()); |
| | | } |
| | | //申请创建时间 |
| | | if (param.getCreateTimeStart() != null) { |
| | | sql.append("AND ft.CREATE_TIME >= :createTimeStart "); |
| | | params.put("createTimeStart", param.getCreateTimeStart() * 1000000); |
| | | } |
| | | if (param.getCreateTimeEnd() != null) { |
| | | sql.append("AND ft.CREATE_TIME < :createTimeEnd "); |
| | | params.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000); |
| | | } |
| | | //接收时间 |
| | | if (param.getStartTime() != null) { |
| | | sql.append("AND ft.IN_TIME >= :createTimeStart "); |
| | | params.put("createTimeStart", param.getStartTime() * 1000000); |
| | | } |
| | | if (param.getEndTime() != null) { |
| | | sql.append("AND ft.IN_TIME < :createTimeEnd "); |
| | | params.put("createTimeEnd", param.getEndTime() * 1000000 + 240000); |
| | | } |
| | | GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil()); |
| | | return mapGenericPager; |
| | | |
| | | } |
| | | |
| | | public List<Map<String, Object>> queryDepartmentTransferOrder() { |
| | | |
| | | String sql = |
| | | "SELECT ft.id,\n" + " ft.BUSINESS_FORM_CODE,\n" + " gr.GOODS_TEMPLATE_NAME,\n" + " gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n" |
| | | + " ft.CREATE_TIME\n" + "\n" + "FROM l_wh_form_transfer ft\n" + " LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n" |
| | | + " left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n" |
| | | + " LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n" |
| | | + " left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n"; |
| | | HashMap<String, Object> param = new HashMap<>(); |
| | | List<Map<String, Object>> select = this.select(sql, param, new MapperUtil()); |
| | | select.forEach(item -> { |
| | | |
| | | }); |
| | | return select; |
| | | |
| | | } |
| | | } |