liujie
2 天以前 f41b11c958ef7d0416d194278d1fe7cd1a1e8219
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TErpProcurementController.java
@@ -1,8 +1,36 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
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.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AddProcurementDto;
import com.ruoyi.system.dto.UpdateStatusProcurementDto;
import com.ruoyi.system.dto.UpdateStatusProcurementLastDto;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.DetailProcurementVO;
import com.ruoyi.system.vo.TErpGoodsVO;
import com.ruoyi.system.vo.TErpProcurementDetailVo;
import com.ruoyi.system.vo.TErpProcurementVo;
import com.ruoyi.web.core.config.LakalaConfig;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -14,7 +42,178 @@
 */
@RestController
@RequestMapping("/t-erp-procurement")
@Api(tags = "erp采购管理")
public class TErpProcurementController {
    private final TErpProcurementService erpProcurementService;
    private final TokenService tokenService;
    private final TCrmClinicService crmClinicService;
    private final TErpProcurementGoodsService erpProcurementGoodsService;
    private final TErpGoodsService erpGoodsService;
    private final TErpClinicWarehousingService erpClinicWarehousingService;
    private final TErpClinicWarehousingBatchService erpClinicWarehousingBatchService;
    @Autowired
    public TErpProcurementController(TErpProcurementService erpProcurementService, TokenService tokenService,TCrmClinicService crmClinicService,TErpProcurementGoodsService erpProcurementGoodsService
    , TErpGoodsService erpGoodsService,TErpClinicWarehousingService erpClinicWarehousingService,TErpClinicWarehousingBatchService erpClinicWarehousingBatchService) {
        this.erpProcurementService = erpProcurementService;
        this.tokenService = tokenService;
        this.crmClinicService = crmClinicService;
        this.erpProcurementGoodsService = erpProcurementGoodsService;
        this.erpGoodsService = erpGoodsService;
        this.erpClinicWarehousingService = erpClinicWarehousingService;
        this.erpClinicWarehousingBatchService = erpClinicWarehousingBatchService;
    }
    /**
     * erp采购管理分页列表
     */
    @ApiOperation(value = "erp采购管理分页列表")
    @PostMapping(value = "/pageList")
    public R<PageInfo<TErpProcurementVo>> pageList(@RequestBody TErpProcurementQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.pageList(query,user));
    }
    @ApiOperation(value = "erp采购管理详情")
    @GetMapping(value = "/detail")
    public R<TErpProcurementDetailVo> detail(@RequestParam String id, String goodsName) {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.detail(id,user,goodsName));
    }
    /**
     * 获取erp问题上报管理列表
     */
    @ApiOperation(value = "采购获取商品分页列表")
    @PostMapping(value = "/pageGoodsPageList")
    public R<PageInfo<TErpGoods>> pageList(@RequestBody TErpGoodsQuery query) {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.pageGoodsPageList(query,user));
    }
    /**
     * 获取erp问题上报管理列表
     */
    @ApiOperation(value = "采购获取库存不足列表")
    @PostMapping(value = "/inventoryNotEnoughList")
    public R<List<TErpGoodsVO>> inventoryNotEnoughList() {
        SysUser user = tokenService.getLoginUser().getUser();
        return R.ok(erpProcurementService.inventoryNotEnoughList(user));
    }
    @ApiOperation(value = "添加采购")
    @PostMapping(value = "/addProcurement")
    public R<String> addProcurement(@RequestBody @Valid List<AddProcurementDto> dtos) {
        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"));
            clinicSupplierId = crmClinic.getId();
        }
        erpProcurementService.addProcurement(clinicSupplierId, user, dtos);
        return R.ok();
    }
    @ApiOperation(value = "采购详情")
    @GetMapping(value = "/detailProcurement/{id}")
    public R<DetailProcurementVO> detailProcurement(@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"));
            clinicSupplierId = crmClinic.getId();
        }
        return R.ok( erpProcurementService.detailProcurement(clinicSupplierId, user, id));
    }
    @ApiOperation(value = "采购详情入库")
    @PostMapping(value = "/updateStatusProcurement")
    public R<DetailProcurementVO> updateStatusProcurement(@RequestParam @Valid UpdateStatusProcurementLastDto dto) {
        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"));
            clinicSupplierId = crmClinic.getId();
        }
        TErpProcurement erpProcurement = erpProcurementService.getById(dto.getId());
        if(!erpProcurement.getClinicId().equals(clinicSupplierId)){
            return R.fail("无权限操作");
        }
        if(erpProcurement.getStatus()!=4){
            return R.fail("目前状态无法入库");
        }
        erpProcurement.setStatus(5);
        erpProcurementService.updateById(erpProcurement);
        List<String> collect = dto.getList().stream().map(UpdateStatusProcurementDto::getId).collect(Collectors.toList());
        List<TErpProcurementGoods> list = erpProcurementGoodsService.list(new LambdaQueryWrapper<TErpProcurementGoods>().in(TErpProcurementGoods::getId, collect));
        // goodsId分组
        for (UpdateStatusProcurementDto updateStatusProcurementDto : dto.getList()) {
            TErpProcurementGoods tErpProcurementGoods = list.stream().filter(t -> t.getId().equals(updateStatusProcurementDto.getId())).findFirst().get();
            TErpGoods erpGoods = erpGoodsService.getById(tErpProcurementGoods.getGoodsId());
            TErpClinicWarehousing tErpClinicWarehousing = new TErpClinicWarehousing();
            tErpClinicWarehousing.setClinicId(erpProcurement.getClinicId());
            tErpClinicWarehousing.setProcurementId(erpProcurement.getId());
            tErpClinicWarehousing.setGoodsId(erpGoods.getId());
            tErpClinicWarehousing.setGoodsName(erpGoods.getGoodsName());
            tErpClinicWarehousing.setSupplierName(erpGoods.getSupplierName());
            tErpClinicWarehousing.setQuasiNumber(erpGoods.getQuasiNumber());
            tErpClinicWarehousing.setSalesAmount(tErpProcurementGoods.getSalesAmount());
            tErpClinicWarehousing.setPurchaseCount(updateStatusProcurementDto.getPurchaseCount());
            tErpClinicWarehousing.setTotalPrice(tErpProcurementGoods.getSalesAmount().multiply(new BigDecimal(updateStatusProcurementDto.getPurchaseCount())));
            tErpClinicWarehousing.setUnitAmount(tErpProcurementGoods.getSalesAmount());
            tErpClinicWarehousing.setWarehousingType(1);
            tErpClinicWarehousing.setWarehouseNo("G"+ DateUtils.dateTimeNow());
            erpClinicWarehousingService.save(tErpClinicWarehousing);
            TErpClinicWarehousingBatch tErpClinicWarehousingGoods = new TErpClinicWarehousingBatch();
            tErpClinicWarehousingGoods.setWarehousingId(tErpClinicWarehousing.getId());
            tErpClinicWarehousingGoods.setWarehousingNumber(tErpClinicWarehousing.getPurchaseCount());
            tErpClinicWarehousingGoods.setBatchNumber(updateStatusProcurementDto.getBatchNumber());
            tErpClinicWarehousingGoods.setProductionDate(updateStatusProcurementDto.getProductionDate());
            tErpClinicWarehousingGoods.setExpiryDate(updateStatusProcurementDto.getExpiryDate());
            erpClinicWarehousingBatchService.save(tErpClinicWarehousingGoods);
        }
        return R.ok();
    }
}