| | |
| | | package com.ruoyi.web.controller.api; |
| | | |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.lkl.laop.sdk.request.V3LabsTransPreorderRequest; |
| | | import com.ruoyi.common.annotation.Log; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | | import com.ruoyi.common.core.domain.BaseModel; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.enums.BusinessType; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.framework.web.service.TokenService; |
| | | import com.ruoyi.system.dto.AddProcurementDto; |
| | | import com.ruoyi.system.dto.DetailProcurementSendDto; |
| | | import com.ruoyi.system.dto.UpdateStatusProcurementDto; |
| | | import com.ruoyi.system.dto.UpdateStatusProcurementLastDto; |
| | | import com.ruoyi.system.export.WarehouseProcurementReportDetailExport; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.TErpGoodsQuery; |
| | | import com.ruoyi.system.query.TErpProcurementQuery; |
| | | import com.ruoyi.system.query.ProcurementReportDetailQuery; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.*; |
| | | import com.ruoyi.system.export.ProcurementReportDetailExport; |
| | | import com.ruoyi.common.utils.WebUtils; |
| | | import cn.afterturn.easypoi.excel.ExcelExportUtil; |
| | | import cn.afterturn.easypoi.excel.entity.ExportParams; |
| | | import io.swagger.annotations.ApiParam; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import com.ruoyi.web.core.config.LakalaConfig; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | private final TCrmSalespersonService crmSalespersonService; |
| | | private final TErpProcurementCommissionService erpProcurementCommissionService; |
| | | private final TCrmWarehouseService crmWarehouseService; |
| | | private final ISysUserService sysUserService; |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService, TCrmClinicService crmClinicService, TErpProcurementGoodsService erpProcurementGoodsService |
| | | , TErpGoodsService erpGoodsService, TErpClinicWarehousingService erpClinicWarehousingService, TErpClinicWarehousingBatchService erpClinicWarehousingBatchService, |
| | | TCrmSupplierService crmSupplierService, TErpMaintenanceReminderService erpMaintenanceReminderService, TSysOtherConfigService sysOtherConfigService, TCrmClinicPointsService crmClinicPointsService, TCrmChangePointsService crmChangePointsService, TCrmBranchService crmBranchService, TCrmSalespersonService crmSalespersonService, TErpProcurementCommissionService erpProcurementCommissionService, TCrmWarehouseService crmWarehouseService) { |
| | | TCrmSupplierService crmSupplierService, TErpMaintenanceReminderService erpMaintenanceReminderService, TSysOtherConfigService sysOtherConfigService, TCrmClinicPointsService crmClinicPointsService, TCrmChangePointsService crmChangePointsService, TCrmBranchService crmBranchService, TCrmSalespersonService crmSalespersonService, TErpProcurementCommissionService erpProcurementCommissionService, TCrmWarehouseService crmWarehouseService, ISysUserService sysUserService) { |
| | | this.erpProcurementService = erpProcurementService; |
| | | this.tokenService = tokenService; |
| | | this.crmClinicService = crmClinicService; |
| | |
| | | |
| | | this.crmWarehouseService = crmWarehouseService; |
| | | |
| | | this.sysUserService = sysUserService; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | @ApiOperation(value = "添加采购") |
| | | @PostMapping(value = "/addProcurement") |
| | | @Log(title = "采购管理-添加采购", businessType = BusinessType.INSERT) |
| | | public R<String> addProcurement(@RequestBody @Valid List<AddProcurementDto> dtos) { |
| | | SysUser user = tokenService.getLoginUser().getUser(); |
| | | Integer roleType = user.getRoleType(); |
| | |
| | | TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | // --- |
| | | if(Objects.isNull(crmClinic)){ |
| | | SysUser sysUser = sysUserService.selectUserById(user.getUserId()); |
| | | crmClinic = crmClinicService.getById(sysUser.getObjectId()); |
| | | } |
| | | clinicSupplierId = crmClinic.getId(); |
| | | } |
| | | erpProcurementService.addProcurement(clinicSupplierId, user, dtos); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @ApiOperation(value = "删除采购") |
| | | @DeleteMapping(value = "/delProcurement/{id}") |
| | | @Log(title = "采购管理-删除采购", businessType = BusinessType.DELETE) |
| | | public R<String> delProcurement(@PathVariable String id) { |
| | | SysUser user = tokenService.getLoginUser().getUser(); |
| | | Integer roleType = user.getRoleType(); |
| | | String clinicSupplierId=null; |
| | | if(roleType == 5){ |
| | | // 诊所 |
| | | TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | // --- |
| | | if(Objects.isNull(crmClinic)){ |
| | | SysUser sysUser = sysUserService.selectUserById(user.getUserId()); |
| | | crmClinic = crmClinicService.getById(sysUser.getObjectId()); |
| | | } |
| | | clinicSupplierId = crmClinic.getId(); |
| | | } |
| | | TErpProcurement tErpProcurement = erpProcurementService.getById(id); |
| | | if(tErpProcurement.getClinicId().equals(clinicSupplierId)){ |
| | | erpProcurementService.removeById( id); |
| | | return R.ok(); |
| | | }else { |
| | | return R.fail("无权限"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | // --- |
| | | if(Objects.isNull(crmClinic)){ |
| | | SysUser sysUser = sysUserService.selectUserById(user.getUserId()); |
| | | crmClinic = crmClinicService.getById(sysUser.getObjectId()); |
| | | } |
| | | clinicSupplierId = crmClinic.getId(); |
| | | } |
| | | |
| | |
| | | |
| | | @ApiOperation(value = "采购详情--发货(仓库角色)") |
| | | @PostMapping(value = "/detailProcurementSend") |
| | | @Log(title = "采购管理-发货", businessType = BusinessType.UPDATE) |
| | | public R<?> detailProcurementSend(@RequestBody DetailProcurementSendDto dto) { |
| | | SysUser user = tokenService.getLoginUser().getUser(); |
| | | Integer roleType = user.getRoleType(); |
| | |
| | | TCrmClinic crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | // --- |
| | | if(Objects.isNull(crmClinic)){ |
| | | SysUser sysUser = sysUserService.selectUserById(user.getUserId()); |
| | | crmClinic = crmClinicService.getById(sysUser.getObjectId()); |
| | | } |
| | | clinicSupplierId = crmClinic.getId(); |
| | | } |
| | | ArrayList<DetailProcurementNextVO> detailProcurementNextVOS = new ArrayList<>(); |
| | |
| | | detailProcurementNextVO.setSupplierName(tErpProcurementGoods.getSupplierName()); |
| | | detailProcurementNextVO.setUnitName(tErpProcurementGoods.getUnitName()); |
| | | detailProcurementNextVO.setPurchasePrice(tErpProcurementGoods.getPurchasePrice()); |
| | | detailProcurementNextVO.setGoodsId(tErpProcurementGoods.getGoodsId()); |
| | | detailProcurementNextVOS.add(detailProcurementNextVO); |
| | | } |
| | | return R.ok(detailProcurementNextVOS); |
| | |
| | | |
| | | @ApiOperation(value = "采购详情入库") |
| | | @PostMapping(value = "/updateStatusProcurement") |
| | | @Log(title = "采购管理-入库", businessType = BusinessType.INSERT) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R<DetailProcurementVO> updateStatusProcurement(@RequestBody @Valid UpdateStatusProcurementLastDto dto) { |
| | | SysUser user = tokenService.getLoginUser().getUser(); |
| | |
| | | crmClinic = crmClinicService.getOne(Wrappers.lambdaQuery(TCrmClinic.class) |
| | | .eq(TCrmClinic::getUserId, user.getUserId()) |
| | | .last("LIMIT 1")); |
| | | // --- |
| | | if(Objects.isNull(crmClinic)){ |
| | | SysUser sysUser = sysUserService.selectUserById(user.getUserId()); |
| | | crmClinic = crmClinicService.getById(sysUser.getObjectId()); |
| | | } |
| | | clinicSupplierId = crmClinic.getId(); |
| | | } |
| | | TErpProcurement erpProcurement = erpProcurementService.getById(dto.getId()); |
| | |
| | | tErpClinicWarehousing.setWarehousingType(1); |
| | | tErpClinicWarehousing.setType(1); |
| | | |
| | | TErpClinicWarehousing last = erpClinicWarehousingService.getOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).last("LIMIT 1")); |
| | | TErpClinicWarehousing last = erpClinicWarehousingService.getOne(new LambdaQueryWrapper<TErpClinicWarehousing>().orderByDesc(BaseModel::getCreateTime).orderByDesc(TErpClinicWarehousing::getWarehouseNo).last("LIMIT 1")); |
| | | if(last==null){ |
| | | tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow()+"00001"); |
| | | }else { |
| | |
| | | tErpClinicWarehousingGoods.setGoodsName(erpGoods.getGoodsName()); |
| | | tErpClinicWarehousingGoods.setQuasiNumber(erpGoods.getQuasiNumber()); |
| | | tErpClinicWarehousingGoods.setSalesAmount(tErpProcurementGoods.getSalesAmount()); |
| | | tErpClinicWarehousingGoods.setWarehousingNumber(tErpProcurementGoods.getPurchaseCount()); |
| | | tErpClinicWarehousingGoods.setPurchaseCount(tErpProcurementGoods.getPurchaseCount()); |
| | | erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods); |
| | | |
| | | |
| | | if(erpGoods.getMaintenanceInterval()!=null){ |
| | | if(erpGoods.getMaintenanceInterval()!=null && !erpGoods.getMaintenanceInterval().isEmpty()){ |
| | | TErpMaintenanceReminder tErpMaintenanceReminder = new TErpMaintenanceReminder(); |
| | | tErpMaintenanceReminder.setClinicSupplierId(clinicSupplierId); |
| | | tErpMaintenanceReminder.setMaintenanceType(2); |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 采购单详情列表(仓库角色专用) |
| | | */ |
| | | @ApiOperation(value = "【20260130】采购单详情列表--仓库角色专用") |
| | | @PostMapping(value = "/procurementReportDetail/{id}") |
| | | public R<List<ClinicProcurementReportDetailVO>> procurementReportDetail(@ApiParam(name = "id",value = "采购ID") @PathVariable String id) { |
| | | List<ClinicProcurementReportDetailVO> list = erpProcurementService.clinicProcurementReportDetail(id); |
| | | return R.ok(list); |
| | | } |
| | | |
| | | /** |
| | | * 采购单详情导出(仓库角色专用,支持多选) |
| | | */ |
| | | @Log(title = "采购管理-采购单详情导出", businessType = BusinessType.EXPORT) |
| | | @ApiOperation(value = "【20260130】采购单详情导出--仓库角色专用(支持多选)") |
| | | @PostMapping("/exportProcurementReportDetail") |
| | | public void exportProcurementReportDetail(@Valid @RequestBody ProcurementReportDetailQuery query) { |
| | | List<ProcurementReportDetailExport> list = erpProcurementService.exportProcurementReportDetail(query.getProcurementIds()); |
| | | List<WarehouseProcurementReportDetailExport> warehouseProcurementReportDetailExports = BeanUtil.copyToList(list, WarehouseProcurementReportDetailExport.class); |
| | | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), WarehouseProcurementReportDetailExport.class, warehouseProcurementReportDetailExports); |
| | | HttpServletResponse response = WebUtils.response(); |
| | | assert response != null; |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | ServletOutputStream outputStream = null; |
| | | try { |
| | | String fileName = URLEncoder.encode("采购单详情.xls", "utf-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Pragma", "no-cache"); |
| | | response.setHeader("Cache-Control", "no-cache"); |
| | | outputStream = response.getOutputStream(); |
| | | workbook.write(outputStream); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | outputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |