package com.starcharge.wios.controller; import com.ihidea.component.api.v2.BaseResponse; import com.ihidea.core.support.exception.ServiceException; import com.ihidea.core.support.session.SessionInfo; import com.starcharge.wios.auth.service.TokenService; import com.starcharge.wios.convert.TauxiliarymaterialsConvert; import com.starcharge.wios.dao.entity.Tauxiliarymaterials; import com.starcharge.wios.dao.entity.TauxiliarymaterialsAdd; import com.starcharge.wios.dao.entity.TauxiliarymaterialsCriteria; import com.starcharge.wios.dao.mappers.TauxiliarymaterialsMapper; import com.starcharge.wios.dto.TauxiliarymaterialsCheckDto; import com.starcharge.wios.enums2.TauxiliarymaterialStatusEnum; import com.starcharge.wios.utils.ExcelUtils; import com.starcharge.wios.validation.CreateEntityGroup; import com.starcharge.wios.validation.ParamsValidate; import com.starcharge.wios.vo.TauxiliarymaterialsExcelVo; import com.starcharge.wios.vo.TauxiliarymaterialsVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.var; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDateTime; import java.util.List; /** * @projectName:xr-wios * @packageName:com.starcharge.wios.controller * @Description:TODO * @Author:luyincheng * @CreateDate: 2023/9/25 14:50 */ @RestController @RequestMapping("api/tauxiliarymaterials") @Api(tags = "辅材管理接口") public class TauxiliarymaterialsController { @Autowired private TokenService tokenService; @Autowired private TauxiliarymaterialsMapper tauxiliarymaterialsMapper; public void UpdateColumns(Tauxiliarymaterials tauxiliarymaterials){ SessionInfo sessionInfo = tokenService.getUser(); tauxiliarymaterials.setUpdatedBy(sessionInfo.getUserId()); tauxiliarymaterials.setUpdatedTime(LocalDateTime.now()); } @PostMapping("/add") @ApiOperation("新增辅材申请") @ParamsValidate public BaseResponse<Void> AddTauxiliarymaterials(@RequestBody @Validated(CreateEntityGroup.class) TauxiliarymaterialsAdd tauxiliarymaterialsAdd, BindingResult bindingResult){ SessionInfo sessionInfo = tokenService.getUser(); var now=LocalDateTime.now(); tauxiliarymaterialsAdd.setApplyStatus(TauxiliarymaterialStatusEnum.已申请.name()); tauxiliarymaterialsAdd.setLogisticStatus(TauxiliarymaterialStatusEnum.未发货.name()); tauxiliarymaterialsAdd.setReceivingStatus(TauxiliarymaterialStatusEnum.未收货.name()); tauxiliarymaterialsAdd.setApplyTime(now); tauxiliarymaterialsAdd.setCreatedBy(sessionInfo.getUserId()); tauxiliarymaterialsAdd.setCreatedTime(now); tauxiliarymaterialsAdd.setUpdatedBy(sessionInfo.getUserId()); tauxiliarymaterialsAdd.setUpdatedTime(now); //暂时代替申请单号 // tauxiliarymaterials.setApplyOrder(IdWorker.getIdStr()); tauxiliarymaterialsMapper.insertSelective(tauxiliarymaterialsAdd); return new BaseResponse<>(); } @GetMapping("/detail") @ApiOperation(value = "查询辅材申请详情") public BaseResponse<Tauxiliarymaterials> detail(@RequestParam int id){ return new BaseResponse(this.tauxiliarymaterialsMapper.selectByPrimaryKey(id)); } @PostMapping("/query") @ApiOperation(value = "查询辅材申请列表",notes = "属性不为空即为查询条件") public BaseResponse<List<Tauxiliarymaterials>> queryTauxiliarymaterialsList(Tauxiliarymaterials tauxiliarymaterials){ return new BaseResponse(this.tauxiliarymaterialsMapper.selectTAuxiliaryMaterialsList(tauxiliarymaterials)); } @PostMapping("/delete") @ApiOperation(value = "删除辅材申请") public BaseResponse<Boolean> deleteTauxiliarymaterials(@RequestParam int id){ return new BaseResponse(this.tauxiliarymaterialsMapper.deleteByPrimaryKey(id)>0); } @PostMapping("/updateinfo") @ApiOperation(value = "更新辅材申请信息") public BaseResponse<Boolean> updateTauxiliarymaterialsInfo(@RequestBody TauxiliarymaterialsVo tauxiliarymaterials){ if(tauxiliarymaterials.getId()==null||tauxiliarymaterials.getId()<=0){ throw new ServiceException("400","id不能为空"); } var updateDto=new Tauxiliarymaterials(); BeanUtils.copyProperties(tauxiliarymaterials,updateDto); UpdateColumns(updateDto); return new BaseResponse(this.tauxiliarymaterialsMapper.updateByPrimaryKeySelective(updateDto)>0); } @GetMapping("/updatestatus") @ApiOperation(value = "更新辅材申请状态") public BaseResponse<Boolean> updateStatus(@RequestParam int id, @RequestParam(required = false) @ApiParam("发货状态:未发货,已发货;可为空") String logisticStatus, @RequestParam(required = false) @ApiParam("收货状态:未收货, 已收货;可为空")String receivingStatus, @RequestParam(required = false) @ApiParam("申请状态:已申请,已驳回,已通过,已关闭;可为空")String applyStatus){ if(StringUtils.isEmpty(logisticStatus)&&StringUtils.isEmpty(receivingStatus)&&StringUtils.isEmpty(applyStatus)){ throw new ServiceException("400","至少更新一种状态"); } var ta=new Tauxiliarymaterials(); ta.setId(id); ta.setApplyStatus(TauxiliarymaterialStatusEnum.getEnumNameByName(0,applyStatus)); ta.setLogisticStatus(TauxiliarymaterialStatusEnum.getEnumNameByName(1,logisticStatus)); ta.setReceivingStatus(TauxiliarymaterialStatusEnum.getEnumNameByName(2,receivingStatus)); UpdateColumns(ta); return new BaseResponse(this.tauxiliarymaterialsMapper.updateByPrimaryKeySelective(ta)>0); } @PostMapping("/check") @ApiOperation(value = "批量审批") @Transactional public BaseResponse<Boolean> checkApply(@RequestBody TauxiliarymaterialsCheckDto tauxiliarymaterialsCheckDto){ SessionInfo sessionInfo = tokenService.getUser(); tauxiliarymaterialsCheckDto.getTauxiliarymaterialsCheckVoList().stream() .filter(dto->{ var exist=this.tauxiliarymaterialsMapper.selectByPrimaryKey(dto.getId()); if(exist==null){ return false; }else{ //已审批 if(TauxiliarymaterialStatusEnum.getEnumByName(0,exist.getApplyStatus()).getValue()>1){ return false; } } return true; }) .map(dto->{ var ta=new Tauxiliarymaterials(); ta.setId(dto.getId()); ta.setApprovedQuantity(dto.getApprovedQuantity()); ta.setApplyStatus(tauxiliarymaterialsCheckDto.getApplyStatus()); ta.setCheckSuggestion(tauxiliarymaterialsCheckDto.getCheckSuggestion()); ta.setCheckUser(sessionInfo.getUserId()); ta.setCheckUserName(sessionInfo.getUserName()); ta.setCheckTime(LocalDateTime.now()); UpdateColumns(ta); return ta; }).forEach(ta->{ this.tauxiliarymaterialsMapper.updateByPrimaryKeySelective(ta); }); return new BaseResponse(true); } @GetMapping("/bindLogisticOrder") @ApiOperation(value = "绑定物流单号") public BaseResponse<Boolean> bindLogisticOrder(@RequestParam @ApiParam("辅材申请单id") int id,@RequestParam @ApiParam("物流单号") String logisticOrder){ var dto=new Tauxiliarymaterials(); dto.setId(id); dto.setLogisticOrder(logisticOrder); dto.setLogisticStatus(TauxiliarymaterialStatusEnum.已发货.name()); return new BaseResponse(this.tauxiliarymaterialsMapper.updateByPrimaryKeySelective(dto)>0); } @PostMapping("/export") @ApiOperation(value = "导出辅料申请列表") public void export(HttpServletResponse response,@RequestBody Tauxiliarymaterials tauxiliarymaterials) throws IOException { // ExcelUtil<WarehouseInfo> util = new ExcelUtil<WarehouseInfo>(WarehouseInfo.class); // util.exportExcel(response, list, "仓库信息管理数据"); List<TauxiliarymaterialsExcelVo> data = TauxiliarymaterialsConvert.INSTANCE.convertList(this .tauxiliarymaterialsMapper.selectTAuxiliaryMaterialsList(tauxiliarymaterials)); // 输出 ExcelUtils.write(response, "辅材申请列表.xls", "辅材信息", TauxiliarymaterialsExcelVo.class, data); } @GetMapping("/getRecent3MonthHasChecked") @ApiOperation(value = "查询最近三个月已审批物料申请单") public BaseResponse<List<Tauxiliarymaterials>> getRecent3MonthHasChecked(@RequestParam @ApiParam("物料编码") String materialCode){ TauxiliarymaterialsCriteria criteria=new TauxiliarymaterialsCriteria(); criteria.createCriteria().andApplyTimeGreaterThanOrEqualTo(LocalDateTime.now().minusMonths(3)) .andMaterialCodeEqualTo(materialCode) .andApplyStatusEqualTo(TauxiliarymaterialStatusEnum.已通过.name()); return new BaseResponse<>(this.tauxiliarymaterialsMapper.selectByExample(criteria)); } }