Bläddra i källkod

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

hy 7 år sedan
förälder
incheckning
0885ff9c61
67 ändrade filer med 1527 tillägg och 920 borttagningar
  1. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BomMapper.java
  2. 5 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  3. 4 44
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/FundinouttypeServiceImpl.java
  5. 4 12
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  6. 27 5
      applications/document/document-server/src/main/resources/mapper/BomMapper.xml
  7. 1 1
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationdetDTO.java
  8. 1 1
      applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationdetailDTO.java
  9. 4 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/VerificationController.java
  10. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java
  11. 9 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Subledger.java
  12. 44 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendorAdd.java
  13. 3 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Verificationdet.java
  14. 3 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Verificationdetail.java
  15. 3 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/VerificationService.java
  16. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  17. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  18. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  19. 2 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  20. 97 113
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  21. 15 0
      applications/money/money-server/src/main/resources/mapper/SubledgerMapper.xml
  22. 2 3
      applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml
  23. 1 1
      applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml
  24. 4 1
      applications/money/money-server/src/main/resources/mapper/VerificationdetMapper.xml
  25. 5 2
      applications/money/money-server/src/main/resources/mapper/VerificationdetailMapper.xml
  26. 1 1
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdIODetailDTO.java
  27. 2 5
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/controller/ProdInOutReportController.java
  28. 4 0
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java
  29. 4 3
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/ProdInOutReportService.java
  30. 47 26
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutReportServiceImpl.java
  31. 25 0
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  32. 23 0
      base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/api/AccountCacheTest.java
  33. 18 0
      base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/service/AccountServiceTest.java
  34. 1 0
      base-servers/auth/pom.xml
  35. 32 0
      base-servers/auth/sso-api/pom.xml
  36. 51 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java
  37. 8 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java
  38. 85 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoResult.java
  39. 251 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUser.java
  40. 191 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUserSpace.java
  41. 20 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUserSpaceList.java
  42. 18 0
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoTest.java
  43. 47 0
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java
  44. 3 0
      base-servers/auth/sso-api/src/test/resources/application.yml
  45. 4 0
      framework/core/pom.xml
  46. 7 0
      framework/core/src/main/java/com/usoftchina/saas/cache/RedisHashCache.java
  47. 55 0
      framework/core/src/main/java/com/usoftchina/saas/utils/DateUtils.java
  48. 1 1
      frontend/saas-portal-web/config/index.js
  49. 1 8
      frontend/saas-portal-web/src/App.vue
  50. 8 30
      frontend/saas-portal-web/src/components/conenter/addgongsi.vue
  51. 36 139
      frontend/saas-portal-web/src/components/conenter/company.vue
  52. 1 5
      frontend/saas-portal-web/src/components/conenter/enterprise.vue
  53. 42 374
      frontend/saas-portal-web/src/components/conenter/home.vue
  54. 7 38
      frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue
  55. 1 0
      frontend/saas-portal-web/src/main.js
  56. 3 0
      frontend/saas-portal-web/static/css/gongsi.css
  57. 0 7
      frontend/saas-portal-web/static/data.json
  58. 0 31
      frontend/saas-portal-web/static/js/mains.js
  59. 233 20
      frontend/saas-web/app/view/money/report/AccountDetails.js
  60. 27 21
      frontend/saas-web/app/view/money/report/AccountDetailsController.js
  61. 1 1
      frontend/saas-web/app/view/money/report/AccountDetailsMode.js
  62. 13 4
      frontend/saas-web/app/view/money/verification/FormPanel.js
  63. 0 1
      frontend/saas-web/app/view/money/verification/FormPanelController.js
  64. 6 1
      frontend/saas-web/app/view/money/verification/QueryPanel.js
  65. 2 2
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js
  66. 2 3
      frontend/saas-web/app/view/stock/stockamount/DataList.js
  67. 0 5
      frontend/saas-web/resources/json/navigation.json

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BomMapper.java

@@ -28,4 +28,6 @@ public interface BomMapper extends CommonBaseMapper<Bom> {
     List<Bom> getListData(@Param("condition") String condition, @Param("companyId") Long companyId);
 
     int getCountFromMake(Long id);
+
+    void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long id);
 }

+ 5 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java

@@ -44,6 +44,8 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
     public DocBaseDTO saveData(BomList bomList) {
         Long id = bomList.getMain().getId();
         Long companyId = BaseContextHolder.getCompanyId();
+        Long userId = BaseContextHolder.getUserId();
+        String userName = BaseContextHolder.getUserName();
         Bom bom = bomList.getMain();
         List<BomDetail> bomDetailList = bomList.getItems();
         DocBaseDTO docBaseDTO = null;
@@ -56,6 +58,9 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
                 bom.setCompanyId(companyId);
                 //保存BOM
                 getMapper().insertSelective(bom);
+                id = bom.getId();
+                //录入人
+                getMapper().updateCreator(userId, userName, id);
                 if (bomDetailList.size() > 0) {
                     //赋值BD_BOMID
                     for (BomDetail bomDetail : bomDetailList) {

+ 4 - 44
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -23,6 +23,7 @@ import com.usoftchina.saas.document.service.CustomerService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.BeanMapper;
+import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -266,29 +267,21 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         //插入中间表
         Double amount = (customer.getCu_beginaramount() == null ? new Double(0) : customer.getCu_beginaramount())
                 - (customer.getCu_beginprerecamount() == null ? new Double(0) : customer.getCu_beginprerecamount());
-        if (amount != new Double(0)){
             Subledger subledger = new Subledger();
             subledger.setSl_code("期初余额");
             subledger.setSl_kind("期初余额");
             subledger.setSl_vendid(0);
             subledger.setSl_custid(Math.toIntExact(customer.getId()));
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            String dates = date2String(customer.getCu_begindate(), "yyyy-MM");
-            dates = dates + "-01";
-            Date date = null;
-            try {
-                date = string2Date(dates, "yyyy-MM-dd");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            subledger.setSl_date(date);
+            subledger.setSl_date(DateUtils.getFirstDay(customer.getCu_begindate()));
+            subledger.setSl_ym(DateUtils.getYm(customer.getCu_begindate()));
             if (amount > new Double(0)){
                 subledger.setSl_amount(amount);
             }else {
                 subledger.setSl_preamount(amount);
             }
             subledger.setSl_orderamount(Math.abs(amount));
-            subledger.setSl_namount(amount);
+            subledger.setSl_namount(Math.abs(amount));
 
             Subledger subledger1 = subledgerMapper.selectByKindCodeCustid("期初余额","期初余额",
                     Math.toIntExact(customer.getId()));
@@ -297,7 +290,6 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             }else {
                 subledgerMapper.updateByPrimaryKeySelective(subledger);
             }
-        }
 
         baseDTO = getBaseDTOById(cu_id);
         //日志记录
@@ -503,38 +495,6 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         return cu_code;
     }
 
-    /**
-     * String转Date类型
-     *
-     * @param dateStr
-     *            时间字符串
-     * @return Date类型时间
-     * @throws Exception
-     *             异常
-     */
-    public static Date string2Date(String dateStr, String format) throws Exception {
-        SimpleDateFormat sdf = new SimpleDateFormat(format);
-        if (dateStr != null) {
-            return sdf.parse(dateStr);
-        }else {
-            return null;
-        }
-    }
 
-    /**
-     * Date转String
-     *
-     * @param date
-     *            Date类型时间
-     * @return 时间字符串
-     */
-    public static String date2String(Date date, String format) {
-        SimpleDateFormat sdf = new SimpleDateFormat(format);
-        if (date != null) {
-            return sdf.format(date);
-        }else {
-            return null;
-        }
-    }
 
 }

+ 2 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/FundinouttypeServiceImpl.java

@@ -13,6 +13,7 @@ import com.usoftchina.saas.document.service.FundinouttypeService;
 import com.usoftchina.saas.exception.BizException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
 import java.util.Date;
@@ -66,6 +67,7 @@ public class FundinouttypeServiceImpl extends CommonBaseServiceImpl<Fundinouttyp
      * @param id
      * @return
      */
+    @Transactional
     @Override
     public boolean removeByPrimaryKey(Long id){
         Fundinouttype fundinouttype = getMapper().selectByPrimaryKey(id);

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

@@ -26,6 +26,7 @@ import com.usoftchina.saas.document.mapper.VendorcontactMapper;
 import com.usoftchina.saas.document.service.VendorService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -220,29 +221,21 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         //插入中间表
         Double amount = (main.getVe_beginapamount() == null ? new Double(0) : main.getVe_beginapamount())
                 - (main.getVe_beginprepayamount() == null ? new Double(0) : main.getVe_beginprepayamount());
-        if (amount != new Double(0)){
             Subledger subledger = new Subledger();
             subledger.setSl_code("期初余额");
             subledger.setSl_kind("期初余额");
             subledger.setSl_vendid(Math.toIntExact(main.getId()));
             subledger.setSl_custid(0);
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            String dates = date2String(main.getVe_begindate(), "yyyy-MM");
-            dates = dates + "-01";
-            Date date = null;
-            try {
-                date = string2Date(dates, "yyyy-MM-dd");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            subledger.setSl_date(date);
+            subledger.setSl_date(DateUtils.getFirstDay(main.getVe_begindate()));
+            subledger.setSl_ym(DateUtils.getYm(main.getVe_begindate()));
             if (amount > new Double(0)){
                 subledger.setSl_amount(amount);
             }else {
                 subledger.setSl_preamount(amount);
             }
             subledger.setSl_orderamount(Math.abs(amount));
-            subledger.setSl_namount(amount);
+            subledger.setSl_namount(Math.abs(amount));
 
             Subledger subledger1 = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
                     Math.toIntExact(main.getId()));
@@ -251,7 +244,6 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             }else {
                 subledgerMapper.updateByPrimaryKeySelective(subledger);
             }
-        }
 
         return generateMsgObj(main.getId(), code);
     }

+ 27 - 5
applications/document/document-server/src/main/resources/mapper/BomMapper.xml

@@ -14,7 +14,14 @@
     <result column="bo_recorddate" property="bo_recorddate" jdbcType="TIMESTAMP" />
     <result column="companyId" property="companyId" jdbcType="INTEGER" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
     <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+
+
+
     <result column="bo_text1" property="bo_text1" jdbcType="VARCHAR" />
     <result column="bo_text2" property="bo_text2" jdbcType="VARCHAR" />
     <result column="bo_text3" property="bo_text3" jdbcType="VARCHAR" />
@@ -27,8 +34,8 @@
   </resultMap>
   <sql id="Base_Column_List" >
     bo_id, bo_motherid, bo_mothercode, bo_mothername, bo_version, bo_status, bo_statuscode, 
-    bo_recorderid, bo_recorder, bo_recorddate, companyId, updaterId, updateTime, bo_text1, 
-    bo_text2, bo_text3, bo_text4, bo_text5
+    bo_recorderid, bo_recorder, bo_recorddate, companyId, updaterId,updaterName,updateTime, bo_text1,
+    bo_text2, bo_text3, bo_text4, bo_text5,creatorName,creatorId,createTime
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
     select 
@@ -116,6 +123,12 @@
       <if test="bo_text5 != null" >
         bo_text5,
       </if>
+      <if test="bo_text5 != null" >
+        bo_text5,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="bo_motherid != null" >
@@ -169,6 +182,9 @@
       <if test="bo_text5 != null" >
         #{bo_text5,jdbcType=VARCHAR},
       </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP}
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.document.entities.Bom" >
@@ -273,7 +289,13 @@
     </where>
     ORDER BY BO_ID DESC
   </select>
-    <select id="getCountFromMake" parameterType="java.lang.Long" resultType="int">
-        SELECT COUNT(*) FROM MAKE WHERE MA_PRODID = #{id}
-    </select>
+  <select id="getCountFromMake" parameterType="java.lang.Long" resultType="int">
+      SELECT COUNT(*) FROM MAKE WHERE MA_PRODID = #{id}
+  </select>
+
+  <update id="updateCreator">
+    update bom set creatorId = #{userId} , creatorName=#{userName} where bo_id=#{id}
+  </update>
+
+
 </mapper>

+ 1 - 1
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationdetDTO.java

@@ -23,7 +23,7 @@ public class VerificationdetDTO  extends  CommonBaseDTO implements Serializable
 
     private Integer vd_ym;
 
-    private Integer vd_slid;
+    private Long vd_slid;
 
     private String vd_slcode;
 

+ 1 - 1
applications/money/money-dto/src/main/java/com/usoftchina/saas/money/dto/VerificationdetailDTO.java

@@ -23,7 +23,7 @@ public class VerificationdetailDTO extends  CommonBaseDTO implements Serializabl
 
     private Integer vcd_ym;
 
-    private Integer vcd_slid;
+    private Long vcd_slid;
 
     private String vcd_slcode;
 

+ 4 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/controller/VerificationController.java

@@ -3,6 +3,7 @@ package com.usoftchina.saas.money.controller;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.money.dto.VerificationFormDTO;
@@ -59,7 +60,7 @@ public class VerificationController {
      */
     @RequestMapping("/save")
     public Result<DocSavedDTO> saveFormData(@RequestBody VerificationFormDTO form) {
-        DocSavedDTO base = verificationService.saveFormData(form);
+        DocBaseDTO base = verificationService.saveFormData(form);
         return Result.success(base);
     }
 
@@ -98,11 +99,11 @@ public class VerificationController {
 
     @RequestMapping("/audit")
     public Result audit(@RequestBody VerificationFormDTO formDTO) {
-        DocSavedDTO audit = verificationService.audit(formDTO);
+        DocBaseDTO audit = verificationService.audit(formDTO);
         return Result.success(audit);
     }
 
-    @RequestMapping("/resAudit/{id}")
+    @RequestMapping("/unAudit/{id}")
     public Result resAudit(@PathVariable("id") Long id) {
         verificationService.resAudit(id);
         return Result.success();

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/SubledgerMapper.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.money.mapper;
 
 import com.usoftchina.saas.money.po.Recbalance;
 import com.usoftchina.saas.money.po.Subledger;
+import com.usoftchina.saas.money.po.VendorAdd;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.PostMapping;
 
@@ -26,4 +27,5 @@ public interface SubledgerMapper {
     int updateByPrimaryKey(Subledger record);
 
     List<Subledger> selectSubledgerBycondition(@Param("con") String con, @Param("companyId") Long companyId);
+    VendorAdd selectAdd(@Param("sl_vendid") Integer sl_vendid, @Param("sl_ym") Integer sl_ym);
 }

+ 9 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Subledger.java

@@ -7,6 +7,7 @@ import java.util.Date;
 
 //中间表
 public class Subledger extends CommonBaseEntity implements Serializable {
+    private Long sl_id;
 
     private String sl_code;
 
@@ -138,4 +139,12 @@ public class Subledger extends CommonBaseEntity implements Serializable {
     public void setSl_ym(Integer sl_ym) {
         this.sl_ym = sl_ym;
     }
+
+    public Long getSl_id() {
+        return sl_id;
+    }
+
+    public void setSl_id(Long sl_id) {
+        this.sl_id = sl_id;
+    }
 }

+ 44 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/VendorAdd.java

@@ -0,0 +1,44 @@
+package com.usoftchina.saas.money.po;
+
+/**
+ * @author heqw
+ * @date 2018/11/23 11:44
+ **/
+public class VendorAdd {
+    private Double beginamount;
+    private Double nowamount;
+    private Double nowpay;
+    private Double nowbalance;
+
+    public Double getBeginamount() {
+        return beginamount;
+    }
+
+    public void setBeginamount(Double beginamount) {
+        this.beginamount = beginamount;
+    }
+
+    public Double getNowamount() {
+        return nowamount;
+    }
+
+    public void setNowamount(Double nowamount) {
+        this.nowamount = nowamount;
+    }
+
+    public Double getNowpay() {
+        return nowpay;
+    }
+
+    public void setNowpay(Double nowpay) {
+        this.nowpay = nowpay;
+    }
+
+    public Double getNowbalance() {
+        return nowbalance;
+    }
+
+    public void setNowbalance(Double nowbalance) {
+        this.nowbalance = nowbalance;
+    }
+}

+ 3 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Verificationdet.java

@@ -20,7 +20,7 @@ public class Verificationdet extends CommonBaseEntity implements Serializable {
 
     private Integer vd_ym;
 
-    private Integer vd_slid;
+    private Long vd_slid;
 
     private String vd_slcode;
 
@@ -80,11 +80,11 @@ public class Verificationdet extends CommonBaseEntity implements Serializable {
         this.vd_ym = vd_ym;
     }
 
-    public Integer getVd_slid() {
+    public Long getVd_slid() {
         return vd_slid;
     }
 
-    public void setVd_slid(Integer vd_slid) {
+    public void setVd_slid(Long vd_slid) {
         this.vd_slid = vd_slid;
     }
 

+ 3 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Verificationdetail.java

@@ -20,7 +20,7 @@ public class Verificationdetail extends CommonBaseEntity implements Serializable
 
     private Integer vcd_ym;
 
-    private Integer vcd_slid;
+    private Long vcd_slid;
 
     private String vcd_slcode;
 
@@ -80,11 +80,11 @@ public class Verificationdetail extends CommonBaseEntity implements Serializable
         this.vcd_ym = vcd_ym;
     }
 
-    public Integer getVcd_slid() {
+    public Long getVcd_slid() {
         return vcd_slid;
     }
 
-    public void setVcd_slid(Integer vcd_slid) {
+    public void setVcd_slid(Long vcd_slid) {
         this.vcd_slid = vcd_slid;
     }
 

+ 3 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/VerificationService.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.money.service;
 
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.money.dto.VerificationFormDTO;
@@ -37,7 +38,7 @@ public interface VerificationService {
      * @param formdata
      * @return
      */
-    DocSavedDTO saveFormData(VerificationFormDTO formdata);
+    DocBaseDTO saveFormData(VerificationFormDTO formdata);
 
     /**
      * 删除核销单
@@ -62,7 +63,7 @@ public interface VerificationService {
      * @param formData
      * @return
      */
-    DocSavedDTO audit(VerificationFormDTO formData);
+    DocBaseDTO audit(VerificationFormDTO formData);
 
     /**
      * 反审核核销单

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java

@@ -18,6 +18,7 @@ import com.usoftchina.saas.money.mapper.*;
 import com.usoftchina.saas.money.po.*;
 import com.usoftchina.saas.money.service.OthreceiptsService;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -172,6 +173,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
             subledger.setSl_custid(othreceipts.getOr_custid());
             subledger.setSl_vendid(0);
             subledger.setSl_date(othreceipts.getOr_date());
+            subledger.setSl_ym(DateUtils.getYm(othreceipts.getOr_date()));
             subledger.setSl_amount(or_amount);
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
             subledgerMapper.insertSelective(subledger);

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -17,6 +17,7 @@ import com.usoftchina.saas.money.mapper.*;
 import com.usoftchina.saas.money.po.*;
 import com.usoftchina.saas.money.service.OthspendingsService;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -209,6 +210,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
             subledger.setSl_custid(0);
             subledger.setSl_vendid(othspendings.getOs_vendid());
             subledger.setSl_date(othspendings.getOs_date());
+            subledger.setSl_ym(DateUtils.getYm(othspendings.getOs_date()));
             subledger.setSl_amount(bk_amount);
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
             subledgerMapper.insertSelective(subledger);

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -18,6 +18,7 @@ import com.usoftchina.saas.money.mapper.*;
 import com.usoftchina.saas.money.po.*;
 import com.usoftchina.saas.money.service.PaybalanceService;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -516,6 +517,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
 //        subledger.setSl_vendid(paybalance.getPb_vendid());
         subledger.setSl_vendid(1);
         subledger.setSl_date(paybalance.getPb_date());
+        subledger.setSl_ym(DateUtils.getYm(paybalance.getPb_date()));
         if (paybalance.getPb_pdamount() == null){
             subledger.setSl_amount((double) 0);
         }else {

+ 2 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -18,6 +18,7 @@ import com.usoftchina.saas.money.mapper.*;
 import com.usoftchina.saas.money.po.*;
 import com.usoftchina.saas.money.service.RecbalanceService;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -518,6 +519,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         subledger.setSl_custid(recbalance.getRb_custid());
         subledger.setSl_vendid(0);
         subledger.setSl_date(recbalance.getRb_date());
+        subledger.setSl_ym(DateUtils.getYm(recbalance.getRb_date()));
         if (recbalance.getRb_rdamount() == null){
             subledger.setSl_amount((double) 0);
         }else {

+ 97 - 113
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -108,10 +108,11 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     }
 
     @Override
-    public DocSavedDTO saveFormData(VerificationFormDTO formdata) {
+    public DocBaseDTO saveFormData(VerificationFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
             throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
+
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
         //人员Id
@@ -122,100 +123,71 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         List<VerificationdetDTO> items1 = formdata.getItems1();
         //获取从表2
         List<VerificationdetailDTO> items2 = formdata.getItems2();
-        //插入从表数据
-        List<Verificationdet> insertDetails1 = new ArrayList<>();
-        List<Verificationdetail> insertDetails2 = new ArrayList<>();
-        //更新从表数据
-        List<Verificationdet> updateDetails1 = new ArrayList<>();
-        List<Verificationdetail> updateDetails2 = new ArrayList<>();
-        DocSavedDTO saveDTO = new DocSavedDTO();
+
+        DocBaseDTO baseDTO = null;
         Long id = main.getId();
         String code = main.getVc_code();
-        Verification verification = BeanMapper.map(main,Verification.class);
-        verification.setCompanyId(companyId);
-        verification.setCreatorId(userId);
-        verification.setCreateTime(new Date());
-        String kind = verification.getVc_kind();
-        verification.setVc_kind(transferKind(kind));
+        //编号校验
+        code = pushMaxnubmer(code, id);
+        main.setVc_code(code);
 
-        //编号获取
-        code = pushMaxnubmer(code,id);
-        verification.setVc_code(code);
-        saveDTO.setCode(code);
+        Verification verification = BeanMapper.map(main,Verification.class);
+        if(id.longValue() > 0 ){
+            String kind = verification.getVc_kind();
+            verification.setVc_kind(transferKind(kind));
+            verificationMapper.updateByPrimaryKey(verification);
+            baseDTO = new DocBaseDTO(id, code, BillCodeSeq.VERIFICATION.getCaller());
+            if (!("AUDITED".equals(verification.getVc_statuscode()))) {
+                //日志记录
+                messageLogService.update(baseDTO);
+            }
+        }else{
+            verification.setCompanyId(companyId);
+            verification.setVc_recorder(BaseContextHolder.getUserName());
+            verification.setCreateTime(new Date());
+            verification.setCreatorId(userId);
+            verification.setCreatorName(BaseContextHolder.getUserName());
+            String kind = verification.getVc_kind();
+            verification.setVc_kind(transferKind(kind));
+            verificationMapper.insertSelective(verification);
+            id = verification.getId();
+            baseDTO = new DocBaseDTO(id, code, BillCodeSeq.VERIFICATION.getCaller());
+            if (!("AUDITED".equals(verification.getVc_statuscode()))) {
+                //日志记录
+                messageLogService.save(baseDTO);
+            }
+        }
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYMM");
         String dateYM = simpleDateFormat.format(verification.getVc_date());
         Integer numberYM = Integer.valueOf(dateYM);
         //判断更新与保存动作
-        if (StringUtils.isEmpty(id) || "0".equals(id.toString())){
-            //插入操作
-            getMapper().insertSelective(verification);
-            id = verification.getId();
-
-            //添加从表传输对象
-            for (VerificationdetDTO item : items1) {
-                Verificationdet detail = BeanMapper.map(item,Verificationdet.class);
-                detail.setVd_vcid(id);
-                detail.setCompanyId(companyId);
-                detail.setVd_ym(numberYM);
-                insertDetails1.add(detail);
-            }
-            for (VerificationdetailDTO item : items2) {
-                Verificationdetail detail = BeanMapper.map(item,Verificationdetail.class);
-                detail.setVcd_vcid(id);
-                detail.setVcd_ym(numberYM);
-                detail.setCompanyId(companyId);
-                insertDetails2.add(detail);
-            }
-            //插入从表
-            if (insertDetails1.size()>0) {
-                verificationdetMapper.batchInsert(insertDetails1);
-            }
-            if (insertDetails2.size()>0) {
-                verificationdetailMapper.batchInsert(insertDetails2);
-            }
-        }
-        //更新操作
-        getMapper().updateByPrimaryKeySelective(verification);
         //添加从表传输对象
         for (VerificationdetDTO item : items1) {
-            Verificationdet detail = BeanMapper.map(item, Verificationdet.class);
+            Verificationdet detail = BeanMapper.map(item,Verificationdet.class);
+            Long vd_id = detail.getId();
             detail.setVd_vcid(id);
-            detail.setVd_ym(numberYM);
             detail.setCompanyId(companyId);
-            if (StringUtils.isEmpty(detail.getId()) || "0".equals(detail.getId().toString())) {
-                insertDetails1.add(detail);
-            } else {
-                updateDetails1.add(detail);
+            detail.setVd_ym(numberYM);
+            if (vd_id>0){
+                verificationdetMapper.updateByPrimaryKey(detail);
+            }else{
+                verificationdetMapper.insertSelective(detail);
             }
         }
         for (VerificationdetailDTO item : items2) {
-            Verificationdetail detail = BeanMapper.map(item, Verificationdetail.class);
+            Verificationdetail detail = BeanMapper.map(item,Verificationdetail.class);
             detail.setVcd_vcid(id);
             detail.setVcd_ym(numberYM);
             detail.setCompanyId(companyId);
-            if (StringUtils.isEmpty(detail.getId()) || "0".equals(detail.getId().toString())) {
-                insertDetails2.add(detail);
-            } else {
-                updateDetails2.add(detail);
+            Long vcd_id = detail.getId();
+            if(vcd_id>0){
+                verificationdetailMapper.updateByPrimaryKey(detail);
+            }else{
+                verificationdetailMapper.insertSelective(detail);
             }
         }
-        //插入从表
-        if (insertDetails1.size()>0) {
-            verificationdetMapper.batchInsert(insertDetails1);
-        }
-        if (insertDetails2.size()>0) {
-            verificationdetailMapper.batchInsert(insertDetails2);
-        }
-        //更新从表
-        if (updateDetails1.size()>0) {
-            verificationdetMapper.batchUpdate(updateDetails1);
-        }
-        if (updateDetails2.size()>0) {
-            verificationdetailMapper.batchUpdate(updateDetails2);
-        }
         updateCorrespondingData(formdata);
-        saveDTO.setId(id);
-        return saveDTO;
+        return baseDTO;
     }
 
     private void updateCorrespondingData(VerificationFormDTO formdata) {
@@ -292,6 +264,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         String kind = verification.getVc_kind();
         subledger.setCompanyId(BaseContextHolder.getCompanyId());
         subledger.setSl_code(verification.getVc_code());
+        kind = transferKind(kind);
         subledger.setSl_kind(kind);
         if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable") ||
                 kind.equals("receivable_offset_payable")){
@@ -301,17 +274,18 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             subledger.setSl_custid(verification.getVc_custid());
             subledger.setSl_vendid(0);
         }
-
+        Double amount1 = verification.getVc_amount1()==null?new Double(0):verification.getVc_amount1();
+        Double amount2 = verification.getVc_amount2()==null?new Double(0):verification.getVc_amount2();
         subledger.setSl_date(verification.getVc_date());
-        subledger.setSl_amount(-verification.getVc_amount2());
+        subledger.setSl_amount(-amount2);
         subledger.setSl_orderamount(new Double(0));
         subledger.setSl_yamount(new Double(0));
         subledger.setSl_remark(verification.getVc_remark());
         subledger.setSl_discount(new Double(0));
         if(kind.equals("receipts_offset_receivable") || kind.equals("prepaid_offset_payable")){
-            subledger.setSl_preamount(-verification.getVc_amount1());
+            subledger.setSl_preamount(-amount1);
         }else{
-            subledger.setSl_preamount(new Double(0));
+            subledger.setSl_preamount(amount1);
         }
         return subledger;
     }
@@ -320,10 +294,10 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
      * @param id
      * @param nowBalance
      */
-    private void updateAuditSubledeger(int id , Double nowBalance){
-        Subledger subledger = subledgerMapper.selectByPrimaryKey(id);
+    private void updateAuditSubledeger(Long id , Double nowBalance){
+        Subledger subledger = subledgerMapper.selectByPrimaryKey(Math.toIntExact(id));
         Subledger newSubledeger = new Subledger();
-        newSubledeger.setId(Long.valueOf(String.valueOf(id)));
+        newSubledeger.setId(id);
         Double newNamout = subledger.getSl_namount()==null?new Double(0):subledger.getSl_namount()-nowBalance;
         Double newYamout = subledger.getSl_yamount()==null?new Double(0):subledger.getSl_yamount()+nowBalance;
         newSubledeger.setSl_yamount(newYamout);
@@ -332,15 +306,15 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
         newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
         newSubledeger.setUpdateTime(new Date());
-        subledgerMapper.updateByPrimaryKey(newSubledeger);
+        subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
     }
     /**
      * 反审核更新来源单据的已核销,未核销
      * @param id
      * @param nowBalance
      */
-    private void updateResAuditSubledeger(int id , Double nowBalance){
-        Subledger subledger = subledgerMapper.selectByPrimaryKey(id);
+    private void updateResAuditSubledeger(Long id , Double nowBalance){
+        Subledger subledger = subledgerMapper.selectByPrimaryKey(Math.toIntExact(id));
         Subledger newSubledeger = new Subledger();
         newSubledeger.setId(Long.valueOf(String.valueOf(id)));
         Double newNamout = subledger.getSl_namount()==null?new Double(0):subledger.getSl_namount()+nowBalance;
@@ -351,7 +325,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         newSubledeger.setUpdaterName(BaseContextHolder.getUserName());
         newSubledeger.setUpdaterId(BaseContextHolder.getUserId());
         newSubledeger.setUpdateTime(new Date());
-        subledgerMapper.updateByPrimaryKey(newSubledeger);
+        subledgerMapper.updateByPrimaryKeySelective(newSubledeger);
     }
     /**
      * 转换核销单类型
@@ -370,7 +344,17 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                 return "应收转应收";
             case "payable_to_payable":
                 return "应付转应付";
-                default:return "";
+            case "预收冲应收":
+                return "receipts_offset_receivable";
+            case "预付冲应付":
+                return "prepaid_offset_payable";
+            case "应收冲应付":
+                return "receivable_offset_payable";
+            case "应收转应收":
+                return "receivable_to_receivable";
+            case "应付转应付":
+                return "payable_to_payable";
+                default: return "";
         }
     }
 
@@ -405,7 +389,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
 
     /**
      *
-     * @param id
+     * @param detno
      */
     private boolean checkSetAcount(Integer detno){
         boolean isSetAcount = false;
@@ -418,13 +402,13 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     @Override
     public void deleteDetail1(Long id) {
         if (null != id) {
-            verificationdetMapper.deleteByParentPrimaryKey(Long.valueOf(String.valueOf(id)));
             Verificationdet verificationdet = verificationdetMapper.selectByPrimaryKey(Integer.valueOf(String.valueOf(id)));
             Verification verification = verificationMapper.selectByPrimaryKey(verificationdet.getVd_vcid());
             DocBaseDTO baseDTO = new DocBaseDTO();
             baseDTO.setId(id);
             baseDTO.setCode(verification.getVc_code());
             baseDTO.setName(BillCodeSeq.VERIFICATION.getName());
+            verificationdetMapper.deleteByParentPrimaryKey(Long.valueOf(String.valueOf(id)));
             //日志
             messageLogService.deleteDetail(baseDTO);
         }
@@ -446,14 +430,14 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     }
 
     @Override
-    public DocSavedDTO audit(VerificationFormDTO formData) {
+    public DocBaseDTO audit(VerificationFormDTO formData) {
         Long id = null;
-        DocSavedDTO savedDTO = new DocSavedDTO();
+        DocBaseDTO baseDTO = new DocBaseDTO();
         if (null != formData) {
-            id = Long.valueOf(String.valueOf(formData.getMain().getVc_id()));
+            id = formData.getMain().getId();
             if (StringUtils.isEmpty(id)) {
-                DocSavedDTO saveDTO = saveFormData(formData);
-                id = saveDTO.getId();
+                baseDTO = saveFormData(formData);
+                id = baseDTO.getId();
             }
             Verification verification = new Verification();
             verification.setVc_status(Status.AUDITED.getDisplay());
@@ -484,8 +468,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
                 updateAuditSubledeger(detail.getVcd_slid(),nowbalanceDet);
             }
         }
-        savedDTO.setId(id);
-        return savedDTO;
+        baseDTO.setId(id);
+        return baseDTO;
     }
 
     /**
@@ -510,9 +494,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             customer.setUpdaterId(BaseContextHolder.getUserId());
             customer.setUpdaterName(BaseContextHolder.getUserName());
             customer.setUpdateTime(new Date());
-            customer.setCu_preamount(preamount+amount1);
+            customer.setCu_preamount(preamount-amount1);
             customer.setCu_recamount(recamount-amount2);
-            customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amount2-preamount-amount1);
+            customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-amount2-(preamount-amount1));
             recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
         }else if(kind.equals("receivable_offset_payable")){
             Customer customerData = recbalanceMapper.selectCustomerByPrimaryKey(verificationDTO.getVc_custid());
@@ -557,8 +541,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             newCustomerIn.setUpdaterId(BaseContextHolder.getUserId());
             newCustomerIn.setUpdaterName(BaseContextHolder.getUserName());
             newCustomerIn.setUpdateTime(new Date());
-            newCustomerIn.setCu_recamount(recamountIn-amount1);
-            newCustomerIn.setCu_leftamount(beginapamountIn-beginprepayamountIn+recamountIn-amount1-preamountIn);
+            newCustomerIn.setCu_recamount(recamountIn+amount1);
+            newCustomerIn.setCu_leftamount(beginapamountIn-beginprepayamountIn+recamountIn+amount1-preamountIn);
             recbalanceMapper.updateCustomerByPrimaryKeySelective(newCustomerIn);
 
             Customer newCustomerOut = new Customer();
@@ -596,8 +580,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             vendor.setUpdaterName(BaseContextHolder.getUserName());
             vendor.setUpdateTime(new Date());
             vendor.setVe_preamount(preamount-amount1);
-            vendor.setVe_payamount(payamount+amount2);
-            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount+amount2-preamount+amount1);
+            vendor.setVe_payamount(payamount-amount2);
+            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amount2-(preamount-amount1));
             paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
         }else if(kind.equals("receivable_offset_payable")){
             Vendor vendorData = paybalanceMapper.selectVendorByPrimaryKey(verificationDTO.getVc_vendid());
@@ -610,11 +594,11 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             Double amount1 = verificationDTO.getVc_amount1()==null?new Double(0):verificationDTO.getVc_amount1();
             Double amount2 = verificationDTO.getVc_amount2()==null?new Double(0):verificationDTO.getVc_amount2();
             vendor.setId(Long.valueOf(String.valueOf(verificationDTO.getVc_vendid())));
-            vendor.setVe_payamount(payamount+amount2);
+            vendor.setVe_payamount(payamount-amount2);
             vendor.setUpdaterId(BaseContextHolder.getUserId());
             vendor.setUpdaterName(BaseContextHolder.getUserName());
             vendor.setUpdateTime(new Date());
-            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount+amount2-preamount);
+            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amount2-preamount);
             paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
         }else if(kind.equals("payable_to_payable")){
             //转入供应商
@@ -669,7 +653,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         }
 
         //更新客户或者供应商的金额
-        Verification nowverification = verificationMapper.selectByPrimaryKey(id);
+        Verification nowverification = verificationMapper.selectByPrimaryKey(Math.toIntExact(id));
         VerificationDTO verificationDTO = BeanMapper.map(nowverification,VerificationDTO.class);
         updateResAuditCustomer(verificationDTO);
         updateResAuditVendor(verificationDTO);
@@ -681,11 +665,11 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         List<Verificationdetail> items2 = verificationdetailMapper.selectByFK(id);
         for(Verificationdet det : items1){
             Double nowbalanceDet = det.getVd_nowbalance()==null?new Double(0):det.getVd_nowbalance();
-            updateAuditSubledeger(det.getVd_slid(),nowbalanceDet);
+            updateResAuditSubledeger(det.getVd_slid(),nowbalanceDet);
         }
         for(Verificationdetail detail : items2){
             Double nowbalanceDet = detail.getVcd_nowbalance()==null?new Double(0):detail.getVcd_nowbalance();
-            updateAuditSubledeger(detail.getVcd_slid(),nowbalanceDet);
+            updateResAuditSubledeger(detail.getVcd_slid(),nowbalanceDet);
         }
 
         Verification verification = new Verification();
@@ -726,9 +710,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             customer.setUpdaterId(BaseContextHolder.getUserId());
             customer.setUpdaterName(BaseContextHolder.getUserName());
             customer.setUpdateTime(new Date());
-            customer.setCu_preamount(preamount-amount1);
+            customer.setCu_preamount(preamount+amount1);
             customer.setCu_recamount(recamount+amount2);
-            customer.setCu_leftamount(beginapamount-beginprepayamount+recamount+amount2-preamount+amount1);
+            customer.setCu_leftamount(beginapamount-beginprepayamount+recamount+amount2-preamount-amount1);
             recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
         }else if(kind.equals("receivable_offset_payable")){
             Customer customerData = recbalanceMapper.selectCustomerByPrimaryKey(verificationDTO.getVc_custid());
@@ -812,8 +796,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             vendor.setUpdaterName(BaseContextHolder.getUserName());
             vendor.setUpdateTime(new Date());
             vendor.setVe_preamount(preamount+amount1);
-            vendor.setVe_payamount(payamount-amount2);
-            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount-amount2-preamount-amount1);
+            vendor.setVe_payamount(payamount+amount2);
+            vendor.setVe_leftamount(beginapamount-beginprepayamount+payamount+amount2-preamount-amount1);
             paybalanceMapper.updateVendorByPrimaryKeySelective(vendor);
         }else if(kind.equals("receivable_offset_payable")){
             Vendor vendorData = paybalanceMapper.selectVendorByPrimaryKey(verificationDTO.getVc_vendid());
@@ -857,8 +841,8 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             newVendorIn.setUpdaterId(BaseContextHolder.getUserId());
             newVendorIn.setUpdaterName(BaseContextHolder.getUserName());
             newVendorIn.setUpdateTime(new Date());
-            newVendorIn.setVe_payamount(payamountIn+amount1);
-            newVendorIn.setVe_leftamount(beginapamountIn-beginprepayamountIn+payamountIn+amount1-preamountIn);
+            newVendorIn.setVe_payamount(payamountIn-amount1);
+            newVendorIn.setVe_leftamount(beginapamountIn-beginprepayamountIn+payamountIn-amount1-preamountIn);
             paybalanceMapper.updateVendorByPrimaryKeySelective(newVendorIn);
 
             Vendor newVendorOut = new Vendor();

+ 15 - 0
applications/money/money-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -20,6 +20,12 @@
     <result column="sl_discount" property="sl_discount" jdbcType="DOUBLE" />
     <result column="sl_ym" property="sl_ym" jdbcType="INTEGER" />
   </resultMap>
+
+  <resultMap id="BaseAddMap" type="com.usoftchina.saas.money.po.VendorAdd" >
+    <result column="beginamount" property="beginamount" jdbcType="DOUBLE" />
+    <result column="nowamount" property="nowamount" jdbcType="DOUBLE" />
+    <result column="nowpay" property="beginamount" jdbcType="DOUBLE" />
+  </resultMap>
   <sql id="Base_Column_List" >
     sl_id, sl_code, sl_kind, sl_custid, sl_vendid, sl_date, sl_amount, sl_preamount, 
     sl_yamount, sl_namount, sl_remark, companyId, updaterId, updateTime, sl_orderamount, 
@@ -247,4 +253,13 @@
         where sl_code = #{sl_code,jdbcType=VARCHAR}
     </select>
 
+  <select id="selectAdd" resultMap="BaseAddMap">
+    select a.sl_orderamount as beginamount, b.sl_orderamount as nowamount, c.sl_orderamount as nowpay FROM
+(select sl_orderamount,sl_vendid,sl_ym from subledger where sl_kind = '期初余额') a
+left join (select sum(sl_orderamount) sl_orderamount,sl_vendid,sl_ym from subledger where sl_kind = '采购验收单' or sl_kind = '采购验退单'
+group by sl_vendid,sl_ym) b on a.sl_vendid=b.sl_vendid
+left join (select sum(sl_orderamount) sl_orderamount,sl_vendid,sl_ym from subledger where sl_kind = '付款单' or sl_kind = '其他支出单'
+group by sl_vendid,sl_ym) c on a.sl_vendid=c.sl_vendid
+ where a.sl_vendid=#{sl_vendid,jdbcType=INTEGER} and a.sl_ym=#{sl_ym, jdbcType=INTEGER}
+  </select>
 </mapper>

+ 2 - 3
applications/money/money-server/src/main/resources/mapper/VerificationListMapper.xml

@@ -51,8 +51,7 @@
     <select id="selectVerificationListByCondition"  resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List" />
-        from verification left join verificationdet on vc_id=vd_vcid
-        and verification.companyid=verificationdet.companyid
+        from verification
         <where>
             <if test="con != null">
                 ${con}
@@ -76,6 +75,6 @@
                 and  verification.companyId = #{companyId}
             </if>
         </where>
-        order by vc_id
+        order by vc_date desc,vc_id desc
     </select>
 </mapper>

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/VerificationMapper.xml

@@ -595,7 +595,7 @@
         vc_text5 = #{vc_text5,jdbcType=VARCHAR},
       </if>
     </set>
-    where vc_id = #{id,jdbcType=INTEGER}
+    where vc_id = #{vc_id,jdbcType=INTEGER}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.money.po.Verification" >
     update verification

+ 4 - 1
applications/money/money-server/src/main/resources/mapper/VerificationdetMapper.xml

@@ -246,6 +246,9 @@
         #{vd_text5,jdbcType=VARCHAR},
       </if>
     </trim>
+    <selectKey resultType="Long" keyProperty="id" order="AFTER">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
   </insert>
   <select id="countByExample" parameterType="com.usoftchina.saas.money.po.VerificationdetExample" resultType="java.lang.Integer" >
     select count(*) from verificationdet
@@ -401,7 +404,7 @@
         vd_text5 = #{vd_text5,jdbcType=VARCHAR},
       </if>
     </set>
-    where vd_id = #{vd_id,jdbcType=INTEGER}
+    where vd_id = #{id,jdbcType=INTEGER}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.money.po.Verificationdet" >
     update verificationdet

+ 5 - 2
applications/money/money-server/src/main/resources/mapper/VerificationdetailMapper.xml

@@ -190,7 +190,7 @@
         vcd_text5,
       </if>
     </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides="," >-0--0
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="vcd_vcid != null" >
         #{vcd_vcid,jdbcType=INTEGER},
       </if>
@@ -246,6 +246,9 @@
         #{vcd_text5,jdbcType=VARCHAR},
       </if>
     </trim>
+    <selectKey resultType="Long" keyProperty="id" order="AFTER">
+      SELECT LAST_INSERT_ID()
+    </selectKey>
   </insert>
   <select id="countByExample" parameterType="com.usoftchina.saas.money.po.VerificationdetailExample" resultType="java.lang.Integer" >
     select count(*) from verificationdetail
@@ -401,7 +404,7 @@
         vcd_text5 = #{vcd_text5,jdbcType=VARCHAR},
       </if>
     </set>
-    where vcd_id = #{vcd_id,jdbcType=INTEGER}
+    where vcd_id = #{id,jdbcType=INTEGER}
   </update>
   <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.money.po.Verificationdetail" >
     update verificationdetail

+ 1 - 1
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdIODetailDTO.java

@@ -55,7 +55,7 @@ public class ProdIODetailDTO extends CommonBaseDTO implements Serializable {
 
     private String pd_whname;
 
-    private Integer pd_inwhid;
+    private Long pd_inwhid;
 
     private String pd_inwhcode;
 

+ 2 - 5
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/controller/ProdInOutReportController.java

@@ -1,6 +1,5 @@
 package com.usoftchina.saas.storage.controller;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
@@ -25,8 +24,7 @@ public class ProdInOutReportController {
      */
     @GetMapping("/prodioDetail")
     public Result getProdiodetail(PageRequest page, ListReqDTO req){
-        PageInfo listData = prodInOutReportService.getProdiodetail(page, req);
-        return Result.success(listData);
+        return Result.success(prodInOutReportService.getProdiodetail(page, req));
     }
 
     /**
@@ -37,8 +35,7 @@ public class ProdInOutReportController {
      */
     @GetMapping("/prodinoutCount")
     public Result getProdinoutCount(PageRequest page, ListReqDTO req){
-        PageInfo listData = prodInOutReportService.getProdinoutCount(page, req);
-        return Result.success(listData);
+        return Result.success(prodInOutReportService.getProdinoutCount(page, req));
     }
 
 }

+ 4 - 0
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutReportMapper.java

@@ -15,4 +15,8 @@ public interface ProdInOutReportMapper {
     List selectProdiodetailByCondition(@Param("con") String con,@Param("companyId") Long companyId);
 
     List selectProdinoutCountByCondition(@Param("con") String con,@Param("companyId") Long companyId);
+
+    String selectProdiodetailCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectProdinoutCountCalculateFields(String calculateFieldsSql, String con, Long companyId);
 }

+ 4 - 3
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/ProdInOutReportService.java

@@ -1,15 +1,16 @@
 package com.usoftchina.saas.storage.service;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
 
+import java.util.Map;
+
 /**
  * Created by zdw
  * 2018-11-09 16:57.
  */
 public interface ProdInOutReportService {
-    PageInfo getProdiodetail(PageRequest page, ListReqDTO req);
+    Map<String, Object> getProdiodetail(PageRequest page, ListReqDTO req);
 
-    PageInfo getProdinoutCount(PageRequest page, ListReqDTO req);
+    Map<String, Object> getProdinoutCount(PageRequest page, ListReqDTO req);
 }

+ 47 - 26
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutReportServiceImpl.java

@@ -1,16 +1,21 @@
 package com.usoftchina.saas.storage.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.storage.mapper.ProdInOutReportMapper;
 import com.usoftchina.saas.storage.service.ProdInOutReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by zdw
@@ -22,43 +27,59 @@ public class ProdInOutReportServiceImpl implements ProdInOutReportService{
     private ProdInOutReportMapper prodInOutReportMapper;
 
     @Override
-    public PageInfo getProdiodetail(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "Prodiodetail");
-    }
-
-    @Override
-    public PageInfo getProdinoutCount(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "ProdinoutCount");
-    }
-
-    private PageInfo getListDATA(PageRequest page, ListReqDTO req, String type) {
-        //设置默认分页
-        if (null == page || page.getSize() == 0 || page.getNumber() == 0) {
-            page = new PageRequest();
-            page.setNumber(1);
-            page.setSize(10);
-        }
+    public Map<String, Object> getProdiodetail(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
         PageHelper.startPage(page.getNumber(), page.getSize());
-        //查询数据
-        List lists = getListByType(req, type);
+        Map<String,Object> map = new HashMap<>();
+        List list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
+        if (null == con) {
+            con = "1=1";
+        }
+        list = prodInOutReportMapper.selectProdiodetailByCondition(con, companyId);
         //取分页信息
-        PageInfo pageInfo = new PageInfo(lists);
-        return pageInfo;
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = prodInOutReportMapper.selectProdiodetailCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
+        }
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
-    private List getListByType(ListReqDTO req, String type) {
+    @Override
+    public Map<String, Object> getProdinoutCount(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        Map<String,Object> map = new HashMap<>();
         List list = null;
         Long companyId = BaseContextHolder.getCompanyId();
         String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
         if (null == con) {
             con = "1=1";
         }
-        if ("Prodiodetail".equals(type)) {
-            list = prodInOutReportMapper.selectProdiodetailByCondition(con, companyId);
-        } else if ("ProdinoutCount".equals(type)){
-            list = prodInOutReportMapper.selectProdinoutCountByCondition(con, companyId);
+        list = prodInOutReportMapper.selectProdinoutCountByCondition(con, companyId);
+        //取分页信息
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = prodInOutReportMapper.selectProdinoutCountCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
         }
-        return list;
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
 }

+ 25 - 0
applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml

@@ -71,6 +71,31 @@
     </where>
   </select>
 
+  <select id="selectProdiodetailCalculateFields" resultType="string">
+    select   ${fields}  from prodiodetail_view
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by pi_inoutno desc
+  </select>
+
+  <select id="selectProdinoutCountCalculateFields" resultType="string">
+    select   ${fields}  from prodinoutcount_view
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by pwm_yearmonth
+  </select>
 
 
 

+ 23 - 0
base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/api/AccountCacheTest.java

@@ -0,0 +1,23 @@
+package com.usoftchina.saas.account.api;
+
+import com.usoftchina.saas.account.cache.AccountCache;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class AccountCacheTest {
+
+    @Test
+    public void hdel() {
+        AccountCache.of(43).hdel();
+        System.out.println(AccountCache.of(43).exists());
+    }
+}

+ 18 - 0
base-servers/account/account-server/src/test/java/com/usoftchina/saas/account/service/AccountServiceTest.java

@@ -1,13 +1,19 @@
 package com.usoftchina.saas.account.service;
 
+import com.usoftchina.saas.account.cache.AccountCache;
 import com.usoftchina.saas.account.constant.AccountType;
+import com.usoftchina.saas.account.dto.AccountDTO;
 import com.usoftchina.saas.account.po.Account;
+import com.usoftchina.saas.utils.CollectionUtils;
 import org.junit.*;
 import org.junit.runner.RunWith;
 import org.junit.runners.MethodSorters;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+import java.util.Set;
 //import org.springframework.transaction.annotation.Transactional;
 
 @RunWith(SpringRunner.class)
@@ -54,4 +60,16 @@ public class AccountServiceTest {
         Assert.assertTrue(removed);
     }
 
+    @Test
+    public void testD_clearAccountCacheByRoleId() {
+        long roleId = 25;
+        List<Account> accounts = accountService.findByRoleId(roleId);
+        if (!CollectionUtils.isEmpty(accounts)) {
+            accounts.forEach(account -> accountService.clearCache(account.getId()));
+        }
+        AccountCache.current().keys().forEach(System.out::println);
+
+        AccountCache.of(43).getAccount();
+    }
+
 }

+ 1 - 0
base-servers/auth/pom.xml

@@ -18,6 +18,7 @@
         <module>auth-server</module>
         <module>auth-client</module>
         <module>auth-common</module>
+        <module>sso-api</module>
     </modules>
 
 </project>

+ 32 - 0
base-servers/auth/sso-api/pom.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>auth</artifactId>
+        <groupId>com.usoftchina.saas</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>sso-api</artifactId>
+    <description>account center api</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>core</artifactId>
+        </dependency>
+        <!-- test -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

+ 51 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java

@@ -0,0 +1,51 @@
+package com.usoftchina.sso.api;
+
+import com.usoftchina.sso.dto.SsoResult;
+import com.usoftchina.sso.dto.SsoUser;
+import com.usoftchina.sso.dto.SsoUserSpaceList;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@FeignClient(url = "${sso.base-url}", name = "sso-server", fallback = SsoUserApi.DefaultFallback.class)
+@RequestMapping("/api/user")
+public interface SsoUserApi {
+
+    /**
+     * 手机号查找用户
+     *
+     * @param userUU
+     * @return
+     */
+    @GetMapping("/info")
+    SsoResult<SsoUser> getUserByUu(@RequestParam("userUU") Long userUU);
+
+    /**
+     * 手机号查找绑定企业
+     *
+     * @param mobile
+     * @return
+     */
+    @GetMapping("/getSpace")
+    @Deprecated
+    SsoUserSpaceList getUserSpacesByMobile(@RequestParam("mobile") String mobile);
+
+    @Component
+    class DefaultFallback implements SsoUserApi{
+        @Override
+        public SsoResult<SsoUser> getUserByUu(Long userUU) {
+            return SsoResult.fallback();
+        }
+
+        @Override
+        public SsoUserSpaceList getUserSpacesByMobile(String mobile) {
+            return null;
+        }
+    }
+}

+ 8 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java

@@ -0,0 +1,8 @@
+package com.usoftchina.sso.api;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public interface SsoUserSpaceApi {
+}

+ 85 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoResult.java

@@ -0,0 +1,85 @@
+package com.usoftchina.sso.dto;
+
+import com.usoftchina.saas.exception.ExceptionCode;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public class SsoResult<T> {
+    private boolean success;
+
+    private boolean error;
+
+    private String errCode;
+
+    private String errMsg;
+
+    private String errDetail;
+
+    private T content;
+
+    public SsoResult() {
+    }
+
+    /**
+     * 异常返回
+     *
+     * @return
+     */
+    public static SsoResult fallback() {
+        SsoResult result = new SsoResult();
+        result.setError(true);
+        result.setErrCode(String.valueOf(ExceptionCode.SYSTEM_BUSY.getCode()));
+        result.setErrMsg(ExceptionCode.SYSTEM_BUSY.getMessage());
+        return result;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public boolean isError() {
+        return error;
+    }
+
+    public void setError(boolean error) {
+        this.error = error;
+    }
+
+    public String getErrMsg() {
+        return errMsg;
+    }
+
+    public void setErrMsg(String errMsg) {
+        this.errMsg = errMsg;
+    }
+
+    public String getErrCode() {
+        return errCode;
+    }
+
+    public void setErrCode(String errCode) {
+        this.errCode = errCode;
+    }
+
+    public String getErrDetail() {
+        return errDetail;
+    }
+
+    public void setErrDetail(String errDetail) {
+        this.errDetail = errDetail;
+    }
+
+    public T getContent() {
+        return content;
+    }
+
+    public void setContent(T content) {
+        this.content = content;
+    }
+}

+ 251 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUser.java

@@ -0,0 +1,251 @@
+package com.usoftchina.sso.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import java.io.Serializable;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SsoUser implements Serializable{
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * uu号
+     */
+    private Long userUU;
+
+    /**
+     * 会员名
+     */
+    private String vipName;
+
+    /**
+     * 手机号
+     */
+    private String mobile;
+
+    /**
+     * 手机号所属区域(continent or Hongkong)
+     */
+    private String mobileArea;
+
+    /**
+     * 手机号认证状态
+     */
+    private Short mobileValidCode;
+
+    /**
+     * 用户密码
+     */
+    private String password;
+
+    /**
+     * 用户erp密码
+     */
+    private String erpPassword;
+
+    /**
+     * 盐值
+     */
+    private String salt;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 用户邮箱认证状态
+     */
+    private Short emailValidCode;
+
+    /**
+     * 身份认证状态
+     */
+    private Short identityValidCode;
+
+    /**
+     * 账户是否冻结(1、冻结)
+     */
+    private Short lock;
+
+    /**
+     * 企业uu号
+     */
+    private Long spaceUU;
+
+    /**
+     * 企业名称
+     */
+    private String spaceName;
+
+    /**
+     * 营业执照号
+     */
+    private String businessCode;
+
+    /**
+     * 企业域名
+     */
+    private String spaceDomain;
+
+    /**
+     * 应用唯一标志
+     */
+    private String appId;
+
+    /**
+     * 上次登录时间
+     */
+    private Long lastLoginTime;
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public String getVipName() {
+        return vipName;
+    }
+
+    public void setVipName(String vipName) {
+        this.vipName = vipName;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public String getMobileArea() {
+        return mobileArea;
+    }
+
+    public void setMobileArea(String mobileArea) {
+        this.mobileArea = mobileArea;
+    }
+
+    public Short getMobileValidCode() {
+        return mobileValidCode;
+    }
+
+    public void setMobileValidCode(Short mobileValidCode) {
+        this.mobileValidCode = mobileValidCode;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getErpPassword() {
+        return erpPassword;
+    }
+
+    public void setErpPassword(String erpPassword) {
+        this.erpPassword = erpPassword;
+    }
+
+    public String getSalt() {
+        return salt;
+    }
+
+    public void setSalt(String salt) {
+        this.salt = salt;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Short getEmailValidCode() {
+        return emailValidCode;
+    }
+
+    public void setEmailValidCode(Short emailValidCode) {
+        this.emailValidCode = emailValidCode;
+    }
+
+    public Short getIdentityValidCode() {
+        return identityValidCode;
+    }
+
+    public void setIdentityValidCode(Short identityValidCode) {
+        this.identityValidCode = identityValidCode;
+    }
+
+    public Short getLock() {
+        return lock;
+    }
+
+    public void setLock(Short lock) {
+        this.lock = lock;
+    }
+
+    public Long getSpaceUU() {
+        return spaceUU;
+    }
+
+    public void setSpaceUU(Long spaceUU) {
+        this.spaceUU = spaceUU;
+    }
+
+    public String getSpaceName() {
+        return spaceName;
+    }
+
+    public void setSpaceName(String spaceName) {
+        this.spaceName = spaceName;
+    }
+
+    public String getBusinessCode() {
+        return businessCode;
+    }
+
+    public void setBusinessCode(String businessCode) {
+        this.businessCode = businessCode;
+    }
+
+    public String getSpaceDomain() {
+        return spaceDomain;
+    }
+
+    public void setSpaceDomain(String spaceDomain) {
+        this.spaceDomain = spaceDomain;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public Long getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    public void setLastLoginTime(Long lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+}

+ 191 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUserSpace.java

@@ -0,0 +1,191 @@
+package com.usoftchina.sso.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import java.io.Serializable;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SsoUserSpace implements Serializable{
+    /**
+     * 企业uu号
+     */
+    private Long spaceUU;
+
+    /**
+     * 企业名称
+     */
+    private String spaceName;
+
+    /**
+     * 法定代表人
+     */
+    private String corporation;
+
+    /**
+     * 注册日期
+     */
+    private Long registerDate;
+
+    /**
+     * 管理员
+     */
+    private SsoUser admin;
+
+    /**
+     * 营业执照号
+     */
+    private String businessCode;
+
+    /**
+     * 营业执照
+     */
+    private String businessCodeImage;
+
+    /**
+     * 注册地址
+     */
+    private String regAddress;
+
+    /**
+     * 企业信息认证状态
+     */
+    private Short validCode;
+
+    /**
+     * logo图片
+     */
+    private String logoImage;
+
+    /**
+     * 企业联系电话
+     */
+    private String telephone;
+
+    /**
+     * 行业
+     */
+    private String profession;
+
+    /**
+     * 经营范围标签,逗号分隔
+     */
+    private String tags;
+
+    private String accessSecret;
+
+    public Long getSpaceUU() {
+        return spaceUU;
+    }
+
+    public void setSpaceUU(Long spaceUU) {
+        this.spaceUU = spaceUU;
+    }
+
+    public String getSpaceName() {
+        return spaceName;
+    }
+
+    public void setSpaceName(String spaceName) {
+        this.spaceName = spaceName;
+    }
+
+    public String getCorporation() {
+        return corporation;
+    }
+
+    public void setCorporation(String corporation) {
+        this.corporation = corporation;
+    }
+
+    public Long getRegisterDate() {
+        return registerDate;
+    }
+
+    public void setRegisterDate(Long registerDate) {
+        this.registerDate = registerDate;
+    }
+
+    public SsoUser getAdmin() {
+        return admin;
+    }
+
+    public void setAdmin(SsoUser admin) {
+        this.admin = admin;
+    }
+
+    public String getBusinessCode() {
+        return businessCode;
+    }
+
+    public void setBusinessCode(String businessCode) {
+        this.businessCode = businessCode;
+    }
+
+    public String getBusinessCodeImage() {
+        return businessCodeImage;
+    }
+
+    public void setBusinessCodeImage(String businessCodeImage) {
+        this.businessCodeImage = businessCodeImage;
+    }
+
+    public String getRegAddress() {
+        return regAddress;
+    }
+
+    public void setRegAddress(String regAddress) {
+        this.regAddress = regAddress;
+    }
+
+    public Short getValidCode() {
+        return validCode;
+    }
+
+    public void setValidCode(Short validCode) {
+        this.validCode = validCode;
+    }
+
+    public String getLogoImage() {
+        return logoImage;
+    }
+
+    public void setLogoImage(String logoImage) {
+        this.logoImage = logoImage;
+    }
+
+    public String getTelephone() {
+        return telephone;
+    }
+
+    public void setTelephone(String telephone) {
+        this.telephone = telephone;
+    }
+
+    public String getProfession() {
+        return profession;
+    }
+
+    public void setProfession(String profession) {
+        this.profession = profession;
+    }
+
+    public String getTags() {
+        return tags;
+    }
+
+    public void setTags(String tags) {
+        this.tags = tags;
+    }
+
+    public String getAccessSecret() {
+        return accessSecret;
+    }
+
+    public void setAccessSecret(String accessSecret) {
+        this.accessSecret = accessSecret;
+    }
+}

+ 20 - 0
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/dto/SsoUserSpaceList.java

@@ -0,0 +1,20 @@
+package com.usoftchina.sso.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+public class SsoUserSpaceList implements Serializable{
+    private List<SsoUserSpace> spaces;
+
+    public List<SsoUserSpace> getSpaces() {
+        return spaces;
+    }
+
+    public void setSpaces(List<SsoUserSpace> spaces) {
+        this.spaces = spaces;
+    }
+}

+ 18 - 0
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoTest.java

@@ -0,0 +1,18 @@
+package com.usoftchina.sso.test;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@SpringBootApplication(scanBasePackages = "com.usoftchina")
+@EnableFeignClients("com.usoftchina.sso")
+public class SsoTest {
+
+    public static void main(String[] args) {
+        SpringApplication.run(SsoTest.class, args);
+    }
+}

+ 47 - 0
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java

@@ -0,0 +1,47 @@
+package com.usoftchina.sso.test;
+
+import com.usoftchina.saas.utils.CollectionUtils;
+import com.usoftchina.sso.api.SsoUserApi;
+import com.usoftchina.sso.dto.SsoResult;
+import com.usoftchina.sso.dto.SsoUser;
+import com.usoftchina.sso.dto.SsoUserSpaceList;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @author yingp
+ * @date 2018/11/23
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class SsoUserApiTest {
+
+    @Autowired
+    private SsoUserApi ssoUserApi;
+
+    final static long userUU = 200040149;
+
+    final static String mobile = "13798490565";
+
+    @Test
+    public void testA_getUserByUu() {
+        SsoResult<SsoUser> result = ssoUserApi.getUserByUu(userUU);
+        if (result.isSuccess()) {
+            System.out.println(result.getContent().getVipName());
+        }
+    }
+
+    @Test
+    public void testB_getUserSpacesByMobile() {
+        SsoUserSpaceList list = ssoUserApi.getUserSpacesByMobile(mobile);
+        if (null != list && !CollectionUtils.isEmpty(list.getSpaces())) {
+            list.getSpaces().forEach(space -> System.out.println(space.getSpaceName()));
+        }
+    }
+}

+ 3 - 0
base-servers/auth/sso-api/src/test/resources/application.yml

@@ -0,0 +1,3 @@
+sso:
+  base-url: http://192.168.253.12:32323
+#  base-url: https://sso.ubtob.com

+ 4 - 0
framework/core/pom.xml

@@ -62,6 +62,10 @@
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 7 - 0
framework/core/src/main/java/com/usoftchina/saas/cache/RedisHashCache.java

@@ -4,6 +4,7 @@ import org.springframework.data.redis.core.BoundHashOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 
 import java.util.Optional;
+import java.util.Set;
 import java.util.function.Supplier;
 
 /**
@@ -27,6 +28,10 @@ public abstract class RedisHashCache<K, F, V> extends BaseRedisCache<K, V> {
         return super.getRedisTemplate().boundHashOps(key());
     }
 
+    public Set<F> keys() {
+        return this.getBoundHashOperations().keys();
+    }
+
     /**
      * 获取
      *
@@ -89,4 +94,6 @@ public abstract class RedisHashCache<K, F, V> extends BaseRedisCache<K, V> {
     public void hdel() {
         this.getBoundHashOperations().delete(this.field());
     }
+
+
 }

+ 55 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/DateUtils.java

@@ -493,4 +493,59 @@ public class DateUtils {
         return true;
     }
 
+    /**
+     * String转Date类型
+     *
+     * @param dateStr
+     *            时间字符串
+     * @return Date类型时间
+     * @throws Exception
+     *             异常
+     */
+    public static Date string2Date(String dateStr, String format) throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (dateStr != null) {
+            return sdf.parse(dateStr);
+        }else {
+            return null;
+        }
+    }
+
+    /**
+     * Date转String
+     *
+     * @param date
+     *            Date类型时间
+     * @return 时间字符串
+     */
+    public static String date2String(Date date, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (date != null) {
+            return sdf.format(date);
+        }else {
+            return null;
+        }
+    }
+
+    //取月份第一天
+    public static Date getFirstDay(Date date){
+        String dates = date2String(date, "yyyy-MM");
+        dates = dates + "-01";
+        Date d = null;
+        try {
+            d = string2Date(dates, "yyyy-MM-dd");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return d;
+    }
+
+    //获取期间
+    public static int getYm(Date date){
+        String dates = date2String(date, "yyyyMM");
+//        dates = dates + "01";
+        int d = Integer.parseInt(dates);
+        return d;
+    }
+
 }

+ 1 - 1
frontend/saas-portal-web/config/index.js

@@ -14,7 +14,7 @@ module.exports = {
 
     // Various Dev Server settings
     // host: 'localhost', // can be overwritten by process.env.HOST
-    host: '127.0.0.1', // can be overwritten by process.env.HOST
+    host: '192.168.253.183', // can be overwritten by process.env.HOST
     port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
     autoOpenBrowser: false,
     errorOverlay: true,

+ 1 - 8
frontend/saas-portal-web/src/App.vue

@@ -18,12 +18,5 @@ export default {
 </script>
 
 <style>
-/* #app {
-  font-family: 'Avenir', Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  text-align: center;
-  color: #2c3e50;
-  margin-top: 60px;
-} */
+
 </style>

+ 8 - 30
frontend/saas-portal-web/src/components/conenter/addgongsi.vue

@@ -36,17 +36,6 @@
                                 <input ref="address" class="qy-xiangxi" type="text" placeholder="输入企业详细地址">
                             </div>
                         </li>
-                        <!-- <li>
-                            <span class="qy-biaoti">公司标签</span>
-                            <div class="addbiaoqian">
-                                <span v-if= "tjbiaoqian" class="tj-biaoqian">暂无标签</span>
-                                <span v-else v-for="(b , i) in biaoqian" :key="i" class="qy-biaoqian tj-bqleft">{{b}}</span>
-                            </div>
-                            <div class="tj-gsbiaoqian">
-                                <input type="text" ref="biaoqian" name="" id="biaoqian" placeholder="请输入小于等于10个字符">
-                                <span @click= "addbiaoqian" class="dianji">添加标签</span>
-                            </div>
-                        </li> -->
                     </ul>
                 </div>
             </div>
@@ -64,7 +53,7 @@
                         <li><span class="qy-biaoti">手机号</span><span>{{mytoken.account.mobile}}</span></li>
                         <li>
                             <span class="qy-biaoti">邮箱</span>
-                            <input ref="email" type="email">
+                            <input @input="email" ref="email" type="email">
                         </li>
                     </ul>
                 </div>
@@ -78,8 +67,6 @@ import VDistpicker from 'v-distpicker'
     export default {
         data(){
             return {
-                tjbiaoqian:true,//标签切换
-                biaoqian:[],//标签数组
                 province:'',//省
                 city:'',//市
                 area:'',//区
@@ -91,13 +78,7 @@ import VDistpicker from 'v-distpicker'
             VDistpicker
         },
         mounted(){
-            this.$ajax.get('../../../static/data.json')
-            .then(res=>{
-                // console.log('请求成功',res.data);
-            })
-            .catch(err=>{
-                // console.log('请求失败',err);
-            });
+
         },
         methods: {
             //取消添加企业
@@ -133,6 +114,11 @@ import VDistpicker from 'v-distpicker'
                     this.$refs.usname.innerHTML = ''
                 }
             },
+            
+            email(){
+                let email = this.$refs.email.value;//邮箱
+
+            },
             //保存
             Preservation(){
                 let qyname = this.$refs.qyname.value;//公司名字
@@ -140,7 +126,6 @@ import VDistpicker from 'v-distpicker'
                 let address = this.province+this.city+this.area+this.$refs.address.value;//公司详细地址
                 let name = this.$refs.name.value;//个人姓名
                 let email = this.$refs.email.value;//邮箱
-                // let mobile = this.$store.state.data.mobile;//手机号
                 let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
                 let token = String(mytoken.token);
                 let uu = mytoken.account.uu;
@@ -149,7 +134,7 @@ import VDistpicker from 'v-distpicker'
                 let account = {'realname':name,'email':email,'mobile':mobile, 'uu':uu}
                 if (name != '' && qyname != '') {
                     this.$ajax({
-                        url:"http://192.168.253.31:8560/api/account/accountCenter/companyAccount/save",
+                        url: this.$url.api+"/api/account/accountCenter/companyAccount/save",
                         method: 'post',
                         data: {
                             companyRegDTO:company,
@@ -189,13 +174,6 @@ import VDistpicker from 'v-distpicker'
             qyarea(qu){
                 this.area = qu.value;
             },
-            //添加标签
-            addbiaoqian(){
-                let text = this.$refs.biaoqian.value;
-                this.biaoqian.push(text);
-                this.tjbiaoqian = false;
-                this.$refs.biaoqian.value = '';
-            },
         }
     }
 </script>

+ 36 - 139
frontend/saas-portal-web/src/components/conenter/company.vue

@@ -1,14 +1,15 @@
 <template>
   <div>
+    <iframe hidden :src="setTokenPage"></iframe>
     <!-- 遮罩 -->
-    <div class="zhezhao" v-if="showModal"></div>
+    <div class="zhezhao"></div>
     <!-- 设置默认弹窗 -->
     <div class="tanchuang szmoren">
       <div class="over"><img @click="guanbitc" class="right xs" src="/static/img/qiye/chahao.png" alt=""></div>
       <div v-if="moren">
         <div class="tc-text tc-queren"><span>是否确认设为默认企业?</span></div>
         <div class="tc-anniu">
-          <button @click="addmoren">确认</button>
+          <button @click="setDefault">确认</button>
           <button @click="guanbitc">取消</button>
         </div>
       </div>
@@ -23,13 +24,13 @@
       <div v-if="ktsass">
         <div class="tc-text tc-queren"><span>是否确认开通saas服务?</span></div>
         <div class="tc-anniu">
-          <button @click="addsass">确认</button>
+          <button @click="confirmSaas">确认</button>
           <button @click="guanbitc">取消</button>
         </div>
       </div>
       <div v-else>
         <div class="tc-text tc-conent"><span>开通成功</span></div>
-        <div style="margin-top: 40px;"><span @click="offfuwu" class="gs-btn1 dianji">进入服务</span></div>
+        <div style="margin-top: 40px;"><span @click="showServeWin" class="gs-btn1 dianji">进入服务</span></div>
       </div>
     </div>
     <!-- 该企业已开通服务弹窗 -->
@@ -56,11 +57,10 @@
       </div>
     </div>
 
-<<<<<<< HEAD
         <div class="gs-qiyebox">
             <!-- 点击查看企业详情 -->
             <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
-                <div class="left gs-xqleft" @click= "chakanxq">
+                <div class="left gs-xqleft" @click= "getEnterpriseInfo(d)">
                     <div class="gs-lefttext">
                         <p class="gs-qynema"><span>企业名称:</span>{{d.address}}</p>
                         <p><span>管理员:</span>{{d.name}}</p>
@@ -69,59 +69,30 @@
                 </div>
                 <div class="right gs-xqright">
                     <div class="gs-border">
-                        <span v-if= "d.saas_" class="gs-btn1 dianji" @click="jinru(d.id)">进入服务</span>
-                        <span v-else @click= "kaitong" class="gs-btn1 kaitong xs">开通服务</span>
+                        <span v-if= "d.saas_" class="gs-btn1 dianji" @click="selectServe(d.id)">进入服务</span>
+                        <span v-else @click= "showOpenServeWin" class="gs-btn1 kaitong xs">开通服务</span>
                     </div>
                     <div>
                         <span v-if = "d.default_" class="gs-btn2 gs-btn3">默认企业</span>
-                        <span v-else @click="szmoren(i)" class="gs-btn2 xs">设为默认</span>
+                        <span v-else @click="showDefaultWin(i)" class="gs-btn2 xs">设为默认</span>
                         
                     </div>
                 </div>
             </div>
             <div class="gs-xiangqing dotted">
                 <p class="gs-tianja">
-                    <span @click= "tianjia"><router-link to="/addenterprise">+添加企业</router-link></span>
+                    <span @click= "addEnterprise"><router-link to="/addenterprise">+添加企业</router-link></span>
                 </p>
             </div>
-=======
-    <div class="gs-qiyebox">
-      <!-- 点击查看企业详情 -->
-      <div v-for="(d , i) in arr " :key="i" class="gs-xiangqing xs">
-        <div class="left gs-xqleft" @click="chakanxq">
-          <div class="gs-lefttext">
-            <p class="gs-qynema"><span>企业名称:</span>{{d.name}}</p>
-            <p><span>管理员:</span>飞飞飞飞</p>
-            <p><span>开通日期:</span>{{d.time}}</p>
-          </div>
         </div>
-        <div class="right gs-xqright">
-          <div class="gs-border">
-            <span v-if="d.kaitong" class="gs-btn1 dianji">进入服务</span>
-            <span v-else @click="kaitong" class="gs-btn1 kaitong xs">开通服务</span>
-          </div>
-          <div>
-            <span v-if="d.moren" class="gs-btn2 gs-btn3">默认企业</span>
-            <span v-else @click="szmoren" class="gs-btn2 xs">设为默认</span>
-          </div>
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
-        </div>
-      </div>
-      <div class="gs-xiangqing dotted">
-        <p class="gs-tianja">
-          <span @click="tianjia"><router-link to="/addenterprise">+添加企业</router-link></span>
-        </p>
       </div>
-    </div>
-  </div>
 </template>
 
 <script>
-<<<<<<< HEAD
+ import Session from '@/utils/session'
     export default {
         data(){
             return {
-                biaoqian: [],//标签数组
                 index:0,
                 ktsass: true,//开通sass
                 moren: true,//开通默认
@@ -130,15 +101,20 @@
                 arr: []//企业列表信息
             }
         },
+        computed :{
+            setTokenPage() {
+                return this.$url.web + '/set-token.html'
+            }
+        },
         mounted(){
             this.boxheight();
             // console.log("我是子路由的"+this.comdata)
-            this.addqy();
             let mytoken = JSON.parse(localStorage.getItem('app-state-session'));
             let token = String(mytoken.token);
             // console.log(mytoken.account)
+            console.log(this.$url.api)
             this.$ajax({
-                    url:"http://192.168.253.31:8560/api/account/accountCenter/company/list",
+                    url: "/api/account/accountCenter/company/list",
                     method: 'get',
                     params: {
                         mobile: mytoken.account.mobile
@@ -158,17 +134,17 @@
         },
         methods: {
             //设置默认弹窗
-            szmoren(i){
+            showDefaultWin(i){
                 this.index = i;
                 $(".szmoren").css("display","block");
                 $(".zhezhao").css("display","block");
             },
             //确认默认
-            addmoren(){
+            setDefault(){
                 let i = this.index;
                 let token = this.mytoken.token;
                 this.$ajax({
-                    url:'http://192.168.253.31:8560/api/account/accountCenter/bind/defaultCompany',
+                    url: '/api/account/accountCenter/bind/defaultCompany',
                     method: 'post',
                     data:{
                         companyId: this.arr[i].id,
@@ -189,13 +165,14 @@
                 
             },
             //进入服务
-            jinru(id){
+            selectServe(id){
                 let token = this.mytoken.token;
+                const frame = window.frames[window.frames.length - 1];
                 this.$ajax({
-                    url: 'http://192.168.253.31:8560/api/auth/switch/company?companyId='+id,
+                    url: '/api/auth/switch/company?companyId='+id,//http://192.168.253.31:8560
                     method :'get',
                     headers: {
-                        "Authorization":token,
+                        "Authorization":token
                     }
                 })
                 .then(res=>{
@@ -204,10 +181,8 @@
                     session.account.companyId=id;
                     session.span = session.timestamp - new Date().getTime();
                     session.token=mytoken;
-                    debugger
-                    localStorage.setItem('app-state-session',JSON.stringify(session));
-                    window.location.href = 'http://192.168.0.181';
-                    console.log('请求成功',res)
+                    frame.postMessage(JSON.stringify(session), '*');
+                    window.location.href = me.$url.web
                 })
                 .catch(err=>{
                     console.log('请求失败',err)
@@ -215,36 +190,28 @@
             
             },
             //开通sass
-            kaitong(){
+            showOpenServeWin(){
                 $(".ktsass").css('display','block');
                 $(".zhezhao").css("display","block");
                 this.ktsass = true;
             },
-            addsass(){//确认sass
+            confirmSaas(){//确认sass
                 this.ktsass = false;
             },
             //进入服务
-            offfuwu(){
+            showServeWin(){
                 $(".ktsass").css('display','none');
                 $(".zhezhao").css("display","none");
             },
             //查看企业详情
-            chakanxq(){
+            getEnterpriseInfo(d){
                 document.documentElement.scrollTop = 0;
-                this.$router.push({name:'details',});
+                this.$router.push({path:'/details',query:{content:d}});
             },
              //添加企业
-            tianjia(){
+            addEnterprise(){
                 document.documentElement.scrollTop = 0;
             },
-            addqy(){
-
-            },
-             //添加企业标签
-            addbiaoqian(){
-                this.biaoqian.push(this.$refs.biaoqian.value)
-                this.tjbiaoqian = false;
-            },
             //关闭弹窗
             guanbitc(){
                 $(".tanchuang").css("display","none");
@@ -259,82 +226,12 @@
                     $(".gs-qiyebox").css("height",'')
                 }
             },
-=======
-  export default {
-    data() {
-      return {
-        showModal: false,
-        biaoqian: [],//标签数组
-        ktsass: true,//开通sass
-        moren: true,//开通默认
-        arr: [
-          {name: "公司", time: "2018年11月20", kaitong: true, moren: true},
-          {name: "df公司", time: "2018年11月23", kaitong: false, moren: false},
-          {name: "fdf公司", time: "2018年11月24", kaitong: true, moren: false},
-        ]
-      }
-    },
-    mounted() {
-      this.boxheight();
-    },
-    methods: {
-      //没有内容也要有一定的高度
-      boxheight() {
-        let H = $(".gs-qiyebox").height();
-        if (H <= 500) {
-          $(".gs-qiyebox").css("height", '500px')
-        } else {
-          $(".gs-qiyebox").css("height", '')
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
         }
-      },
-      //添加企业
-      tianjia() {
-        document.documentElement.scrollTop = 0;
-      },
-      //添加企业标签
-      addbiaoqian() {
-        this.biaoqian.push(this.$refs.biaoqian.value)
-        this.tjbiaoqian = false;
-      },
-      //关闭弹窗
-      guanbitc() {
-        $(".tanchuang").css("display", "none");
-        this.showModal = false
-      },
-      //设置默认弹窗
-      szmoren() {
-        $(".szmoren").css("display", "block");
-        $(".zhezhao").css("display", "block");
-        this.showModal = true
-      },
-      //确认默认
-      addmoren() {
-        this.moren = false;
-      },
-      //开通sass
-      kaitong() {
-        $(".ktsass").css('display', 'block');
-        $(".zhezhao").css("display", "block");
-        this.ktsass = true;
-      },
-      addsass() {//确认sass
-        this.ktsass = false;
-      },
-      //进入服务
-      offfuwu() {
-        $(".ktsass").css('display', 'none');
-        $(".zhezhao").css("display", "none");
-      },
-      //查看企业详情
-      chakanxq() {
-        document.documentElement.scrollTop = 0;
-        this.$router.push({name: 'details',});
-      }
     }
-  }
 </script>
 
 <style scoped>
-
+.zhezhao {
+    display: none;
+}
 </style>

+ 1 - 5
frontend/saas-portal-web/src/components/conenter/enterprise.vue

@@ -17,15 +17,11 @@
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
                 <ul id="nav" class="nav navbar-nav menu">
-                    <!-- <li><a href="#"><span>首页</span></a></li> -->
                     <li><router-link to="/home"><a href="#"><span>首页</span></a></router-link></li>
-                    <li><a href="#"><span>特色</span></a></li>
-                    <!-- <li><router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link></li> -->
-                    <li><a href="#"><span>功能</span></a></li>
                     <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
                     <li>
                         <a href="#"><span class="">{{mytoken.realname}}</span></a>
-                        <a href=""><span class="">账户中心</span></a>
+                        <a href=""><span class="">退出</span></a>
                     </li>
                 </ul>
             </div>

+ 42 - 374
frontend/saas-portal-web/src/components/conenter/home.vue

@@ -1,5 +1,4 @@
 <template>
-<<<<<<< HEAD
     <div>
 		<div id="navigation" class="navbar-inverse navbar-fixed-top animated-header" style="padding: 3px;">
         <div class="container">
@@ -12,49 +11,16 @@
                 </button>
                 <h1 class="navbar-brand">
                     <a href="#">
-                        <img class="logo-img" src="../../../static/img/assets/dalogo3x.png" alt="">
+                        <img class="logo-img" src="/static/img/assets/dalogo3x.png" alt="">
                     </a>
                 </h1>
             </div>
             <div class="collapse navbar-collapse navbar-right" role="navigation">
-                <ul id="nav" class="nav navbar-nav menu">
-                    <li><a href="#"><span>首页</span></a></li>
-                    <!-- <li><a href="#feature"><span>特色</span></a></li> -->
-                    <li @click= "home"><router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link></li>
-                    <li><a href="#service"><span>功能</span></a></li>
-                    <li><a href="https://uas.usoftchina.com/about" target="_blank"><span>关于我们</span></a></li>
-                    <li class="login">
-                        <!-- <span class="btn1"><img src="../../../static/img/assets/denglu3x.png" alt="">登录  &nbsp;</span>
-                        <span class="register"><img src="../../../static/img/assets/zhuce3x.png" alt="">注册</span> -->
-                        <span @click= "btn1"><img src="../../../static/img/assets/denglu3x.png" alt="">登录  &nbsp;</span>
-                        <span @click= "register"><img src="../../../static/img/assets/zhuce3x.png" alt="">注册</span>
-                    </li>
-                </ul>
-            </div>
-=======
-  <div>
-    <div id="navigation" class="navbar-inverse navbar-fixed-top animated-header">
-      <div class="container">
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <h1 class="navbar-brand">
-            <a href="#">
-              <img class="logo-img" src="/static/img/assets/dalogo3x.png" alt="">
-            </a>
-          </h1>
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
-        </div>
-        <div class="collapse navbar-collapse navbar-right" role="navigation">
           <ul id="nav" class="nav navbar-nav menu">
             <li><a href="#"><span>首页</span></a></li>
-            <!-- <li><a href="#feature"><span>特色</span></a></li> -->
             <li @click="home">
-              <router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link>
+              <a href="#"><span>特色</span></a>
+              <!-- <router-link to="/enterprise"><a href="#"><span>特色</span></a></router-link> -->
             </li>
             <li><a href="#service"><span>功能</span></a></li>
             <li><a href="#prototype"><span>帮助中心</span></a></li>
@@ -67,116 +33,40 @@
 							<span class="user-info">
 								<img src="/static/img/assets/denglu3x.png" alt="">
 								<span id="user-info">{{account.realname || account.username}}</span>
-							</span>|
-              <a href="#">账户管理</a>
+							</span>
+              <span>退出</span>    |
+              <router-link to="/enterprise"><a href="#"><span>账户管理</span></a></router-link>
+              <!-- <a href="#">账户管理</a> -->
             </li>
           </ul>
         </div>
-      </div>
+        </div>
+        
     </div>
 
 
     <main class="site-content" role="main">
       <!-- 遮罩 -->
-      <div class="zhezhao" v-if="isLogin || isRegister"></div>
+      <div class="zhezhao" v-if="isLogin || isRegister || isexperience"></div>
       <div class="box" v-if="isLogin || isRegister">
         <div>
-          <img @click="closeModal" class="tc-on xs" style="float: right;padding: 10px"
+          <img @click="closeModal" class="tc-on shut"
                src="/static/img/qiye/chahao.png" alt="">
         </div>
         <iframe width="430" height="440" :src="ssoPage"></iframe>
         <iframe hidden :src="setTokenPage"></iframe>
       </div>
+      <div class="tiyan" v-if="isexperience">
+        我是体验
+        <img @click="Closeexperience" class="tc-on shut"
+               src="/static/img/qiye/chahao.png" alt="">
+      </div>
+
       <!--Home Slider==================================== -->
       <section id="home-slider">
         <div id="slider" class="sl-slider-wrapper">
           <div class="sl-slider">
 
-<<<<<<< HEAD
-        <main class="site-content" role="main">
-			<!-- 遮罩 -->
-			<div class="zhezhao"></div>   
-			<div id="box" class="box">
-				<img @click="tcon" class="tc-on tc-guanbi" style="position: absolute;top:10px;right:10px" src="../../../static/img/qiye/chahao.png" alt="">
-				<iframe width="430" height="440"></iframe>
-			</div>
-			<div class="box tiyan" >
-				<img @click="tcon" class="tc-on tc-guanbi" style="position: absolute;top:10px;right:10px" src="../../../static/img/qiye/chahao.png" alt="">
-				fdsfdfdf
-			</div>
-<!--Home Slider==================================== -->
-		<section id="home-slider">
-            <div id="slider" class="sl-slider-wrapper"> 
-				<div class="sl-slider">
-				
-					<div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="-25" data-slice2-rotation="-25" data-slice1-scale="2" data-slice2-scale="2">
-						<div class="mask-overly"></div>
-						<div class="bg-img slider-1">
-                            <img src="../../../static/img/assets/beijing2x.png" alt="">
-                        </div>
-						<!-- 首页内容 -->
-						<div class="my-text">
-							
-							<button @click="tiyan" class='my-tiyan dianji'>立即体验</button> 
-						</div>
-						<div class="slide-caption">
-                        	<div class="caption-content"></div>
-                    	</div>
-					</div>
-				</div>
-			</div>
-		</section>
-		
-    <!-- End Home SliderEnd==================================== -->
-			<!-- 特色 -->
-			<section id="feature">
-				<div class="container ts-worp">
-						<div class="section-title text-center">
-							<p class="ts-title">我们的特色</p>
-							<p class="ts-text">云端部署 &nbsp;&nbsp; 轻量应用</p>
-						</div>
-						<div class="ts-box">
-							<div style="margin:50px 0;">
-								<img  class="ts-img" src="../../../static/img/features.jpg" alt="">
-							</div>
-							<div class="right right-text">
-								<img class="ts-minimg" src="../../../static/img/assets/1.png" alt="">
-								<div class="ts-mintext">
-									<p style="font-size: 32px !important;margin-bottom: 36px;"><img class="ts-textimg" src="../../../static/img/assets/xunzhao@2x.png" alt="">迅速找到您想要的</p>
-									<p>寻找供应商资源</p>
-									<p>寻找产品货源  寻找产品资料</p>
-								</div>
-							</div>
-						</div>
-						<div class="ts-box">
-							<div class="left left-text">
-								<img class="ts-minimg" style="left:0;" src="../../../static/img/assets/2.png" alt="">
-								<div class="ts-mintext ts-lefttext">
-									<p style="font-size: 32px !important;margin-bottom: 36px;">直观看到您想看的<img class="ts-textleftimg" src="../../../static/img/assets/fen xi@2x.png" alt=""></p>
-									<p>每日订单量、收付款、月度销售分析、采购分析</p>
-									<p>让你成为企业经营老司机</p>
-								</div>
-							</div>
-							<div style="margin:50px 0;">
-								<img  class="ts-img" src="../../../static/img/features.jpg" alt="">
-							</div>
-						</div>
-						<div class="ts-box">
-							<div style="margin:50px 0;">
-								<img  class="ts-img" src="../../../static/img/features.jpg" alt="">
-							</div>
-							<div class="right right-text">
-								<img class="ts-minimg" src="../../../static/img/assets/1.png" alt="">
-								<div class="ts-mintext" style="right: 145px;">
-									<p style="font-size: 32px !important;margin-bottom: 36px;"><img class="ts-textimg" src="../../../static/img/assets/kuaisu@2x.png" alt="">快速上手 生意简单做</p>
-									<p>移动端的交互体验</p>
-									<p>简短清晰的业务流程 让你三分钟上手</p>
-								</div>
-							</div>
-						</div>
-				</div>
-			</section>
-=======
             <div class="sl-slide" data-orientation="horizontal" data-slice1-rotation="-25" data-slice2-rotation="-25"
                  data-slice1-scale="2" data-slice2-scale="2">
               <div class="mask-overly"></div>
@@ -185,7 +75,8 @@
               </div>
               <!-- 首页内容 -->
               <div class="my-text">
-                <button class='my-tiyan'>立即体验</button>
+                <button class='my-tiyan' @click="experience">立即体验</button>
+
               </div>
               <div class="slide-caption">
                 <div class="caption-content"></div>
@@ -194,7 +85,6 @@
           </div>
         </div>
       </section>
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
 
       <!-- End Home SliderEnd==================================== -->
 
@@ -428,247 +318,14 @@
   import {subscribe, disconnect} from '@/api/socket'
   import Session from '@/utils/session'
 
-<<<<<<< HEAD
-		},
-		methods:{
-			home(){
-                document.documentElement.scrollTop = 0;
-			},
-			tiyan(){ //体验
-				console.log(123)
-				$(".tiyan").css("display","block");
-				$(".zhezhao").css("display","block");
-			},
-			btn1(){ //登录
-				var Store = (function(){
-					var storeKey = 'app-state', store = window.localStorage;
-					return {
-						get: function(key, defaultValue) {
-							var value = store.getItem(storeKey + '-' + key);
-							return value === undefined? defaultValue : JSON.parse(value);
-						},
-						set: function(key, value) {
-							store.setItem(storeKey + '-' + key, JSON.stringify(value));
-						}
-					};
-				})();
-				var Session = (function(){
-					var key = 'session';
-					return {
-						load: function() {
-							return Store.get(key);
-						},
-						loadData: function(data) {
-							data.span = data.timestamp - new Date().getTime();
-							Store.set(key, data);
-						},
-						isValid: function() {
-							var token = this.load();
-							return token && token.timestamp + token.expire * 1000 > new Date().getTime() + token.span;
-						},
-						get: function(prop) {
-							var token = this.load();
-							return token ? token[prop] : null;
-						},
-						set: function(prop, value) {
-							var token = this.load();
-							if (token) {
-								token[prop] = value;
-								Store.set(key, token);
-							}
-						}
-					}
-				})();
-				var setUserProfile = function(account) {
-					if (account) {
-						$(".login").css("display","none");
-						// 显示用户信息
-						$("#user-info").text(account.realname || account.username);
-						$(".profile").css("display","block")
-					} else {
-						$(".login").css("display","block");
-						$(".profile").css("display","none")
-					}
-				};
-				// 已经登录过从Store取出信息
-				setUserProfile(Session.get('account'));
-				// socket
-				var listenOnCallback = function(clientId, resolve) {
-					var socket = new SockJS(env.server.baseUrl + "/ws");
-					var stompClient = Stomp.over(socket);
-					stompClient.connect({}, function(frame) {
-						stompClient.subscribe('/clients/' + clientId + '/sso/callback', function(message){
-							stompClient.disconnect(function(){
-								resolve(JSON.parse(message.body));
-							});
-						});
-					});
-				};
-				// 系统页面token
-				var Frontend = (function(){
-					var frame;
-					return {
-						init: function() {
-							$('body').append('<iframe id="frontend" hidden src="' + 
-								env.frontend.baseUrl + '/set-token.html"></iframe>');
-							frame = window.frames[window.frames.length - 1];
-						},
-						set: function(session, callback) {
-							window.addEventListener('message', callback, false);
-							frame.postMessage(JSON.stringify(session), '*');
-						},
-						redirect: function() {
-							window.location.href = env.frontend.baseUrl;
-						}
-					};
-				})();
-				Frontend.init();
-				var me = this;
-				if ($('#box').css('display') =="none") {
-					// 随机生成clientId
-					var clientId = Math.random().toString(36).substr(2);
-					$(".zhezhao").css("display","block");
-					$('#box iframe').attr('src', env.server.ssoUrl + '/sassLogin?appId=sp&baseUrl=' + 
-						encodeURIComponent(env.server.baseUrl + '/api/auth/sso/callback/' + clientId));
-					$('#box').show();
-					
-					listenOnCallback(clientId, function(data){
-						var session = data.token, account = data.account;
-						account.companies = account.companies || [];
-						session.account = account;
-						Session.loadData(session);
-						setUserProfile(account);
-						$('#box').hide();
-						$(".zhezhao").css("display","none");
-						// 系统页面token设置
-						Frontend.set(session, function(){
-							if (!account.companyId) {
-								// 登录成功跳转到企业设置
-								console.log("跳转前");
-								me.$router.push({path:'/enterprise',query: {mydata :account}});
-								me.$store.state.data = account;
-								console.log("跳转后"); 
-							} else {
-								//如果开通过sass直接跳转到sass页面
-								Frontend.redirect();
-							}
-						});
-					});
-				} else {
-					$('#box').hide();
-					$(".zhezhao").css("display","none")
-				}
-			},
-			register(){
-				if ($('#box').css('display') =="none") {
-					$(".zhezhao").css("display","block");
-					$('#box iframe').attr('src', env.server.ssoUrl + '/sassLogin/register?appId=sp');
-					$('#box').show();
-				} else {
-					$('#box').hide();
-					$(".zhezhao").css("display","none")
-				}
-			},
-			tcon(){
-				$('#box-zc').css('display','none');
-				$('#box').css('display','none');
-				$(".zhezhao").css("display","none");
-				$(".tiyan").css("display","none");
-			},
-			zdtoken(){
-				var Store = (function(){
-					var storeKey = 'app-state', store = window.localStorage;
-					return {
-						get: function(key, defaultValue) {
-							var value = store.getItem(storeKey + '-' + key);
-							return value === undefined? defaultValue : JSON.parse(value);
-						},
-						set: function(key, value) {
-							store.setItem(storeKey + '-' + key, JSON.stringify(value));
-						}
-					};
-				})();
-				var Session = (function(){
-					var key = 'session';
-					return {
-						load: function() {
-							return Store.get(key);
-						},
-						loadData: function(data) {
-							data.span = data.timestamp - new Date().getTime();
-							Store.set(key, data);
-						},
-						isValid: function() {
-							var token = this.load();
-							return token && token.timestamp + token.expire * 1000 > new Date().getTime() + token.span;
-						},
-						get: function(prop) {
-							var token = this.load();
-							return token ? token[prop] : null;
-						},
-						set: function(prop, value) {
-							var token = this.load();
-							if (token) {
-								token[prop] = value;
-								Store.set(key, token);
-							}
-						}
-					}
-				})();
-				var setUserProfile = function(account) {
-					if (account) {
-						$(".login").css("display","none");
-						// 显示用户信息
-						$("#user-info").text(account.realname || account.username);
-						$(".profile").css("display","block")
-					} else {
-						$(".login").css("display","block");
-						$(".profile").css("display","none")
-					}
-				};
-				// 已经登录过从Store取出信息
-				setUserProfile(Session.get('account'));
-				// socket
-				var listenOnCallback = function(clientId, resolve) {
-					var socket = new SockJS(env.server.baseUrl + "/ws");
-					var stompClient = Stomp.over(socket);
-					stompClient.connect({}, function(frame) {
-						stompClient.subscribe('/clients/' + clientId + '/sso/callback', function(message){
-							stompClient.disconnect(function(){
-								resolve(JSON.parse(message.body));
-							});
-						});
-					});
-				};
-				// 系统页面token
-				var Frontend = (function(){
-					var frame;
-					return {
-						init: function() {
-							$('body').append('<iframe id="frontend" hidden src="' + 
-								env.frontend.baseUrl + '/set-token.html"></iframe>');
-							frame = window.frames[window.frames.length - 1];
-						},
-						set: function(session, callback) {
-							window.addEventListener('message', callback, false);
-							frame.postMessage(JSON.stringify(session), '*');
-						},
-						redirect: function() {
-							window.location.href = env.frontend.baseUrl;
-						}
-					};
-				})();
-				Frontend.init();
-			}
-		}
-=======
   export default {
     data() {
       return {
         isLogin: false,
         isRegister: false,
         clientId: null,
-        account: null
+        account: null,
+        isexperience: false
       }
     },
     mounted() {
@@ -704,6 +361,7 @@
           Session.set(session)
           const frame = window.frames[window.frames.length - 1]
           window.addEventListener('message', () => {
+           if(me.isLogin){
             me.isLogin = false
             if (!account.companyId) {
               // 添加企业
@@ -712,6 +370,7 @@
               // 跳转应用页面
               window.location.href = me.$url.web
             }
+           } 
           }, false)
           frame.postMessage(JSON.stringify(session), '*')
         })
@@ -733,26 +392,35 @@
           me.isLogin = false
           me.isRegister = false
         })
+      },
+      //体验
+      experience(){
+        this.isexperience = true;
+      },
+      //关闭体验
+      Closeexperience(){
+        this.isexperience = false;
       }
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
     }
   }
 </script>
 
 <style scoped>
-<<<<<<< HEAD
-.tc-guanbi {
-	cursor: pointer;
+.shut {
+  cursor: pointer;
+  position: absolute;
+  top: 10px;
+  right: 10px;
 }
 .tiyan {
-	display: none;
+  position: absolute;
+  top: 50%;
+  left: 50%;
 	width: 400px;
 	height: 200px;
 	margin-left: -200px;
-    margin-top: -100px;
+  margin-top: -100px;
+  z-index: 10001;
+  background: white;
 }
 </style>
-=======
-
-</style>
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5

+ 7 - 38
frontend/saas-portal-web/src/components/conenter/qiyexiangxi.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
         <!-- 企业详细信息 -->
-        <div v-if= "xiugai">
+        <div v-if="xiugai">
             <div class="gs-worp qy-worp" style="width:100%">
                 <div class="qy-title">
                     <span><img @click= "gobick" style="float: left;padding: 20px; cursor:pointer" src="../../../static/img/fanhui.png" alt=""></span>
@@ -10,10 +10,9 @@
                 </div>
                 <div class="qy-conent">
                     <ul>
-                        <li><span class="qy-biaoti">公司名称</span><span>飞飞有限公司</span></li>
+                        <li><span class="qy-biaoti">公司名称</span><span>{{content.address}}</span></li>
                         <li><span class="qy-biaoti">所属行业</span><span>飞飞有限公司</span></li>
-                        <li><span class="qy-biaoti">公司地址</span><span>飞飞有限公司</span></li>
-                        <!-- <li><span class="qy-biaoti">营业范围</span><span class="qy-biaoqian">飞飞标签</span><span class="qy-biaoqian">飞飞标签</span></li> -->
+                        <li><span class="qy-biaoti">公司地址</span><span>{{content.address}}</span></li>
                     </ul>
                 </div>
             </div>
@@ -44,7 +43,7 @@
                     <ul>
                         <li>
                             <span class="qy-biaoti"><span class="xingxing">*</span>公司名称</span>
-                            <span>飞飞有限公司</span>
+                            <span>{{content.address}}</span>
                         </li>
                         <li>
                             <span class="qy-biaoti">所属行业</span>
@@ -52,30 +51,8 @@
                         </li>
                         <li>
                             <span class="qy-biaoti">公司地址</span>
-                            <span>飞飞有限公司</span>
+                            <span>{{content.address}}</span>
                         </li>
-                        <!-- <li style="height:60px;">
-                            <span class="qy-biaoti"><span class="xingxing">*</span>注册地址</span>
-                            <span>飞飞有限公司</span>
-                        </li>
-                        <li>
-                            <span class="qy-biaoti">所属行业</span>
-                            <input type="text">
-                        </li>
-                        <li class="over">
-                            <span class="qy-biaoti">公司标签</span>
-                            <div class="addbiaoqian">
-                                <div style="overflow: hidden;padding-top: 5px;">
-                                    <span v-for="(b , i) in biaoqian" :key="i" class="xg-biaoqian tj-bqleft">
-                                        {{b}}
-                                        <img class="qcbiaoqian xs" @click="qcbiaoqian(i)" src="../../../static/img/qiye/CHA HAO.png"/>
-                                    </span>
-                                </div>
-                                <div>
-                                    <input style="100%" type="text" placeholder="飞飞公司" />
-                                </div>
-                            </div>
-                        </li> -->
                     </ul>
                 </div>
             </div>
@@ -101,15 +78,11 @@
         data(){
             return {
                 xiugai:true,
-                biaoqian: [
-                    'feifei',
-                    '飞飞公司',
-                    '飞飞企业',
-                ]
+                content: this.$route.query.content,
             }
         },
         mounted(){
-
+            // console.log(this.content)
         },
         methods: {//修改企业信息
             xiugaiqiye(){
@@ -126,10 +99,6 @@
                 document.documentElement.scrollTop = 0;
                 this.xiugai = true;
             },
-            //清除标签
-            qcbiaoqian(i){
-                this.biaoqian.splice(i,1);
-            },
             //返回
             gobick(){
                 // this.$router.go(-1); 

+ 1 - 0
frontend/saas-portal-web/src/main.js

@@ -12,6 +12,7 @@ Vue.config.productionTip = false
 
 // 注入url配置
 Vue.prototype.$url = process.env.BASE_URL
+Axios.defaults.baseURL = 'http://192.168.253.31:8560'
 /* eslint-disable no-new */
 new Vue({
   el: '#app',

+ 3 - 0
frontend/saas-portal-web/static/css/gongsi.css

@@ -141,6 +141,9 @@
     position: absolute;
     top: 50%;
     left: 50%;
+    width: 70%;
+    margin-left: 30%;
+    height: 50%;
     transform: translate(-100%,-50%);
 }
 .gs-xqright {

+ 0 - 7
frontend/saas-portal-web/static/data.json

@@ -1,7 +0,0 @@
-{ "gsdata": [
-    { "Name": "飞飞公司", "lastName":"McLaughlin", "email": "aaaa" },
-    
-    { "Name": "ff飞飞公司", "lastName":"Hunter", "email": "bbbb"},
-    
-    { "Name": "中兴公司", "lastName":"Harold", "email": "cccc" }
-]}

+ 0 - 31
frontend/saas-portal-web/static/js/mains.js

@@ -36,55 +36,34 @@ $(function() {
             } ),
 
             init = function() {
-
                 initEvents();
-
             },
             initEvents = function() {
-
                 // add navigation events
                 $navArrows.children( ':last' ).on( 'click', function() {
-
                     slitslider.next();
                     return false;
-
                 } );
 
                 $navArrows.children( ':first' ).on( 'click', function() {
-
                     slitslider.previous();
                     return false;
-
                 } );
-
                 $nav.each( function( i ) {
-
                     $( this ).on( 'click', function( event ) {
-
                         var $dot = $( this );
-
                         if( !slitslider.isActive() ) {
-
                             $nav.removeClass( 'nav-dot-current' );
                             $dot.addClass( 'nav-dot-current' );
-
                         }
-
                         slitslider.jump( i + 1 );
                         return false;
-
                     } );
-
                 } );
-
             };
-
             return { init : init };
-
     })();
-
     Page.init();
-
 });
 
 
@@ -157,7 +136,6 @@ $(document).ready(function(){
 
     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
 
-<<<<<<< HEAD
     // $(window).resize(function(){'use strict',
     //     $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
     // });
@@ -165,15 +143,6 @@ $(document).ready(function(){
 	
 	
 	$("#works, #testimonial").owlCarousel({	 
-=======
-    $(window).resize(function(){'use strict',
-        $('#home-slider, #slider, .sl-slider, .sl-content-wrapper').css('height',slideHeight);
-    });
-
-
-
-	$("#works, #testimonial").owlCarousel({
->>>>>>> 78b2728ff4e9a3df7d7d732ffc4f40a824a273c5
 		navigation : true,
 		pagination : false,
 		slideSpeed : 700,

+ 233 - 20
frontend/saas-web/app/view/money/report/AccountDetails.js

@@ -1,37 +1,67 @@
 Ext.define('saas.view.money.report.AccountDetails', {
-    extend: 'saas.view.core.report.ReportPanel',
+    extend: 'Ext.grid.Panel',
     xtype: 'monry-report-accountdetails',
 
     controller: 'money-report-accountdetails',
     viewModel: 'money-report-accountdetails',
 
     viewName: 'money-report-accountdetails',
+    autoScroll: true,
+    frame:true,
+    layout:'fit',
+    //工具类
+    FormUtil: Ext.create('saas.util.FormUtil'),
+    BaseUtil: Ext.create('saas.util.BaseUtil'),
 
     // groupField: null,
-    listUrl: '/api/money/report/accountdetails',
+    dataUrl: '/api/money/report/accountdetails',
     defaultCondition: null,
     reportTitle: '核销对账表',
     QueryWidth:0.25,
     //筛选:客户/供应商、日期、单据类型(必填)
-    searchItems: [ {
-        xtype: 'vendorDbfindTrigger',
-        name: 've_name',
-        fieldLabel: '供应商名称',
-        columnWidth: 0.25,
-        // allowBlank:false
-    }, {
-        xtype: 'customerDbfindTrigger',
-        name: 'cu_name',
-        fieldLabel: '用户名称',
-        columnWidth: 0.25,
-        // allowBlank:false
+    tbar: [{
+        width: 150,
+        name: 'sl_kind',
+        xtype: 'textfield',
+        emptyText : '单据类型'
     },{
-        xtype: 'condatefield',
+        width: 400,
         name: 'date',
-        fieldLabel: '单据日期',
-        columnWidth: 0.5
-    }],
-    reportColumns: [
+        xtype: 'condatefield',
+        emptyText : '单据日期'
+    },{
+        width: 200,
+        name: 've_name',
+        xtype: 'textfield',
+        emptyText : '供应商名称'
+    },{
+            width: 200,
+            name: 'cu_name',
+            xtype: 'textfield',
+            emptyText : '客户名称'
+    },{
+        cls:'x-formpanel-btn-orange',
+        xtype:'button',
+        text:'查询',
+        listeners: {
+            click:function(b){
+                var grid = b.ownerCt.ownerCt;
+                var tbar = b.ownerCt;
+                grid.condition = '';
+                var items = [];
+                var fields = tbar.items.items.map(f => f.name);
+                Ext.each(fields, function(f, index){
+                    var field = tbar.down('[name='+f+']');
+                    if(field){
+                        items.push(field);
+                    }
+                });
+                grid.condition = grid.getCondition(items);
+                grid.store.loadPage(1);
+            }
+        }
+    },'->'],
+    columns: [
         {
             text: 'id',
             dataIndex: 'pi_id',
@@ -97,5 +127,188 @@ Ext.define('saas.view.money.report.AccountDetails', {
             //     var format = '0,000.' + xr.join();
             //     return Ext.util.Format.number(v, format);
             // }
-        }]
+        }],
+
+    dbSearchFields: [],
+    condition:'',
+
+    initComponent: function() {
+        var me = this;
+        if(me.columns){
+            var fields = me.columns.map(column => column.dataIndex);
+            me.store = Ext.create('Ext.data.Store',{
+                fields:fields,
+                autoLoad: true,
+                pageSize: 11,
+                data: [],
+                proxy: {
+                    timeout:8000,
+                    type: 'ajax',
+                    url: me.dataUrl,
+                    actionMethods: {
+                        read: 'GET'
+                    },
+                    reader: {
+                        type: 'json',
+                        rootProperty: 'data.list.list',
+                        totalProperty: 'data.list.total',
+                    }
+                },
+                listeners: {
+                    beforeload: function (store, op) {
+                        var condition = me.condition;
+                        if (Ext.isEmpty(condition)) {
+                            condition = "";
+                        }
+                        Ext.apply(store.proxy.extraParams, {
+                            number: op._page,
+                            size: store.pageSize,
+                            condition: JSON.stringify(condition)
+                        });
+                    }
+                }
+            });
+
+            Ext.apply(me, {
+                dockedItems:[{
+                    xtype: 'pagingtoolbar',
+                    dock: 'bottom',
+                    displayInfo: true,
+                    store: me.store
+                }]
+            });
+        }
+        me.callParent(arguments);
+    },
+
+    getGridSelected:function(type){
+        var isErrorSelect = false;
+        var checkField = this.statusCodeField;
+        var me = this,
+            items = me.selModel.getSelection(),
+            data = new Array() ;
+        Ext.each(items, function(item, index){
+            if(!Ext.isEmpty(item.data[me.idField])){
+                var o = new Object();
+                if(me.idField){
+                    o['id'] = item.data[me.idField];
+                }
+                if(me.codeField){
+                    o['code'] = item.data[me.codeField];
+                }
+                if(type&&type==item.data[checkField]){
+                    isErrorSelect = true
+                }
+                data.push(o);
+            }
+        });
+        if(isErrorSelect){
+            return false;
+        }
+        return data;
+    },
+
+    /**
+     * 获得过滤条件
+     */
+    getCondition: function(items) {
+        var me = this,
+            conditions = [];
+
+        for(var i = 0; i < items.length; i++) {
+            var item = items[i];
+            var field = item.name,
+                func = item.getCondition,
+                value = item.value,
+                condition;
+
+            if(typeof func == 'function') {
+                condition = {
+                    type: 'condition',
+                    value: func(value)
+                }
+            }else {
+                var xtype = item.xtype || 'textfield',
+                    type = item.fieldType || me.getDefaultFieldType(xtype),
+                    operation = item.operation || me.getDefaultFieldOperation(xtype),
+                    conditionValue = me.getConditionValue(xtype, value);
+
+                if(!conditionValue) {
+                    continue;
+                }
+                condition = {
+                    type: type,
+                    field: field,
+                    operation: operation,
+                    value: conditionValue
+                }
+            }
+            conditions.push(condition);
+        };
+        return conditions;
+    },
+
+    getDefaultFieldType: function(xtype) {
+        var type;
+
+        if(Ext.Array.contains(['numberfield'], xtype)) {
+            type = 'number';
+        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
+            type = 'date';
+        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
+            type = 'enum';
+        }else {
+            type = 'string';
+        }
+
+        return type;
+    },
+
+    getDefaultFieldOperation: function(xtype) {
+        var operation;
+
+        if(Ext.Array.contains(['numberfield'], xtype)) {
+            operation = '=';
+        }else if(Ext.Array.contains(['datefield'], xtype)) {
+            operation = '=';
+        }else if(Ext.Array.contains(['condatefield'], xtype)) {
+            operation = 'between';
+        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
+            operation = 'in';
+        }else {
+            operation = 'like';
+        }
+
+        return operation;
+    },
+
+    /**
+     * 处理部分字段值
+     */
+    getConditionValue: function(xtype, value) {
+        var conditionValue;
+        if(xtype == 'datefield') {
+            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
+        }else if(xtype == 'condatefield') {
+            var from = value.from,
+                to = value.to;
+
+            conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
+        }else if(xtype == 'combobox' || xtype == 'combo') {
+            conditionValue = '\'' + value + '\'';
+        }else if(xtype == 'multicombo') {
+            conditionValue = value.map(function(v) {
+                return '\'' + v.value + '\'';
+            }).join(',');
+        }else {
+            conditionValue = value;
+        }
+
+        return conditionValue;
+    },
+
+    refresh:function(){
+        //debugger
+    }
+
 });

+ 27 - 21
frontend/saas-web/app/view/money/report/AccountDetailsController.js

@@ -1,28 +1,34 @@
 Ext.define('saas.view.money.report.AccountDetailsController', {
-    extend: 'saas.view.core.report.ReportPanelController',
+    extend: 'saas.view.core.base.BasePanelController',
     alias: 'controller.money-report-accountdetails',
+    // init: function (form) {
+    //     this.control({
+    //         // 供应商编号
+    //         'dbfindtrigger[name=ve_name]':{
+    //             beforerender:function(f){
+    //                 Ext.apply(f,{
+    //                     dbfinds:[{
+    //                         from:'ve_name',to:'ve_name'
+    //                     }],
+    //                 }) ;
+    //             }
+    //         },
+    //         // 客户编号
+    //         'dbfindtrigger[name=cu_name]':{
+    //             beforerender:function(f){
+    //                 Ext.apply(f,{
+    //                     dbfinds:[{
+    //                         from:'cu_name',to:'cu_name'
+    //                     }],
+    //                 }) ;
+    //             }
+    //         }
+    //     });
+    // }
+
     init: function (form) {
+        var me = this;
         this.control({
-            // 供应商编号
-            'dbfindtrigger[name=ve_name]':{
-                beforerender:function(f){
-                    Ext.apply(f,{
-                        dbfinds:[{
-                            from:'ve_name',to:'ve_name'
-                        }],
-                    }) ;
-                }
-            },
-            // 客户编号
-            'dbfindtrigger[name=cu_name]':{
-                beforerender:function(f){
-                    Ext.apply(f,{
-                        dbfinds:[{
-                            from:'cu_name',to:'cu_name'
-                        }],
-                    }) ;
-                }
-            }
         });
     }
 });

+ 1 - 1
frontend/saas-web/app/view/money/report/AccountDetailsMode.js

@@ -1,4 +1,4 @@
 Ext.define('saas.view.money.report.AccountDetailsModel', {
-    extend: 'saas.view.core.report.ReportPanelModel',
+    extend: 'saas.view.core.base.BasePanelModel',
     alias: 'viewmodel.money-report-accountdetails'
 });

+ 13 - 4
frontend/saas-web/app/view/money/verification/FormPanel.js

@@ -279,14 +279,13 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 }
             }, {
                 text: "本次核销金额",
-                xtype: 'numbercolumn',
                 dataIndex: "vcd_nowbalance",
-                width:150,
+                xtype: 'numbercolumn',
                 editor : {
                     xtype : "numberfield",
                     decimalPrecision: 2
                 },
-                allowBlank : false,
+                width: 110,
                 renderer : function(v) {
                     var arr = (v + '.').split('.');
                     var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
@@ -315,6 +314,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 xtype: 'hidden',
                 fieldLabel: '客户名称',
                 name: 'vc_custid',
+                allowBlank : false,
                 listeners: {
                     change: 'clearDetails'
                 }
@@ -332,7 +332,15 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 defaultValue: new Date(),
                 allowBlank : false,
                 name: 'vc_date'
-            }],
+            }, {
+                xtype: 'hidden',
+                name: 'vc_amount1',
+                fieldLabel: '核销金额'
+            }, {
+                xtype: "hidden",
+                name: "vc_amount2",
+                fieldLabel: "未核销金额"
+            },],
             details: ['detail1', 'detail2']
         },
 
@@ -342,6 +350,7 @@ Ext.define('saas.view.money.verification.FormPanel', {
                 xtype: 'hidden',
                 name: 'vc_vendid',
                 fieldLabel: '供应商名称',
+                allowBlank : false,
                 listeners: {
                     change: 'clearDetails'
                 }

+ 0 - 1
frontend/saas-web/app/view/money/verification/FormPanelController.js

@@ -301,7 +301,6 @@ Ext.define('saas.view.money.verification.FormPanelController', {
             saas.util.BaseUtil.showErrorToast(form.invalidText);
             return false;
         }
-
         var sum_detail1 = store1.sum('vd_nowbalance'); // 从表1核销合计
         var sum_detail2 = store2.sum('vcd_nowbalance'); // 从表2核销合计
 

+ 6 - 1
frontend/saas-web/app/view/money/verification/QueryPanel.js

@@ -126,7 +126,12 @@ Ext.define('saas.view.money.verification.QueryPanel', {
             xtype: 'numbercolumn',
             width: 120,
             flex: 1,
-            hidden: true
+            renderer : function(v) {
+                var arr = (v + '.').split('.');
+                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
+                var format = '0,000.' + xr.join();
+                return Ext.util.Format.number(v, format);
+            }
         }]
     }
 });

+ 2 - 2
frontend/saas-web/app/view/stock/appropriationInOut/FormPanel.js

@@ -48,7 +48,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
         name: 'pi_vendcode',
         fieldLabel: '供应商编号'
     }, {
-        xtype: 'vendorDbfindTrigger',
+        xtype: 'hidden',
         name: 'pi_vendname',
         fieldLabel: '供应商名称'
     },{
@@ -62,7 +62,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanel', {
         name: 'pi_custcode',
         fieldLabel: '客户编号'
     }, {
-        xtype: 'customerDbfindTrigger',
+        xtype: 'hidden',
         name: 'pi_custname',
         fieldLabel: '客户名称'
     },{

+ 2 - 3
frontend/saas-web/app/view/stock/stockamount/DataList.js

@@ -90,12 +90,11 @@ Ext.define('saas.view.stock.stockamount.DataList', {
     {
         text : "数量",
         xtype: 'numbercolumn',
-        align: 'end',
         dataIndex : "rc_number", 
         width : 110.0, 
         renderer : function(v) {
             var arr = (v + '.').split('.');
-            var xr = (new Array(arr[1].length>3?3:arr[1].length)).fill('0');
+            var xr = (new Array(arr[1].length>8?8:arr[1].length)).fill('0');
             var format = '0.' + xr.join();
             return Ext.util.Format.number(v, format);
         }
@@ -117,7 +116,7 @@ Ext.define('saas.view.stock.stockamount.DataList', {
         text : "金额", 
         xtype: 'numbercolumn',
         dataIndex : "rc_amount", 
-        flex : 1.0, 
+        width : 110.0,
         renderer : function(v) {
             var arr = (v + '.').split('.');
             var xr = (new Array(arr[1].length>2?2:arr[1].length)).fill('0');

+ 0 - 5
frontend/saas-web/resources/json/navigation.json

@@ -159,11 +159,6 @@
             "text": "资金转存",
             "addType": "money-fundtransfer-formpanel",
             "viewType": "money-fundtransfer-querypanel"
-        }, {
-            "id": "verification",
-            "text": "核销单",
-            "addType": "money-verification-formpanel",
-            "viewType": "money-verification-querypanel"
         }]
     }, {
         "text": "报表",