package com.jsh.erp.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.Supplier; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.supplier.SupplierService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.*; import jxl.Sheet; import jxl.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; /** * @author ji|sheng|hua 华夏erp */ @RestController @RequestMapping(value = "/supplier") public class SupplierController { private Logger logger = LoggerFactory.getLogger(SupplierController.class); @Resource private SupplierService supplierService; @Resource private UserBusinessService userBusinessService; @Resource private UserService userService; /** * 更新供应商-只更新预付款,其余用原来的值 * @param supplierId * @param advanceIn * @param request * @return */ @PostMapping(value = "/updateAdvanceIn") public String updateAdvanceIn(@RequestParam("supplierId") Long supplierId, @RequestParam("advanceIn") BigDecimal advanceIn, HttpServletRequest request)throws Exception { Map objectMap = new HashMap(); int res = supplierService.updateAdvanceIn(supplierId, advanceIn); if(res > 0) { return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); } else { return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); } } /** * 查找客户信息-下拉框 * @param request * @return */ @PostMapping(value = "/findBySelect_cus") public JSONArray findBySelectCus(HttpServletRequest request)throws Exception { JSONArray arr = new JSONArray(); try { List supplierList = supplierService.findBySelectCus(); JSONArray dataArray = new JSONArray(); if (null != supplierList) { for (Supplier supplier : supplierList) { JSONObject item = new JSONObject(); //勾选判断1 Boolean flag = false; try { flag = userBusinessService.checkIsUserBusinessExist(null, null, "[" + supplier.getId().toString() + "]"); } catch (DataAccessException e) { logger.error(">>>>>>>>>>>>>>>>>查询用户对应的客户:存在异常!"); } if (flag == true) { item.put("id", supplier.getId()); item.put("supplier", supplier.getSupplier()); //客户名称 dataArray.add(item); } } } arr = dataArray; } catch(Exception e){ e.printStackTrace(); } return arr; } /** * 查找供应商信息-下拉框 * @param request * @return */ @PostMapping(value = "/findBySelect_sup") public JSONArray findBySelectSup(HttpServletRequest request) throws Exception{ JSONArray arr = new JSONArray(); try { List supplierList = supplierService.findBySelectSup(); JSONArray dataArray = new JSONArray(); if (null != supplierList) { for (Supplier supplier : supplierList) { JSONObject item = new JSONObject(); item.put("id", supplier.getId()); //供应商名称 item.put("supplier", supplier.getSupplier()); dataArray.add(item); } } arr = dataArray; } catch(Exception e){ e.printStackTrace(); } return arr; } /** * 查找会员信息-下拉框 * @param request * @return */ @PostMapping(value = "/findBySelect_retail") public JSONArray findBySelectRetail(HttpServletRequest request)throws Exception { JSONArray arr = new JSONArray(); try { List supplierList = supplierService.findBySelectRetail(); JSONArray dataArray = new JSONArray(); if (null != supplierList) { for (Supplier supplier : supplierList) { JSONObject item = new JSONObject(); item.put("id", supplier.getId()); //客户名称 item.put("supplier", supplier.getSupplier()); item.put("advanceIn", supplier.getAdvancein()); //预付款金额 dataArray.add(item); } } arr = dataArray; } catch(Exception e){ e.printStackTrace(); } return arr; } /** * 根据id查找信息 * @param supplierId * @param request * @return */ @GetMapping(value = "/findById") public BaseResponseInfo findById(@RequestParam("supplierId") Long supplierId, HttpServletRequest request)throws Exception { BaseResponseInfo res = new BaseResponseInfo(); try { JSONArray dataArray = new JSONArray(); List dataList = supplierService.findById(supplierId); if (null != dataList) { for (Supplier supplier : dataList) { JSONObject item = new JSONObject(); item.put("id", supplier.getId()); //名称 item.put("supplier", supplier.getSupplier()); item.put("type", supplier.getType()); item.put("contacts", supplier.getContacts()); item.put("phonenum", supplier.getPhonenum()); item.put("email", supplier.getEmail()); item.put("AdvanceIn", supplier.getAdvancein()); item.put("BeginNeedGet", supplier.getBeginneedget()); item.put("BeginNeedPay", supplier.getBeginneedpay()); /** * 2018-01-28这里会有空指针异常 * */ if(supplier.getIsystem()!=null){ item.put("isystem", supplier.getIsystem() == (short) 0 ? "是" : "否"); } item.put("description", supplier.getDescription()); item.put("fax", supplier.getFax()); item.put("telephone", supplier.getTelephone()); item.put("address", supplier.getAddress()); item.put("taxNum", supplier.getTaxnum()); item.put("bankName", supplier.getBankname()); item.put("accountNumber", supplier.getAccountnumber()); item.put("taxRate", supplier.getTaxrate()); item.put("enabled", supplier.getEnabled()); dataArray.add(item); } res.code = 200; res.data = dataArray; } } catch (Exception e) { e.printStackTrace(); res.code = 500; res.data = "获取数据失败"; } return res; } /** * 批量设置状态-启用或者禁用 * @param enabled * @param supplierIDs * @param request * @return */ @PostMapping(value = "/batchSetEnable") public String batchSetEnable(@RequestParam("enabled") Boolean enabled, @RequestParam("supplierIDs") String supplierIDs, HttpServletRequest request)throws Exception { Map objectMap = new HashMap(); int res = supplierService.batchSetEnable(enabled, supplierIDs); if(res > 0) { return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); } else { return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); } } /** * 用户对应客户显示 * @param type * @param keyId * @param request * @return */ @PostMapping(value = "/findUserCustomer") public JSONArray findUserCustomer(@RequestParam("UBType") String type, @RequestParam("UBKeyId") String keyId, HttpServletRequest request) throws Exception{ JSONArray arr = new JSONArray(); try { List dataList = supplierService.findUserCustomer(); //开始拼接json数据 JSONObject outer = new JSONObject(); outer.put("id", 1); outer.put("text", "客户列表"); outer.put("state", "open"); //存放数据json数组 JSONArray dataArray = new JSONArray(); if (null != dataList) { for (Supplier supplier : dataList) { JSONObject item = new JSONObject(); item.put("id", supplier.getId()); item.put("text", supplier.getSupplier()); //勾选判断1 Boolean flag = false; try { flag = userBusinessService.checkIsUserBusinessExist(type, keyId, "[" + supplier.getId().toString() + "]"); } catch (Exception e) { logger.error(">>>>>>>>>>>>>>>>>设置用户对应的客户:类型" + type + " KeyId为: " + keyId + " 存在异常!"); } if (flag == true) { item.put("checked", true); } //结束 dataArray.add(item); } } outer.put("children", dataArray); arr.add(outer); } catch (Exception e) { e.printStackTrace(); } return arr; } /** * 生成excel表格 * @param supplier * @param type * @param phonenum * @param telephone * @param description * @param request * @param response * @return */ @GetMapping(value = "/exportExcel") public BaseResponseInfo exportExcel(@RequestParam("supplier") String supplier, @RequestParam("type") String type, @RequestParam("phonenum") String phonenum, @RequestParam("telephone") String telephone, @RequestParam("description") String description, HttpServletRequest request, HttpServletResponse response)throws Exception { BaseResponseInfo res = new BaseResponseInfo(); Map map = new HashMap(); String message = "成功"; try { List dataList = supplierService.findByAll(supplier, type, phonenum, telephone, description); String[] names = {"名称", "类型", "联系人", "电话", "电子邮箱", "预收款", "期初应收", "期初应付", "备注", "传真", "手机", "地址", "纳税人识别号", "开户行", "账号", "税率", "状态"}; String title = "信息报表"; List objects = new ArrayList(); if (null != dataList) { for (Supplier s : dataList) { String[] objs = new String[17]; objs[0] = s.getSupplier(); objs[1] = s.getType(); objs[2] = s.getContacts(); objs[3] = s.getPhonenum(); objs[4] = s.getEmail(); objs[5] = s.getAdvancein() == null? "" : s.getAdvancein().toString(); objs[6] = s.getBeginneedget() == null? "" : s.getBeginneedget().toString(); objs[7] = s.getBeginneedpay() == null? "" : s.getBeginneedpay().toString(); objs[8] = s.getDescription(); objs[9] = s.getFax(); objs[10] = s.getTelephone(); objs[11] = s.getAddress(); objs[12] = s.getTaxnum(); objs[13] = s.getBankname(); objs[14] = s.getAccountnumber(); objs[15] = s.getTaxrate() == null? "" : s.getTaxrate().toString(); objs[16] = s.getEnabled() ? "启用" : "禁用"; objects.add(objs); } } File file = ExcelUtils.exportObjectsWithoutTitle(title, names, title, objects); ExportExecUtil.showExec(file, file.getName(), response); res.code = 200; } catch (Exception e) { e.printStackTrace(); message = "导出失败"; res.code = 500; } finally { map.put("message", message); res.data = map; } return res; } /** * 导入excel表格-供应商 * @param supplierFile * @param request * @param response * @return */ @PostMapping(value = "/importExcelVendor") public void importExcelVendor(MultipartFile supplierFile, HttpServletRequest request, HttpServletResponse response) throws Exception{ importFun(supplierFile); response.sendRedirect("../pages/manage/vendor.html"); } /** * 导入excel表格-客户 * @param supplierFile * @param request * @param response * @return */ @PostMapping(value = "/importExcelCustomer") public void importExcelCustomer(MultipartFile supplierFile, HttpServletRequest request, HttpServletResponse response) throws Exception{ importFun(supplierFile); response.sendRedirect("../pages/manage/customer.html"); } /** * 导入excel表格-会员 * @param supplierFile * @param request * @param response * @return */ @PostMapping(value = "/importExcelMember") public void importExcelMember(MultipartFile supplierFile, HttpServletRequest request, HttpServletResponse response) throws Exception{ importFun(supplierFile); response.sendRedirect("../pages/manage/member.html"); } public String importFun(MultipartFile supplierFile)throws Exception{ BaseResponseInfo info = new BaseResponseInfo(); Map data = new HashMap(); String message = "成功"; try { Sheet src = null; //文件合法性校验 try { Workbook workbook = Workbook.getWorkbook(supplierFile.getInputStream()); src = workbook.getSheet(0); } catch (Exception e) { message = "导入文件不合法,请检查"; data.put("message", message); info.code = 400; info.data = data; } //读取所有的摄像机编码 //每行中数据顺序 "名称","类型","联系人","电话","电子邮箱","预收款","期初应收","期初应付","备注","传真","手机","地址","纳税人识别号","开户行","账号","税率","状态" List sList = new ArrayList(); for (int i = 1; i < src.getRows(); i++) { Supplier s = new Supplier(); s.setSupplier(ExcelUtils.getContent(src, i, 0)); s.setType(ExcelUtils.getContent(src, i, 1)); s.setContacts(ExcelUtils.getContent(src, i, 2)); s.setPhonenum(ExcelUtils.getContent(src, i, 3)); s.setEmail(ExcelUtils.getContent(src, i, 4)); s.setAdvancein(parseBigDecimalEx(ExcelUtils.getContent(src, i, 5))); s.setBeginneedget(parseBigDecimalEx(ExcelUtils.getContent(src, i, 6))); s.setBeginneedpay(parseBigDecimalEx(ExcelUtils.getContent(src, i, 7))); s.setDescription(ExcelUtils.getContent(src, i, 8)); s.setFax(ExcelUtils.getContent(src, i, 9)); s.setTelephone(ExcelUtils.getContent(src, i, 10)); s.setAddress(ExcelUtils.getContent(src, i, 11)); s.setTaxnum(ExcelUtils.getContent(src, i, 12)); s.setBankname(ExcelUtils.getContent(src, i, 13)); s.setAccountnumber(ExcelUtils.getContent(src, i, 14)); s.setTaxrate(parseBigDecimalEx(ExcelUtils.getContent(src, i, 15))); String enabled = ExcelUtils.getContent(src, i, 16); s.setEnabled(enabled.equals("启用")? true: false); s.setIsystem(Byte.parseByte("1")); sList.add(s); } info = supplierService.importExcel(sList); } catch (Exception e) { e.printStackTrace(); message = "导入失败"; info.code = 500; data.put("message", message); info.data = data; } return null; } public BigDecimal parseBigDecimalEx(String str)throws Exception{ if(!StringUtil.isEmpty(str)) { return new BigDecimal(str); } else { return null; } } /** * create by: qiankunpingtai * website:https://qiankunpingtai.cn * description: * 批量删除供应商信息 * create time: 2019/3/29 11:15 * @Param: ids * @return java.lang.Object */ @RequestMapping(value = "/batchDeleteSupplierByIds") public Object batchDeleteSupplierByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType", required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception { JSONObject result = ExceptionConstants.standardSuccess(); int i=0; if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){ i= supplierService.batchDeleteSupplierByIdsNormal(ids); }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){ i= supplierService.batchDeleteSupplierByIds(ids); }else{ logger.error("异常码[{}],异常提示[{}],参数,ids[{}],deleteType[{}]", ExceptionConstants.DELETE_REFUSED_CODE,ExceptionConstants.DELETE_REFUSED_MSG,ids,deleteType); throw new BusinessRunTimeException(ExceptionConstants.DELETE_REFUSED_CODE, ExceptionConstants.DELETE_REFUSED_MSG); } if(i<1){ logger.error("异常码[{}],异常提示[{}],参数,ids[{}]", ExceptionConstants.SUPPLIER_DELETE_FAILED_CODE,ExceptionConstants.SUPPLIER_DELETE_FAILED_MSG,ids); throw new BusinessRunTimeException(ExceptionConstants.SUPPLIER_DELETE_FAILED_CODE, ExceptionConstants.SUPPLIER_DELETE_FAILED_MSG); } return result; } }