Prechádzať zdrojové kódy

增加目的地接口 发运单接口变更

jz.kai 2 rokov pred
rodič
commit
e1ecbbf959

+ 101 - 0
web/src/main/java/com/jpsoft/prices/modules/base/controller/StandardController.java

@@ -1,20 +1,30 @@
 package com.jpsoft.prices.modules.base.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.prices.config.OSSConfig;
+import com.jpsoft.prices.modules.common.utils.OSSUtil;
+import com.jpsoft.prices.modules.common.utils.POIUtils;
 import com.jpsoft.prices.modules.common.utils.PojoUtils;
 import com.jpsoft.prices.modules.common.dto.Sort;
 import com.jpsoft.prices.modules.common.dto.MessageResult;
 import com.jpsoft.prices.modules.base.entity.Standard;
 import com.jpsoft.prices.modules.base.service.StandardService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -24,6 +34,8 @@ import java.util.*;
 public class StandardController {
     private Logger logger = LoggerFactory.getLogger(getClass());
 
+    @Autowired
+    private OSSConfig ossConfig;
     @Autowired
     private StandardService standardService;
 
@@ -225,4 +237,93 @@ public class StandardController {
 
         return msgResult;
     }
+
+    @ApiOperation(value="导入")
+    @PostMapping("importXls")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "uploadFile",value = "上传文件", required = true,paramType="form", dataType = "__file")
+    })
+    public MessageResult<String> importXls(MultipartFile uploadFile, @RequestAttribute String subject){
+        MessageResult<String> msgResult = new MessageResult<>();
+
+        try {
+            POIUtils poiUtils = new POIUtils(uploadFile.getInputStream());
+            Sheet sheet1 = poiUtils.getSheetAt(0);
+
+            int insertCount = 0;
+            int failCount = 0;
+            int validateColIndex = 2;
+
+            for(int rowIndex=1; rowIndex<=sheet1.getLastRowNum(); rowIndex++){
+                try {
+                    String strArea = poiUtils.getCellValue(0,rowIndex,0).toString();
+                    String strName = poiUtils.getCellValue(0,rowIndex,1).toString();
+
+//                    Office office = officeList.get(0);
+//                    office.setUpdateBy(subject);
+//                    office.setUpdateTime(new Date());
+
+//                    if(StringUtils.isNotEmpty(strArea)){
+//                        Area area = areaService.getByName(strArea);
+//                        if(area != null) {
+//                            office.setAreaId(area.getId());
+//                        }
+//                        else{
+//                            sheet1.getRow(rowIndex).createCell(validateColIndex).setCellValue("未找到该区域!");
+//                            failCount++;
+//                            continue;
+//                        }
+//                    }
+//                    else{
+//                        sheet1.getRow(rowIndex).createCell(validateColIndex).setCellValue("请填写区域!");
+//                        failCount++;
+//                        continue;
+//                    }
+//
+//                    standardService.update(office);
+                    insertCount++;
+                }
+                catch(Exception innerEx){
+                    logger.error(innerEx.getMessage(),innerEx);
+                    failCount++;
+                }
+            }
+
+            if (failCount>0){
+                //有导入失败的记录
+                msgResult.setResult(false);
+                msgResult.setMessage("数据成功新增" + insertCount + "条。还有" + failCount + "条数据未导入成功,错误原因请查看报表。");
+
+                //todo 只保留错误数据的sheet
+                Workbook wb = poiUtils.exportErrorXls(0,validateColIndex,1 + insertCount + failCount);
+
+                //todo 将wb保存到oss
+                ByteArrayOutputStream output = new ByteArrayOutputStream();
+                wb.write(output);
+
+                byte[] buffer = output.toByteArray();
+                ByteArrayInputStream input = new ByteArrayInputStream(buffer);
+
+                //格式化
+                SimpleDateFormat sim = new SimpleDateFormat("yyyyMMddHHmmss");
+                String fileName = "error" + sim.format(new Date()) + ".xls";
+                String downloadUrl = OSSUtil.upload(ossConfig,"prices",fileName,input);
+
+                //todo 返回导入失败报表下载链接
+                msgResult.setData(downloadUrl);
+            }
+            else{
+                msgResult.setResult(true);
+                msgResult.setMessage("数据成功新增" + insertCount + "条。还有" + failCount + "条数据未导入成功。");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
 }

+ 37 - 25
web/src/main/java/com/jpsoft/prices/modules/open/InvoiceApiController.java

@@ -46,7 +46,7 @@ public class InvoiceApiController {
     @ApiImplicitParams({
             @ApiImplicitParam(name="keyId", value="keyId", required=true, paramType="query"),
             @ApiImplicitParam(name="keySecret", value="keySecret", required=true, paramType="query"),
-            @ApiImplicitParam(name="destinationName", value="目的地", required=true, paramType="query"),
+            @ApiImplicitParam(name="destinationId", value="目的地编号", required=true, paramType="query"),
             @ApiImplicitParam(name="shipment", value="发货日期", required=true, paramType="query", dataType="date"),
             @ApiImplicitParam(name="recipient", value="收货人", required=true, paramType="query"),
             @ApiImplicitParam(name="telephone", value="联系电话", required=true, paramType="query", dataType="int"),
@@ -54,35 +54,28 @@ public class InvoiceApiController {
             @ApiImplicitParam(name="address", value="收货地址", required=true, paramType="query"),
             @ApiImplicitParam(name="goodsValue", value="货值", required=true, paramType="query", dataType="int"),
     })
-    public MessageResult addInvoice(String keyId, String keySecret, String destinationName, Date shipment, String recipient, String telephone, String company, String address, Integer goodsValue){
+    public MessageResult addInvoice(String keyId, String keySecret, String destinationId, Date shipment, String recipient, String telephone, String company, String address, Integer goodsValue){
         MessageResult msgResult = new MessageResult<>();
 
         User user = userService.findByUserName(keyId);
         if(user.getPassword().equals(keySecret)) {
-            Destination destination = destinationService.getByName(destinationName);
-            if(destination != null) {
-                Invoice invoice = new Invoice();
-                invoice.setId(UUID.randomUUID().toString());
-                invoice.setDestinationId(destination.getId());
-                invoice.setShipment(shipment);
-                invoice.setRecipient(recipient);
-                invoice.setRecipientTelephone(telephone);
-                invoice.setRecipientEntity(company);
-                invoice.setRecipientAddress(address);
-                invoice.setGoodsValue(goodsValue);
-                invoice.setStatus(false);
-                invoice.setDelFlag(false);
-                invoice.setCreateTime(new Date());
-                invoice.setCreateBy(user.getId());
-                invoiceService.insert(invoice);
+            Invoice invoice = new Invoice();
+            invoice.setId(UUID.randomUUID().toString());
+            invoice.setDestinationId(destinationId);
+            invoice.setShipment(shipment);
+            invoice.setRecipient(recipient);
+            invoice.setRecipientTelephone(telephone);
+            invoice.setRecipientEntity(company);
+            invoice.setRecipientAddress(address);
+            invoice.setGoodsValue(goodsValue);
+            invoice.setStatus(false);
+            invoice.setDelFlag(false);
+            invoice.setCreateTime(new Date());
+            invoice.setCreateBy(user.getId());
+            invoiceService.insert(invoice);
 
-                msgResult.setResult(true);
-                msgResult.setData(invoice.getId());
-            }
-            else{
-                msgResult.setResult(false);
-                msgResult.setMessage("未收录的目的地。");
-            }
+            msgResult.setResult(true);
+            msgResult.setData(invoice.getId());
         }
         else{
             msgResult.setResult(false);
@@ -147,4 +140,23 @@ public class InvoiceApiController {
 
         return msgResult;
     }
+
+    @ApiOperation(value = "目的地")
+    @RequestMapping(value = "query", method = RequestMethod.POST)
+    public MessageResult<List> query() {
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        Map<String, Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("parent_id", "asc"));
+        sortList.add(new Sort("name_", "asc"));
+
+        Page<Destination> page = destinationService.pageSearch(searchParams,1,10000,false,sortList);
+
+        msgResult.setResult(true);
+        msgResult.setData(page.getResult());
+
+        return msgResult;
+    }
 }