package com.skua.modules.erp.controller; import java.io.IOException; import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.skua.core.api.vo.Result; import com.skua.core.aspect.annotation.AutoLog; import com.skua.core.context.BaseContextHandler; import com.skua.core.query.QueryGenerator; import com.skua.modules.erp.entity.DistributContract; import com.skua.modules.erp.entity.DistributContractTemp; import com.skua.modules.erp.entity.ERPPurchaseContract; import com.skua.modules.erp.entity.PurchaseMaterial; import com.skua.modules.erp.service.IDistributContractService; import java.util.Date; import java.util.Map; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.skua.modules.erp.service.IDistributContractTempService; import com.skua.modules.erp.service.IDistributMaterialService; import com.skua.modules.erp.service.IPurchaseMaterialService; import com.skua.modules.erp.vo.DistributContractVO; import com.skua.modules.erp.vo.MaterialSearchVO; import com.skua.modules.guest.util.DateUtil; import com.skua.modules.system.entity.SysDepart; import com.skua.modules.system.service.ISysDepartService; import com.skua.tool.util.JSUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; @Slf4j @Api(tags="erp分销合同") @RestController("webDistributContractController") @RequestMapping("/web/erp/distributContract") public class DistributContractController { @Autowired private IDistributContractService distributContractService; @Autowired private IDistributMaterialService distributMaterialService; @Autowired private IPurchaseMaterialService purchaseMaterialService ; @Autowired private IDistributContractTempService distributContractTempService; @Autowired private ISysDepartService departService; @AutoLog(value = "erp分销合同-分页列表查询") @ApiOperation(value="erp分销合同-分页列表查询", notes="erp分销合同-分页列表查询") @GetMapping(value = "/list") public Result<IPage<DistributContract>> queryPageList(DistributContract distributContract, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Result<IPage<DistributContract>> result = new Result<IPage<DistributContract>>(); QueryWrapper<DistributContract> queryWrapper = QueryGenerator.initQueryWrapper(distributContract, req.getParameterMap()); Page<DistributContract> page = new Page<DistributContract>(pageNo, pageSize); //启用状态:=0 /*if(StringUtils.isEmpty(distributContract.getUseFlag())){ queryWrapper.eq("use_flag","0"); }*/ IPage<DistributContract> pageList = distributContractService.page(page, queryWrapper); result.setSuccess(true); result.setResult(pageList); return result; } @AutoLog(value = "erp分销合同-列表查询") @ApiOperation(value="erp分销合同-列表查询", notes="erp分销合同-列表查询") @GetMapping(value = "/disContractList") public Result<List<DistributContract>> queryPageList(DistributContract distributContract,HttpServletRequest req) { Result<List<DistributContract>> result = new Result<List<DistributContract>>(); QueryWrapper<DistributContract> queryWrapper = QueryGenerator.initQueryWrapper(distributContract, req.getParameterMap()); // 需要添加条件判断 //String use_flag = "0"; queryWrapper.ge("end_time", DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss"));// 生效时间 《 当前时间 《 失效时间 queryWrapper.le("start_time", DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss")); //启用状态:=0 /*if(StringUtils.isNotEmpty(distributContract.getUseFlag())){ use_flag = distributContract.getUseFlag(); } queryWrapper.eq("use_flag",use_flag);*/ List<DistributContract> dataList = distributContractService.list(queryWrapper); result.setSuccess(true); result.setResult(dataList); return result; } @AutoLog(value = "erp分销合同-添加") @ApiOperation(value="erp分销合同-添加", notes="erp分销合同-添加") @PostMapping(value = "/add") public Result<DistributContractVO> add(@RequestBody DistributContractVO distributContract) { Result<DistributContractVO> result = new Result<DistributContractVO>(); try { String errMsg = distributContractService.checkPurchaseContract(distributContract ,null,0); if(errMsg != null){ result.error500(errMsg); }else{ distributContractService.saveDistributContractVO(distributContract); distributMaterialService.changePurchaseContract( distributContract.getId() ,distributContract.getUseFlag() ) ; result.success("添加成功!"); } } catch (Exception e) { log.error(e.getMessage(),e); result.error500("操作失败"); } return result; } @AutoLog(value = "erp分销合同-编辑") @ApiOperation(value="erp分销合同-编辑", notes="erp分销合同-编辑") @PutMapping(value = "/edit") public Result<DistributContract> edit(@RequestBody DistributContractVO distributContract) { Result<DistributContract> result = new Result<DistributContract>(); DistributContract distributContractEntity = distributContractService.getById(distributContract.getId()); if(distributContractEntity==null) { result.error500("未找到对应实体"); }else { String errMsg = distributContractService.checkPurchaseContract(distributContract ,distributContract.getContractCode(),1); if(errMsg != null ){ result.error500(errMsg); }else{ distributContractService.updateDistributContractVO(distributContract); distributMaterialService.changePurchaseContract( distributContract.getId() ,distributContract.getUseFlag() ) ; result.success("修改成功!"); } } return result; } @AutoLog(value = "erp分销合同-变更合同") @ApiOperation(value="erp分销合同-变更合同", notes="erp分销合同-变更合同") @PutMapping(value = "/change") public Result<ERPPurchaseContract> change(@RequestBody DistributContractVO distributContractVO) { Result<ERPPurchaseContract> result = new Result<ERPPurchaseContract>(); DistributContract distributContract = distributContractService.getById(distributContractVO.getId()); if(distributContract ==null) { result.error500("未找到对应实体"); }else { String errorMsg = distributContractService.checkPurchaseContract(distributContractVO , distributContractVO.getContractCode(),1); if(StringUtils.isNotEmpty( errorMsg )){ result.error500( errorMsg ); }else{ distributContractService.changePurchaseContract(distributContractVO); result.success("修改成功!"); } } return result; } @AutoLog(value = "erp分销合同-通过id删除") @ApiOperation(value="erp分销合同-通过id删除", notes="erp分销合同-通过id删除") @DeleteMapping(value = "/delete") public Result<?> delete(@RequestParam(name="id",required=true) String id) { try { distributContractService.delById(id); } catch (Exception e) { log.error("删除失败",e.getMessage()); return Result.error("删除失败!"); } return Result.ok("删除成功!"); } @AutoLog(value = "erp分销合同-批量删除") @ApiOperation(value="erp分销合同-批量删除", notes="erp分销合同-批量删除") @DeleteMapping(value = "/deleteBatch") public Result<DistributContract> deleteBatch(@RequestParam(name="ids",required=true) String ids) { Result<DistributContract> result = new Result<DistributContract>(); if(ids==null || "".equals(ids.trim())) { result.error500("参数不识别!"); }else { this.distributContractService.removeByIds(Arrays.asList(ids.split(","))); result.success("删除成功!"); } return result; } @AutoLog(value = "erp分销合同-通过id查询") @ApiOperation(value="erp分销合同-通过id查询", notes="erp分销合同-通过id查询") @GetMapping(value = "/queryById") public Result<DistributContractVO> queryById(@RequestParam(name="id",required=true) String id) { Result<DistributContractVO> result = new Result<DistributContractVO>(); DistributContractVO distributContract = distributContractService.queryById(id); if(distributContract==null) { result.error500("未找到对应实体"); }else { result.setResult(distributContract); result.setSuccess(true); } return result; } @AutoLog(value = "erp分销合同-通过id查询") @ApiOperation(value="erp分销合同-通过id查询", notes="erp分销合同-通过id查询") @GetMapping(value = "/sendAudit") public Result<DistributContractVO> sendAudit(@RequestParam(name="id",required=true) String id) { Result<DistributContractVO> result = new Result<DistributContractVO>(); DistributContractVO distributContract = distributContractService.queryById(id); if(distributContract==null) { result.error500("未找到对应实体"); }else { distributContract.setStatus("1"); distributContractService.updateById( distributContract); result.setResult(distributContract); result.setSuccess(true); } return result; } @AutoLog(value = "erp分销合同-审批") @ApiOperation(value="erp分销合同-审批", notes="erp分销合同-审批") @PutMapping(value = "/audit") public Result<DistributContract> audit(@RequestBody DistributContractVO distributContract) { Result<DistributContract> result = new Result<DistributContract>(); try { distributContractService.auditDistributContract(distributContract); } catch (Exception e) { log.error("审批失败",e.getMessage()); result.setResult(distributContract); result.setSuccess(true); } return result; } @AutoLog(value = "erp分销合同-采购物料列表") @ApiOperation(value="erp分销合同-采购物料列表", notes="erp分销合同-采购物料列表") @GetMapping(value = "/purchaseMaterialList") public Result<IPage<PurchaseMaterial>> queryPageByPurchaseMaterialList( MaterialSearchVO materialSearchVO, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Result<IPage<PurchaseMaterial>> result = new Result<IPage<PurchaseMaterial>>(); Page<PurchaseMaterial> page = new Page<>(pageNo, pageSize); IPage<PurchaseMaterial> pageList = purchaseMaterialService.queryByPage(page,materialSearchVO.getGoodCode(),BaseContextHandler.getRealDepartId()); result.setSuccess(true); result.setResult(pageList); return result; } @AutoLog(value = "erp分销合同-根据货号查询采购合同物料清单") @ApiOperation(value="erp分销合同-根据货号查询采购合同物料清单", notes="erp分销合同-根据货号查询采购合同物料清单") @GetMapping(value = "/queryMaterialByGoodCode") public Result<PurchaseMaterial> queryMaterialByGoodCode(MaterialSearchVO materialSearchVO) { Result<PurchaseMaterial> result = new Result<PurchaseMaterial>(); SysDepart sysDepart = departService.getById(materialSearchVO.getDepartId()); String departIds = materialSearchVO.getDepartId(); if(sysDepart != null ){ departIds +=","+sysDepart.getParentId(); } List<PurchaseMaterial> purchaseMaterialList = purchaseMaterialService.queryMaterialByGoodCode(materialSearchVO.getGoodCode(), JSUtils.quoteEach(departIds,",")); if(purchaseMaterialList != null && !purchaseMaterialList.isEmpty()){ result.setSuccess(true); result.setResult(purchaseMaterialList.get(0)); }else{ result.error500("根据[厂站]以及[货号]未找到统购合同的药剂记录!"); } return result; } /** * <pre> * 通过excel导入数据 * </pre> * @param request * @param response * @return * @author 开发者姓名, 开发时间 * @Description: TODO(这里描述这个方法的需求变更情况) */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List<DistributContractTemp> listDistributContractTemps = ExcelImportUtil.importExcel(file.getInputStream(), DistributContractTemp.class, params); distributContractTempService.saveBatch(listDistributContractTemps); //同步到分销合同 distributContractTempService.queryMaterialByGoodCode(); return Result.ok("文件导入成功!数据行数:" + listDistributContractTemps.size()); } catch (Exception e) { log.error(e.getMessage(),e); return Result.error("文件导入失败:"+e.getMessage()); } finally { try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return Result.ok("文件导入失败!"); } @RequestMapping(value = "/importTemplate") public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) { //Step.2 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); //导出文件名称 mv.addObject(NormalExcelConstants.FILE_NAME, "分销合同管理"); mv.addObject(NormalExcelConstants.CLASS, DistributContractTemp.class); //mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("分销合同管理-导入表列表数据", "导出人:Jeecg", "导出信息")); //mv.addObject(NormalExcelConstants.DATA_LIST, pageList); return mv; } //synch @AutoLog(value = "erp分销合同-同步到分销合同") @ApiOperation(value="erp分销合同-同步到分销合同", notes="erp分销合同-同步到分销合同") @GetMapping(value = "/synchDistributContract") public Result<String> queryMaterialByGoodCode() { Result<String> result = new Result<String>(); try{ distributContractTempService.queryMaterialByGoodCode(); result.setSuccess(true); result.setResult("同步分销合同成功"); }catch (Exception e){ result.error500("根据[厂站]以及[货号]未找到统购合同的药剂记录!"); } return result; } }