jzkai 2 rokov pred
rodič
commit
b8923abb68

+ 1 - 0
common/src/main/java/com/jpsoft/prices/modules/base/dao/InvoiceInfoDAO.java

@@ -15,4 +15,5 @@ public interface InvoiceInfoDAO {
 	int delete(String id);
 	List<InvoiceInfo> list();
 	List<InvoiceInfo> search(Map<String,Object> searchParams,List<Sort> sortList);
+	List<InvoiceInfo> findByInvoice(String invoiceId);
 }

+ 33 - 0
common/src/main/java/com/jpsoft/prices/modules/base/dto/InvoiceQuotesDTO.java

@@ -0,0 +1,33 @@
+package com.jpsoft.prices.modules.base.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+  描述:base_invoice的实体类
+ */
+@Data
+public class InvoiceQuotesDTO {
+    @ApiModelProperty(value = "物流公司")
+    private String companyName;
+    @ApiModelProperty(value = "包装件数")
+    private Integer numbers;
+    @ApiModelProperty(value = "运输费")
+    private BigDecimal transportFee;
+    @ApiModelProperty(value = "送货费")
+    private BigDecimal deliveryFee;
+    @ApiModelProperty(value = "进仓费")
+    private BigDecimal storageFee;
+    @ApiModelProperty(value = "保费")
+    private BigDecimal insureFee;
+    @ApiModelProperty(value = "税费")
+    private BigDecimal taxFee;
+    @ApiModelProperty(value = "合计")
+    private BigDecimal totalFee;
+}

+ 1 - 0
common/src/main/java/com/jpsoft/prices/modules/base/entity/Invoice.java

@@ -20,6 +20,7 @@ public class Invoice {
     private String id;
         @ApiModelProperty(value = "目的地编号")
     private String destinationId;
+    private String destinationName;
         @DateTimeFormat(pattern="yyyy-MM-dd")
     @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
 	    @ApiModelProperty(value = "发货日期")

+ 1 - 0
common/src/main/java/com/jpsoft/prices/modules/base/service/InvoiceInfoService.java

@@ -14,4 +14,5 @@ public interface InvoiceInfoService {
 	int delete(String id);
 	List<InvoiceInfo> list();
 	Page<InvoiceInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
+	List<InvoiceInfo> findByInvoice(String invoiceId);
 }

+ 6 - 0
common/src/main/java/com/jpsoft/prices/modules/base/service/impl/InvoiceInfoServiceImpl.java

@@ -67,4 +67,10 @@ public class InvoiceInfoServiceImpl implements InvoiceInfoService {
         
         return page;
 	}
+
+	@Override
+	public List<InvoiceInfo> findByInvoice(String invoiceId) {
+		// TODO Auto-generated method stub
+		return invoiceInfoDAO.findByInvoice(invoiceId);
+	}
 }

+ 11 - 8
common/src/main/resources/mapper/base/Invoice.xml

@@ -18,6 +18,8 @@
 		<result property="createBy" column="create_by" />
 		<result property="updateTime" column="update_time" />
 		<result property="updateBy" column="update_by" />
+
+		<result property="destinationName" column="destination_name" />
 	</resultMap>
 	<insert id="insert" parameterType="com.jpsoft.prices.modules.base.entity.Invoice">
 	<!--
@@ -106,27 +108,28 @@
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="InvoiceMap">
 		<![CDATA[
-			select * from base_invoice
+			SELECT a.*,b.name_ AS destination_name FROM base_invoice a
+			LEFT JOIN base_destination b ON a.destination_id = b.id_
 		]]>
 		<where>
-			del_flag = 0
+			a.del_flag = 0
 			<if test="searchParams.shipment != null">
-				and shipment_ = #{searchParams.shipment}
+				and a.shipment_ = #{searchParams.shipment}
 			</if>
 			<if test="searchParams.recipient != null">
-				and recipient_ like #{searchParams.recipient}
+				and a.recipient_ like #{searchParams.recipient}
 			</if>
 			<if test="searchParams.recipientTelephone != null">
-				and recipient_telephone like #{searchParams.recipientTelephone}
+				and a.recipient_telephone like #{searchParams.recipientTelephone}
 			</if>
 			<if test="searchParams.recipientEntity != null">
-				and recipient_entity like #{searchParams.recipientEntity}
+				and a.recipient_entity like #{searchParams.recipientEntity}
 			</if>
 			<if test="searchParams.recipientAddress != null">
-				and recipient_address like #{searchParams.recipientAddress}
+				and a.recipient_address like #{searchParams.recipientAddress}
 			</if>
 			<if test="searchParams.status != null">
-				and status_ = #{searchParams.status}
+				and a.status_ = #{searchParams.status}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 5 - 0
common/src/main/resources/mapper/base/InvoiceInfo.xml

@@ -129,4 +129,9 @@ id_,invoice_id,order_number,name_,type_,bar_code,box_length,box_width,box_hight,
 	        ${sort.name} ${sort.order}
 	 	</foreach>
 	</select>
+	<select id="findByInvoice" parameterType="string" resultMap="InvoiceInfoMap">
+		select * from base_invoice_info
+		where del_flag = 0
+		and invoice_id = #{invoiceId}
+	</select>
 </mapper>

+ 1 - 1
web/src/main/java/com/jpsoft/prices/modules/base/controller/CompanyController.java

@@ -231,7 +231,7 @@ public class CompanyController {
         }
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("name_","asc"));
 
         Page<Company> page = companyService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
         for(Company company : page.getResult()){

+ 81 - 0
web/src/main/java/com/jpsoft/prices/modules/base/controller/InvoiceQuotesController.java

@@ -0,0 +1,81 @@
+package com.jpsoft.prices.modules.base.controller;
+
+import com.github.pagehelper.Page;
+import com.jpsoft.prices.modules.base.dto.InvoiceQuotesDTO;
+import com.jpsoft.prices.modules.base.entity.Company;
+import com.jpsoft.prices.modules.base.entity.Invoice;
+import com.jpsoft.prices.modules.base.entity.InvoiceInfo;
+import com.jpsoft.prices.modules.base.service.CompanyService;
+import com.jpsoft.prices.modules.base.service.InvoiceInfoService;
+import com.jpsoft.prices.modules.base.service.InvoiceService;
+import com.jpsoft.prices.modules.common.dto.MessageResult;
+import com.jpsoft.prices.modules.common.dto.Sort;
+import com.jpsoft.prices.modules.common.utils.PojoUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+@RestController
+@RequestMapping("/base/invoiceQuotes")
+@Api(description = "invoiceQuotes")
+public class InvoiceQuotesController {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private CompanyService companyService;
+    @Autowired
+    private InvoiceService invoiceService;
+    @Autowired
+    private InvoiceInfoService invoiceInfoService;
+
+    @ApiOperation(value="基于物流公司的报价单比对")
+    @RequestMapping(value = "quotesList",method = RequestMethod.POST)
+    public MessageResult<List> quotesList(String invoiceId){
+        MessageResult<List> msgResult = new MessageResult<>();
+
+        try {
+            Invoice invoice = invoiceService.get(invoiceId);
+
+            Map<String, Object> searchParams = new HashMap<>();
+            if (StringUtils.isNotEmpty(invoice.getDestinationId())) {
+                searchParams.put("destinationId", "%" + invoice.getDestinationId() + "%");
+            }
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("name_", "asc"));
+
+            List<InvoiceQuotesDTO> list = new ArrayList<>();
+            Page<Company> page = companyService.pageSearch(searchParams, 1, 100, false, sortList);
+            for (Company company : page.getResult()) {
+                List<InvoiceInfo> infoList = invoiceInfoService.findByInvoice(invoiceId);
+
+                InvoiceQuotesDTO dto = new InvoiceQuotesDTO();
+                dto.setCompanyName(company.getName());
+                dto.setNumbers(infoList.size());
+                dto.setTransportFee(new BigDecimal(0));
+                dto.setDeliveryFee(new BigDecimal(0));
+                dto.setStorageFee(new BigDecimal(0));
+                dto.setInsureFee(new BigDecimal(0));
+                dto.setTaxFee(new BigDecimal(0));
+                dto.setTotalFee(new BigDecimal(0));
+                list.add(dto);
+            }
+
+            msgResult.setResult(true);
+            msgResult.setData(list);
+        }
+        catch (Exception ex){
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+}