package com.huaheng.pc.srm.controller; 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.ApiLogger; 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.TableDataInfo; import com.huaheng.pc.config.warehouse.domain.WarehouseU8; import com.huaheng.pc.config.warehouse.service.WarehouseU8Service; import com.huaheng.pc.srm.domain.SrmDetail; import com.huaheng.pc.srm.domain.SrmHeader; import com.huaheng.pc.srm.service.SrmDetailService; import com.huaheng.pc.srm.service.SrmHeaderService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @Controller @RequestMapping("/srm/srmDetailNone") public class SRMDetailNoneController extends BaseController { private String prefix = "srm/srmDetailNone"; @RequiresPermissions("srm:srmDetail:view") @GetMapping("/{headerId}") public String srmDetail(@PathVariable("headerId") String headerId, ModelMap mmap) { mmap.put("headerId", headerId); return prefix + "/srmDetailNone"; } @Resource private SrmDetailService srmDetailService; @Resource private WarehouseU8Service warehouseU8Service; @Resource private SrmHeaderService srmHeaderService; /** * 查询已到送货单明细 */ @RequiresPermissions("srm:srmDetail:list") @Log(title = "送货单-送货单", operating="查看送货单明细", action = BusinessType.GRANT) @PostMapping("/list") @ResponseBody public TableDataInfo list(SrmDetail srmDetail) { srmDetail.setEnable(0); startPage(); List<SrmDetail> list = srmDetailService.selectList(srmDetail) ; for (SrmDetail detail : list) { WarehouseU8 warehouseWu = new WarehouseU8(); warehouseWu.setWarehouseCode(srmDetail.getWarehouseCode()); warehouseWu.setUCompanyCode(detail.getCompanyCode()); warehouseWu.setUWarehouseCode(detail.getUWarehouseCode()); List<WarehouseU8> warehouseWulist = warehouseU8Service.getByDomain(warehouseWu); if(warehouseWulist != null&&warehouseWulist.size()>0){ warehouseWu=warehouseWulist.get(0); detail.setUWarehouseName(warehouseWu.getUWarehouseName()); } } return getDataTable(list); } /** * 选择仓库 */ @GetMapping("/checkWarehouse/{ids}") public String checkWarehouse(@PathVariable("ids") String ids, ModelMap mmap) { if (StringUtils.isEmpty(ids)){ throw new ServiceException("没有选中明细行"); } List<Integer> list = Arrays.asList(Convert.toIntArray(ids)); SrmDetail srmDetail = new SrmDetail(); srmDetail.setId(list.get(0)); srmDetail = srmDetailService.selectFirstModel(srmDetail); if(srmDetail !=null){ srmDetail.setCompanyName(ids); mmap.put("srmDetail",srmDetail); } return prefix + "/checkWarehouse"; } /** * 选择仓库 */ @RequiresPermissions("srm:srmDetail:checkWarehouse") @Log(title = "送货单-送货单", operating = "选择仓库", action = BusinessType.DELETE) @PostMapping("/checkWarehouse") @ResponseBody public AjaxResult confirmQty(String ids,String uWarehouseCode) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("没有选中明细行"); } Integer[] list = Convert.toIntArray(ids); for (Integer id : list) { SrmDetail srmDetail = new SrmDetail(); srmDetail.setId(id); srmDetail.setUWarehouseCode(uWarehouseCode); srmDetail.setLastUpdateBy(ShiroUtils.getLoginName()); srmDetail.setLastUpdate(new Date()); srmDetailService.updateById(srmDetail); } return AjaxResult.success("成功"); } /** * 确认数量 */ @GetMapping("/confirmConfirQty") public String confirmConfirQty( Integer id, ModelMap mmap) { SrmDetail srmDetail = new SrmDetail(); srmDetail.setId(id); srmDetail =srmDetailService.selectFirstModel(srmDetail); mmap.put("srmDetail", srmDetail); return prefix + "/confirmConfirQty"; } /** * 确认数量 */ @RequiresPermissions("srm:srmDetail:confirmQty") @Log(title = "送货单-送货单", operating = "确认到货数量", action = BusinessType.DELETE) @PostMapping("/confirmConfirQty") @ResponseBody public AjaxResult confirmConfirQty(SrmDetail srmDetail) { srmDetail.setLastUpdateBy(ShiroUtils.getLoginName()); srmDetail.setLastUpdate(new Date()); srmDetailService.updateById(srmDetail); return AjaxResult.success("成功"); } /** * 确认数量 */ @RequiresPermissions("srm:srmDetail:confirmQty") @Log(title = "送货单-送货单", operating = "确认到货数量", action = BusinessType.DELETE) @PostMapping("/confirmQty") @ResponseBody public AjaxResult confirmQty(String ids) { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("没有选中明细行"); } Integer[] list = Convert.toIntArray(ids); for (Integer id : list) { SrmDetail srmDetail = new SrmDetail(); srmDetail.setId(id); srmDetail =srmDetailService.selectFirstModel(srmDetail); if(srmDetail != null){ srmDetail.setConfirmQty(srmDetail.getQty()); srmDetail.setLastUpdateBy(ShiroUtils.getLoginName()); srmDetail.setLastUpdate(new Date()); srmDetailService.updateById(srmDetail); } } return AjaxResult.success("成功"); } /** * 提交 */ @RequiresPermissions("srm:srmDetail:confirm") @Log(title = "送货单-送货单", operating = "提交", action = BusinessType.DELETE) @PostMapping("/confirm") @ResponseBody @ApiLogger(apiName = "srm送货单-提交", from = "SRM" ) public AjaxResult confirm(String ids,String warehouseCode) throws ParseException { if (StringUtils.isEmpty(ids)){ return AjaxResult.error("没有选中明细行"); } warehouseCode = ShiroUtils.getWarehouseCode(); if (StringUtils.isEmpty(warehouseCode)){ return AjaxResult.error("没有仓库code"); } Integer[] list = Convert.toIntArray(ids); Integer detailId = null; List<SrmDetail> srmDetails = new ArrayList<>(); List<SrmDetail> failedSrmDetail = new ArrayList<>(); Integer headId = 0; for (Integer id : list) { SrmDetail srmDetail = new SrmDetail(); srmDetail.setId(id); srmDetail = srmDetailService.selectFirstModel(srmDetail); if(srmDetail == null){ return AjaxResult.error("id为"+id+"的送货单明细不存在"); } if(StringUtils.isEmpty(srmDetail.getUWarehouseCode())){ return AjaxResult.error("id为"+id+"的送货单明细没有选择仓库"); } // 如果不合格数量不等于0 if (srmDetail.getUnqualifiedQty().compareTo(new BigDecimal(0)) != 0){ failedSrmDetail.add(srmDetail); } srmDetail.setConfirmQty(srmDetail.getQty()); srmDetail.setEnable(1); srmDetail.setLastUpdateBy(ShiroUtils.getLoginName()); srmDetail.setLastUpdate(new Date()); srmDetailService.updateById(srmDetail); detailId = id; srmDetails.add(srmDetail); } SrmDetail condition = new SrmDetail(); condition.setId(detailId); condition = srmDetailService.selectFirstModel(condition); SrmHeader srmHeader = null; if(condition != null) { srmHeader = new SrmHeader(); srmHeader.setId(condition.getHeaderId()); srmHeader = srmHeaderService.selectFirstModel(srmHeader); if (srmHeader != null) { SrmDetail srmDetail = new SrmDetail(); srmDetail.setCode(srmHeader.getCode()); List<SrmDetail> srmDetailList = srmDetailService.selectList(srmDetail); srmDetail.setEnable(1); List<SrmDetail> details = srmDetailService.selectList(srmDetail); if (srmDetailList.size() == details.size()) { srmHeader.setEnable(2); } else { srmHeader.setEnable(1); } srmHeader.setLastUpdate(new Date()); srmHeader.setLastUpdateBy(ShiroUtils.getLoginName()); srmHeaderService.updateById(srmHeader); headId = srmHeader.getId(); } } if(!srmDetails.isEmpty()){ srmHeaderService.comfirmSrmModel(srmDetails); } // 查询所有子表 SrmDetail detail = new SrmDetail(); detail.setHeaderId(headId); List<SrmDetail> detailList = srmDetailService.selectList(detail); AjaxResult result = AjaxResult.success(); //校验是否为整单提交 if (detailList.size() == list.length){ // 获取ERP到货单 String[] temp = new String[]{String.valueOf(headId)}; result = srmHeaderService.getReceipt(temp); }else { // 不为整单提交,将送货单进行拆分 result = srmHeaderService.getReceiptlist(srmDetails); } if (result.hasErr()){ result.setMsg("系统自动获取erp到货单失败请手动获取:" + result.getMsg()); return result; } // 存在不合格数量直接调用退料单接口 if (failedSrmDetail.size() > 0){ srmDetailService.checkWhetherQualified(failedSrmDetail, srmHeader); } return AjaxResult.success("成功"); } }