package com.huaheng.pc.receipt.receiptDetail.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.ibatis.annotations.Param; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.aspectj.weaver.loadtime.Aj; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.ReentrantLock; @Api(tags = "入库明细") @Controller @RequestMapping("/receipt/receiptDetail") public class ReceiptDetailController extends BaseController { @Resource private ReceiptDetailService receiptDetailService; @Resource private ReceiptHeaderService receiptHeaderService; private String prefix = "receipt/receiptDetail"; @RequiresPermissions("receipt:receiptDetail:view") @Log(title = "入库-入库详情列表", operating = "入库详情列表", action = BusinessType.GRANT) @GetMapping("/list/{id}") public String list(@PathVariable("id")Integer id, ModelMap mmap) { ReceiptHeader receiptHeader = receiptHeaderService.getById(id); mmap.put("receiptId", id); mmap.put("receiptCode", receiptHeader.getCode()); return prefix+"/receiptDetail"; } /** * 查询入库详情 */ @ApiOperation(value="查看入库详情", notes="根据头表id获取入库单明细信息", httpMethod = "POST") @RequiresPermissions("receipt:receiptDetail:list") @Log(title = "入库-入库单明细管理", operating = "查看入库单明细", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(@ApiParam(name="receiptDetail",value="入库详情") ReceiptDetail receiptDetail, @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin, @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) { LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(); PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), ReceiptDetail::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), ReceiptDetail::getCreated, createdEnd) .eq(ReceiptDetail::getReceiptId, receiptDetail.getReceiptId()); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ /*使用分页查询*/ Page<ReceiptDetail> page = new Page<>(pageNum, pageSize); IPage<ReceiptDetail> iPage = receiptDetailService.page(page, lambdaQueryWrapper); return getMpDataTable(iPage.getRecords(), iPage.getTotal()); } else { List<ReceiptDetail> list = receiptDetailService.list(lambdaQueryWrapper); return getDataTable(list); } } /** * 新增入库明细 */ @GetMapping("/add/{id}/{receiptCode}") public String add(@PathVariable("id") Integer id, @PathVariable("receiptCode") String receiptCode, ModelMap mmap) { LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptHeader::getId, id).eq(ReceiptHeader::getCode, receiptCode); ReceiptHeader receiptHeader = receiptHeaderService.getOne(lambdaQueryWrapper); mmap.put("receiptId", id); mmap.put("companyCode", receiptHeader.getCompanyCode()); mmap.put("receiptCode", receiptCode); return prefix + "/add"; } /** * 新增保存入库单 */ @ApiOperation(value="新增入库单 ", notes="新增入库单 ", httpMethod = "POST") @RequiresPermissions("receipt:receiptDetail:add") @Log(title = "入库-入库单 ",operating = "新增入库单 ", action = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(ReceiptDetail receiptDetail) { return receiptDetailService.saveReceiptDetaial(receiptDetail); } /** * 修改入库明细 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { ReceiptDetail receiptDetail = receiptDetailService.getById(id); mmap.put("receiptDetail", receiptDetail); return prefix + "/edit"; } /** * 修改保存入库单 */ @ApiOperation(value="修改入库单 ", notes="修改入库单 ", httpMethod = "POST") @RequiresPermissions("receipt:receiptDetail:add") @Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.INSERT) @PostMapping("/edit") @ResponseBody public AjaxResult editSave( @ApiParam(name="receiptDetail",value="入库详情") ReceiptDetail receiptDetail) { return receiptDetailService.updateReceiptDetaial(receiptDetail); } /** * 删除入库单 */ //@ApiOperation(value="删除入库单 ", notes="删除入库单 ", httpMethod = "POST") //@RequiresPermissions("receipt:receiptDetail:add") //@Log(title = "入库-入库单 ",operating = "修改入库单 ", action = BusinessType.INSERT) //@PostMapping("/edit") //@ResponseBody //public AjaxResult remove(String ids) { // if (StringUtils.isEmpty(ids)){ // return AjaxResult.error("id为空"); // } // List<Integer> list = new ArrayList<>(); // for (Integer id : Convert.toIntArray(ids)){ // list.add(id); // } // return toAjax(receiptDetailService.removeByIds(list)); //} /** * 审核入库单 */ @ApiOperation(value="审核入库单", notes="审核入库单", httpMethod = "POST") @RequiresPermissions("receipt:receiptDetail:approval") @Log(title = "入库-入库单 ",operating = "审核入库单 ", action = BusinessType.UPDATE) @PostMapping("/approval") @ResponseBody public AjaxResult approval(@ApiParam(name="id",value="入库明细表id") String ids, @ApiParam(name="approval",value="审核结果值,10审核驳回,20作废,100审核成功") Integer approval) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id不能为空"); } if (approval == 10 || approval == 20 || approval == 100){} else { throw new ServiceException("传入参数错误"); } for (Integer id : Convert.toIntArray(ids)) { ReceiptDetail receiptDetail = new ReceiptDetail(); receiptDetail.setId(id); receiptDetail.setProcessStamp(String.valueOf(approval)); receiptDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); if (receiptDetailService.updateById(receiptDetail)){ ReceiptDetail newReceiptDetail = receiptDetailService.getById(id); //更新入库明细状态 receiptDetailService.updateById(receiptDetailService.queryflow(newReceiptDetail)); ReceiptHeader receiptHeader = new ReceiptHeader(); receiptHeader.setFirstStatus(approval); receiptHeader.setId(newReceiptDetail.getReceiptId()); receiptHeaderService.updateById(receiptHeader); //更新头表尾状态 receiptDetailService.updateReceiptHeaderLastStatus(newReceiptDetail.getReceiptId()); } else { throw new ServiceException("审核失败"); } } return AjaxResult.success("审核成功"); } /** * 到货入库单 */ @ApiOperation(value="入库单到货", notes="入库单到货", httpMethod = "POST") @RequiresPermissions("receipt:receiptDetail:arrival") @Log(title = "入库-入库单 ",operating = "入库单到货", action = BusinessType.UPDATE) @PostMapping("/arrival") @ResponseBody public AjaxResult arrival(@ApiParam(name = "id", value = "id字符串")String ids){ if (StringUtils.isEmpty(ids)){ return AjaxResult.error("id为空"); } for (Integer id : Convert.toIntArray(ids)){ receiptHeaderService.arrival(id); } return AjaxResult.success("已到货"); } }