Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

hy 6 years ago
parent
commit
5a49458756
17 changed files with 160 additions and 27 deletions
  1. 1 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 1 1
      applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/AddressApi.java
  3. 9 1
      applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/VendorApi.java
  4. 5 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java
  5. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CurrencyMapper.java
  6. 3 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java
  7. 7 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorService.java
  8. 1 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CurrencyServiceImpl.java
  9. 7 1
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  10. 1 1
      applications/document/document-server/src/main/resources/mapper/CurrencyMapper.xml
  11. 6 2
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  12. 10 0
      applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/QuotationRspDTO.java
  13. 1 2
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java
  14. 2 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java
  15. 20 4
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  16. 41 11
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ApCheckServiceImpl.java
  17. 44 0
      base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/DefaultRedisConfig.java

+ 1 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -43,6 +43,7 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_REPORT_NOTCORRECT(79317, "导入数据无效"),
     BIZ_IMPORT_ERROREXCEL(79318, "请导入对应的单据数据"),
     BIZ_ENABLE_B2B(79350, "未启用B2B"),
+    BIZ_TURNPURCHASE_BEFORE(79351, "请先获取UU号(供应商:<u>%s</u>),再进行下单操作"),
 
 
     NO_OPRATIONDATA(79400,"无可操作单据"),

+ 1 - 1
applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/AddressApi.java

@@ -12,7 +12,7 @@ public interface AddressApi {
      * 获取默认地址
      * @return
      */
-    @GetMapping("/getDefault")
+    @GetMapping("/address/getDefault")
     Result<Address> getDefault();
 
 }

+ 9 - 1
applications/document/document-api/src/main/java/com/usoftchina/saas/document/api/VendorApi.java

@@ -28,11 +28,19 @@ public interface VendorApi {
     @GetMapping(value = "/vendor/read", params = "uu")
     Result<VendorDTO> findByUU(@RequestParam("uu") Long uu);
 
+    /**
+     * 通过供应商名称查找供应商信息
+     * @param name
+     * @return
+     */
+    @GetMapping(value = "/vendor/read", params = "name")
+    Result<VendorDTO> findByName(@RequestParam("name") String name);
+
     /**
      * 保存供应商
      * @param vendorListDTO
      * @return
      */
-    @PostMapping("/save")
+    @PostMapping("/vendor/save")
     Result<DocBaseDTO> saveFormData(@RequestBody VendorListDTO vendorListDTO);
 }

+ 5 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorController.java

@@ -54,6 +54,11 @@ public class VendorController {
         return Result.success(vendorService.findByUU(uu));
     }
 
+    @GetMapping(value = "/read", params = "name")
+    public Result<VendorDTO> findByName(@RequestParam("name") String name){
+        return Result.success(vendorService.findByName(name));
+    }
+
     /**
      * 获取 供应商列表数据,包含供应商主表、从表数据
      * @param listReqDTO

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CurrencyMapper.java

@@ -17,5 +17,5 @@ public interface CurrencyMapper extends CommonBaseMapper<Currency> {
 
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId);
 
-    CurrencyDTO getStandard();
+    CurrencyDTO getStandard(@Param("companyId") Long companyId);
 }

+ 3 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java

@@ -34,5 +34,7 @@ public interface VendorMapper extends CommonBaseMapper<Vendor> {
 
     Long selectIdByCode(@Param("code") String code, @Param("companyId") Long companyId);
 
-    VendorDTO selectByUU(@Param("uu") Long uu);
+    VendorDTO selectByUU(@Param("uu") Long uu, @Param("companyId") Long companyId);
+
+    VendorDTO selectByName(@Param("name") String name, @Param("companyId") Long companyId);
 }

+ 7 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorService.java

@@ -104,4 +104,11 @@ public interface VendorService extends CommonBaseService<VendorMapper, Vendor>{
      * @return
      */
     VendorDTO findByUU(Long uu);
+
+    /**
+     * 通过供应商名称查找供应商信息
+     * @param name
+     * @return
+     */
+    VendorDTO findByName(String name);
 }

+ 1 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CurrencyServiceImpl.java

@@ -70,7 +70,7 @@ public class CurrencyServiceImpl extends CommonBaseServiceImpl<CurrencyMapper, C
 
     @Override
     public CurrencyDTO getStandard(){
-        return getMapper().getStandard();
+        return getMapper().getStandard(BaseContextHolder.getCompanyId());
     }
 
     private DocBaseDTO generateMsgObj(Long id){

+ 7 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -107,7 +107,13 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
 
     @Override
     public VendorDTO findByUU(Long uu){
-        VendorDTO vendorDTO = getMapper().selectByUU(uu);
+        VendorDTO vendorDTO = getMapper().selectByUU(uu, BaseContextHolder.getCompanyId());
+        return vendorDTO;
+    }
+
+    @Override
+    public VendorDTO findByName(String name){
+        VendorDTO vendorDTO = getMapper().selectByName(name, BaseContextHolder.getCompanyId());
         return vendorDTO;
     }
 

+ 1 - 1
applications/document/document-server/src/main/resources/mapper/CurrencyMapper.xml

@@ -140,6 +140,6 @@
       SELECT COUNT(*) FROM CURRENCYS WHERE CR_NAME = #{name} AND COMPANYID = #{companyId}
     </select>
     <select id="getStandard" resultType="com.usoftchina.saas.document.dto.CurrencyDTO">
-      select * from CURRENCYS where cr_standard = '1'
+      select * from CURRENCYS where cr_standard = '1' and companyId = #{companyId}
     </select>
 </mapper>

+ 6 - 2
applications/document/document-server/src/main/resources/mapper/VendorMapper.xml

@@ -498,8 +498,12 @@
     <select id="selectIdByCode" resultType="long">
         select ve_id from VENDOR where ve_code=#{code} and companyId=#{companyId}
     </select>
-    <select id="selectByUU" parameterType="java.lang.Long" resultType="com.usoftchina.saas.document.dto.VendorDTO">
-        select * from vendor where ve_uu = #{uu}
+    <select id="selectByUU" resultMap="VendorDTOResultMapper">
+        select * from vendor where ve_uu = #{uu} and companyId = #{companyId}
+    </select>
+
+    <select id="selectByName" resultMap="VendorDTOResultMapper">
+      select * from vendor where ve_name = #{name} and companyId = #{companyId}
     </select>
 </mapper>
 

+ 10 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/QuotationRspDTO.java

@@ -26,8 +26,18 @@ public class QuotationRspDTO implements Serializable {
      */
     private String refusereason;
 
+    private String prodCode;
+
     private List<InquiryReplayDTO> replies;
 
+    public String getProdCode() {
+        return prodCode;
+    }
+
+    public void setProdCode(String prodCode) {
+        this.prodCode = prodCode;
+    }
+
     public Long getId() {
         return id;
     }

+ 1 - 2
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java

@@ -243,7 +243,6 @@ public class PurchaseController {
      */
     @PostMapping("/inquiry/turnPurchase")
     public Result turnPurchase(@RequestBody InquiryTurnPurchaseReqDTO inquiryTurnPurchaseReqDTO){
-        purchaseService.turnPurchase(inquiryTurnPurchaseReqDTO);
-        return Result.success();
+        return Result.success(purchaseService.turnPurchase(inquiryTurnPurchaseReqDTO));
     }
 }

+ 2 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java

@@ -177,6 +177,7 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
     /**
      * 询价转采购
      * @param inquiryTurnPurchaseReqDTO
+     * @return
      */
-    void turnPurchase(InquiryTurnPurchaseReqDTO inquiryTurnPurchaseReqDTO);
+    DocBaseDTO turnPurchase(InquiryTurnPurchaseReqDTO inquiryTurnPurchaseReqDTO);
 }

+ 20 - 4
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -301,7 +301,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
      * @param turnPurchaseReqDTO
      */
     @Override
-    public void turnPurchase(InquiryTurnPurchaseReqDTO turnPurchaseReqDTO){
+    public DocBaseDTO turnPurchase(InquiryTurnPurchaseReqDTO turnPurchaseReqDTO){
         CompanyDTO companyDTO = companyApi.getCompanyById(BaseContextHolder.getCompanyId()).getData();
         Long enUU = companyDTO.getUu();
         Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
@@ -311,14 +311,26 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         }
         //通过供应商UU号检查供应商是否已存在
         VendorDTO vendorDTO = vendorApi.findByUU(turnPurchaseReqDTO.getVendUU()).getData();
+        if (vendorDTO == null) {
+            vendorDTO = vendorApi.findByName(turnPurchaseReqDTO.getVendName()).getData();
+            if (vendorDTO != null) {
+                throw new BizException(BizExceptionCode.BIZ_TURNPURCHASE_BEFORE.getCode(),
+                        String.format(BizExceptionCode.BIZ_TURNPURCHASE_BEFORE.getMessage(), vendorDTO.getVe_name()));
+            }
+        }
         DocBaseDTO docBaseDTO = null;
         if (vendorDTO == null){
             //自动创建供应商资料
             docBaseDTO = createVendor(turnPurchaseReqDTO);
         }
+        if (docBaseDTO == null) {
+            docBaseDTO = new DocBaseDTO();
+            docBaseDTO.setId(vendorDTO.getId());
+            docBaseDTO.setCode(vendorDTO.getVe_code());
+        }
         //构造采购单数据
         PurchaseFormDTO purchaseFormDTO = createPurcahse(docBaseDTO, turnPurchaseReqDTO);
-        saveFormData(purchaseFormDTO);
+        return saveFormData(purchaseFormDTO);
     }
 
     /**
@@ -328,7 +340,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
      */
     private DocBaseDTO createVendor(InquiryTurnPurchaseReqDTO turnPurchaseReqDTO) {
         Vendor vendor = new Vendor();
-        String vendorCode = maxnumberService.getMaxnumber(BillCodeSeq.VENDOR.getCaller(), false).getData();
+        String vendorCode = maxnumberService.getMaxnumber(BillCodeSeq.VENDOR.getCaller(), true).getData();
+        vendor.setId(0L);
         vendor.setVe_code(vendorCode);
         vendor.setVe_name(turnPurchaseReqDTO.getVendName());
         vendor.setVe_uu(String.valueOf(turnPurchaseReqDTO.getVendUU()));
@@ -336,6 +349,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         CurrencyDTO currencyDTO = currencyApi.getStandard().getData();
         vendor.setVe_currency(currencyDTO.getCr_name());
         vendor.setVe_taxrate(16D);
+        vendor.setVe_begindate(new Date());
         vendor.setCompanyId(BaseContextHolder.getCompanyId());
         vendor.setCreatorName(BaseContextHolder.getUserName());
         vendor.setCreatorId(BaseContextHolder.getUserId());
@@ -367,8 +381,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         PurchaseFormDTO purchaseFormDTO = new PurchaseFormDTO();
         //采购单主表
         PurchaseDTO purchaseDTO = new PurchaseDTO();
-        String code = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASE.getCaller(), false).getData();
+        String code = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASE.getCaller(), true).getData();
         purchaseDTO.setPu_code(code);
+        purchaseDTO.setId(0L);
         purchaseDTO.setPu_vendcode(docBaseDTO.getCode());
         purchaseDTO.setPu_vendid(new BigDecimal(docBaseDTO.getId()).intValue());
         purchaseDTO.setPu_vendname(turnPurchaseReqDTO.getVendName());
@@ -1043,6 +1058,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
                     QuotationRspDTO quotationRspDTO = new QuotationRspDTO();
                     quotationRspDTO.setId(publicInquiryItem.getId());
                     quotationRspDTO.setVendName(publicInquiryItem.getVendName());
+                    quotationRspDTO.setProdCode(purcInquiryItemInfo.getProdCode());
                     quotationRspDTO.setVendUU(publicInquiryItem.getVendUU());
                     quotationRspDTO.setTaxRate(new BigDecimal(publicInquiryItem.getTaxrate()).doubleValue());
                     quotationRspDTO.setLeadTime(publicInquiryItem.getLeadtime());

+ 41 - 11
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ApCheckServiceImpl.java

@@ -18,14 +18,13 @@ import com.usoftchina.saas.utils.ObjectUtils;
 import com.usoftchina.saas.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.HttpServerErrorException;
 
 import java.net.URLEncoder;
 import java.util.*;
-import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
 /**
@@ -87,7 +86,11 @@ public class ApCheckServiceImpl implements ApCheckService {
                 response.put("content", result);
                 response.put("totalElement", result.size());
             }
-        } catch (Exception e) {
+        } catch (HttpServerErrorException e) {
+            HttpServerErrorException httpServerErrorException = (HttpServerErrorException) e;
+            String responseText = httpServerErrorException.getResponseBodyAsString();
+            throw new BizException(80000, responseText);
+        } catch (Exception e){
             throw new BizException(80000, e.getMessage());
         }
         return response;
@@ -132,7 +135,13 @@ public class ApCheckServiceImpl implements ApCheckService {
             result.put("items", apCheckProdIO.getDetails().stream().filter(apCheckProdIODetail -> currency.equals(apCheckProdIODetail.getCurrency())).collect(Collectors.toList()));
             result.put("data", apCheckProdIO);
         } catch (Exception e) {
-            throw new BizException(80000, e.getMessage());
+            if (e instanceof HttpServerErrorException){
+                HttpServerErrorException httpServerErrorException = (HttpServerErrorException) e;
+                String responseText = httpServerErrorException.getResponseBodyAsString();
+                throw new BizException(80000, responseText);
+            }else {
+                throw new BizException(80000, e.getMessage());
+            }
         }
         return result;
     }
@@ -190,7 +199,7 @@ public class ApCheckServiceImpl implements ApCheckService {
     public ModelMap operationSave(SaveOperationData saveOperationData) {
         Result<AccountDTO> accountResult = accountApi.getAccountById(BaseContextHolder.getUserId());
         Result<CompanyDTO> companyResult = companyApi.getCompanyById(BaseContextHolder.getCompanyId());
-        ModelMap result = null;
+        ResponseEntity<String> responseEntity = null;
         if (accountResult.isSuccess() && companyResult.isSuccess()) {
             Long userUU = accountResult.getData().getUu();
             Long enUU = companyResult.getData().getUu();
@@ -202,12 +211,21 @@ public class ApCheckServiceImpl implements ApCheckService {
             //String url = "http://10.1.51.139:8889" + SAVEAPCHECKURL;
             saveOperationData.setEnUu(enUU);
             try {
-                result = AccessUtils.postForObject(url, account, ModelMap.class, URLEncoder.encode(JsonUtils.toJsonString(saveOperationData), "UTF-8"));
+                responseEntity = AccessUtils.postForEntity(url, account, URLEncoder.encode(JsonUtils.toJsonString(saveOperationData), "UTF-8"));
             } catch (Exception e){
-                throw new BizException(80000, e.getMessage());
+                if (e instanceof HttpServerErrorException){
+                    HttpServerErrorException httpServerErrorException = (HttpServerErrorException) e;
+                    String responseText = httpServerErrorException.getResponseBodyAsString();
+                    if (responseText.startsWith("无法对账!(该客户未对您启用B2B对账")) {
+                        responseText = "无法对账!该客户未对您启用B2B对账,请让客户在“U企云服-UU设置”里获取UU后再进行对账。";
+                    }
+                    throw new BizException(80000, responseText);
+                }else {
+                    throw new BizException(80000, e.getMessage());
+                }
             }
         }
-        return result;
+        return null;
     }
 
     @Override
@@ -227,7 +245,13 @@ public class ApCheckServiceImpl implements ApCheckService {
             response.remove("items");
             result.put("main", response);
         } catch (Exception e){
-            throw new BizException(80000, e.getMessage());
+            if (e instanceof HttpServerErrorException){
+                HttpServerErrorException httpServerErrorException = (HttpServerErrorException) e;
+                String responseText = httpServerErrorException.getResponseBodyAsString();
+                throw new BizException(80000, responseText);
+            }else {
+                throw new BizException(80000, e.getMessage());
+            }
         }
         return result;
     }
@@ -249,7 +273,13 @@ public class ApCheckServiceImpl implements ApCheckService {
             }
             result = AccessUtils.getForObject(url, account, SPage.class);
         } catch (Exception e) {
-            throw new BizException(80000, e.getMessage());
+            if (e instanceof HttpServerErrorException){
+                HttpServerErrorException httpServerErrorException = (HttpServerErrorException) e;
+                String responseText = httpServerErrorException.getResponseBodyAsString();
+                throw new BizException(80000, responseText);
+            }else {
+                throw new BizException(80000, e.getMessage());
+            }
         }
         return result;
     }

+ 44 - 0
base-servers/gateway-server/src/main/java/com/usoftchina/saas/gateway/config/DefaultRedisConfig.java

@@ -0,0 +1,44 @@
+package com.usoftchina.saas.gateway.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * @author: guq
+ * @create: 2018-12-27 10:32
+ **/
+@Configuration
+@ConditionalOnClass({RedisTemplate.class})
+public class DefaultRedisConfig {
+
+    @Bean
+    @SuppressWarnings("all")
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+        template.setConnectionFactory(factory);
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // key采用String的序列化方式
+        template.setKeySerializer(stringRedisSerializer);
+        // hash的key也采用String的序列化方式
+        template.setHashKeySerializer(stringRedisSerializer);
+        // value序列化方式采用jackson
+        template.setValueSerializer(jackson2JsonRedisSerializer);
+        // hash的value序列化方式采用jackson
+        template.setHashValueSerializer(jackson2JsonRedisSerializer);
+        template.afterPropertiesSet();
+        return template;
+    }
+}