Ver código fonte

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

huangx 7 anos atrás
pai
commit
5f79a6119f
37 arquivos alterados com 371 adições e 87 exclusões
  1. 34 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Status.java
  2. 6 0
      applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/ProdInOutDTO.java
  3. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java
  4. 6 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java
  5. 14 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  6. 5 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  7. 1 0
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  8. 22 1
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml
  9. 1 1
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  10. 9 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java
  11. 26 1
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java
  12. 4 0
      base-servers/account/account-server/pom.xml
  13. 12 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java
  14. 4 4
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  15. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java
  16. 8 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java
  17. 7 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java
  18. 45 34
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java
  19. 5 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java
  20. 2 1
      base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml
  21. 2 2
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  22. 7 1
      base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml
  23. 3 3
      base-servers/auth/auth-api/src/main/java/com/usoftchina/saas/auth/api/AuthApi.java
  24. 21 0
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserApi.java
  25. 23 4
      base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java
  26. 10 1
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java
  27. 11 1
      base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java
  28. 5 2
      frontend/saas-web/app/Application.scss
  29. 18 0
      frontend/saas-web/app/model/document/stocking.js
  30. 22 14
      frontend/saas-web/app/view/document/kind/ChildForm.js
  31. 2 2
      frontend/saas-web/app/view/home/InfoCard.js
  32. 1 1
      frontend/saas-web/app/view/purchase/purchase/FormPanelController.js
  33. 1 1
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js
  34. 2 1
      frontend/saas-web/app/view/stock/inventory/EditDataList.js
  35. 15 8
      frontend/saas-web/app/view/sys/account/DataList.js
  36. 4 0
      frontend/saas-web/app/view/sys/manager/FormPanel.scss
  37. 1 1
      frontend/saas-web/app/view/sys/power/GroupGrid.js

+ 34 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Status.java

@@ -50,10 +50,43 @@ public enum Status {
     /**
      * 未出库
      */
-    UNTURNOUT("未出库");
+    UNTURNOUT("未出库"),
+
+    /**
+     *未收款
+     */
+    RECNONE("未收款"),
+
+    /**
+     * 部分收款
+     */
+    RECPART("部分收款"),
 
 
+    /**
+     * 已收款
+     */
+    RECALL("已收款"),
+
+
+    /**
+     * 未付款
+     */
+    PAYNONE("未付款"),
+
+
+    /**
+     * 部分付款
+     */
+    PAYPART("部分付款"),
+
+    /**
+     * 已付款
+     */
+    PAYALL("已付款")
     ;
+
+
     private String display;
     private Status(String display){
         this.display = display;

+ 6 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/ProdInOutDTO.java

@@ -81,4 +81,10 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private Long pi_maid;
 
+    private String pi_iocode;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
+
 }

+ 5 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOut.java

@@ -77,4 +77,9 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
 
     private Long pi_maid;
 
+    private String pi_iocode;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
 }

+ 6 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/ProdInOutList.java

@@ -144,6 +144,12 @@ public class ProdInOutList extends CommonBaseEntity{
 
     private Long pd_ioid;
 
+    private String pi_iocode;
+
+    private String pi_prstatus;
+
+    private String pi_prstatuscode;
+
     //private ProductDTO productDTO;
     private Long pr_id;
     private String pr_code;

+ 14 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -142,6 +142,16 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         pi_inoutno = pushMaxnubmer(baseDTO);
         prodInOut.setPi_inoutno(pi_inoutno);
 
+
+        if ("采购验收单".equals(pi_class)){
+            prodInOut.setPi_prstatus(Status.PAYNONE.getDisplay());
+            prodInOut.setPi_prstatuscode(Status.PAYNONE.name());
+        }else if ("采购验退单".equals(pi_class)){
+            prodInOut.setPi_prstatus(Status.RECNONE.getDisplay());
+            prodInOut.setPi_prstatuscode(Status.RECNONE.name());
+        }
+
+
         //判断更新与保存动作
         if (StringUtils.isEmpty(pi_id) || "0".equals(pi_id.toString())){
             prodInOut.setCompanyId(companyId);
@@ -441,6 +451,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         targetPi.setPi_puid(sourcePi.getPi_puid());
         targetPi.setPi_pucode(sourcePi.getPi_pucode());
         targetPi.setPi_ioid(sourcePi.getId());
+        targetPi.setPi_iocode(sourcePi.getPi_inoutno());
+        //设置付款状态
+        targetPi.setPi_prstatus(Status.RECNONE.getDisplay());
+        targetPi.setPi_prstatuscode(Status.RECNONE.name());
         //设置公司id
         targetPi.setCompanyId(sourcePi.getCompanyId());
         targetPi.setCreateTime(new Date());

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

@@ -438,6 +438,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         prodInOut.setPi_vendname(purchase.getPu_vendname());
         prodInOut.setPi_puid(purchase.getId().intValue());
         prodInOut.setPi_pucode(purchase.getPu_code());
+        //设置付款状态
+        prodInOut.setPi_prstatus(Status.PAYNONE.getDisplay());
+        prodInOut.setPi_prstatuscode(Status.PAYNONE.name());
+
         //设置公司id
         prodInOut.setCompanyId(purchase.getCompanyId());
         prodInOut.setCreatorId(userId);
@@ -518,7 +522,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //生成更新对象
         purchase.setId(id);
         purchase.setPu_acceptstatus(Status.UNTURNIN.getDisplay());
-        purchase.setPu_acceptstatuscode(Status.UNAUDITED.name());
+        purchase.setPu_acceptstatuscode(Status.UNTURNIN.name());
         purchase.setUpdateTime(new Date());
         purchase.setUpdaterId(BaseContextHolder.getUserId());
         getMapper().updateByPrimaryKeySelective(purchase);

+ 1 - 0
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -75,6 +75,7 @@
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
+    <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
     <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="pr_id" property="pr_id"/>
     <result column="pr_code" property="pr_code"/>

+ 22 - 1
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -40,6 +40,9 @@
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
+    <result column="pi_iocode" jdbcType="VARCHAR" property="pi_iocode" />
+    <result column="pi_prstatus" jdbcType="VARCHAR" property="pi_prstatus" />
+    <result column="pi_prstatuscode" jdbcType="VARCHAR" property="pi_prstatuscode" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.purchase.po.ProdInOut">
     <result column="pi_address" jdbcType="LONGVARCHAR" property="pi_address" />
@@ -52,7 +55,7 @@
     pi_custcode, pi_custname, pi_puid, pi_pucode, pi_said, pi_sacode, pi_total, pi_recordmanid, 
     pi_recordman, pi_recorddate, pi_status, pi_statuscode, pi_printstatus, pi_printstatuscode, 
     companyid, updaterid,updaterName,updatetime,creatorid,creatorName,createtime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
-    pi_auditman,pi_remark,pi_ioid
+    pi_auditman,pi_remark,pi_ioid,pi_iocode,pi_prstatus,pi_prstatuscode
   </sql>
   <sql id="Blob_Column_List">
     pi_address
@@ -190,6 +193,15 @@
       <if test="pi_ioid != null">
         pi_ioid,
       </if>
+      <if test="pi_iocode != null">
+        pi_iocode,
+      </if>
+      <if test="pi_prstatus != null">
+        pi_prstatus,
+      </if>
+      <if test="pi_prstatuscode != null">
+        pi_prstatuscode,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
 
@@ -306,6 +318,15 @@
       <if test="pi_ioid != null">
         #{pi_ioid,jdbcType=INTEGER},
       </if>
+      <if test="pi_iocode != null">
+        #{pi_iocode,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatus != null">
+        #{pi_prstatus,jdbcType=VARCHAR},
+      </if>
+      <if test="pi_prstatuscode != null">
+        #{pi_prstatuscode,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
 

+ 1 - 1
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -482,7 +482,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         setTotal(targetPi);
 
         //日志记录
-        DocBaseDTO log = new DocBaseDTO(id, sourcePi.getPi_inoutno(), BillCodeSeq.SALEIN.getCaller());
+        DocBaseDTO log = new DocBaseDTO(id, sourcePi.getPi_inoutno(), BillCodeSeq.SALEOUT.getCaller());
         messageLogService.customizeLog(log, Operation.TURNPRODOUTRETURN);
 
         baseDTO.setId(pi_id);

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/AccountRoleDTO.java

@@ -9,9 +9,18 @@ public class AccountRoleDTO implements Serializable {
     private String realname;
     private String email;
     private String mobile;
+    private boolean enabled;
     private String roleNames;
     private String roleIds;
 
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
     public String getRoleNames() {
         return roleNames;
     }

+ 26 - 1
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRspDTO.java

@@ -32,6 +32,29 @@ public class CompanyRspDTO implements Serializable {
      */
     private Long defaultCompanyId;
 
+    /**
+     * 管理员名称
+     */
+    private String admin;
+
+    private Long adminId;
+
+    public Long getAdminId() {
+        return adminId;
+    }
+
+    public void setAdminId(Long adminId) {
+        this.adminId = adminId;
+    }
+
+    public String getAdmin() {
+        return admin;
+    }
+
+    public void setAdmin(String admin) {
+        this.admin = admin;
+    }
+
     public boolean isHasDefaultCompany() {
         return hasDefaultCompany;
     }
@@ -104,13 +127,15 @@ public class CompanyRspDTO implements Serializable {
         this.default_ = default_;
     }
 
-    public CompanyRspDTO(String name, String businessCode, String address, boolean default_, boolean saas_, String uu) {
+    public CompanyRspDTO(String name, String businessCode, String address, boolean default_, boolean saas_, String uu, String admin, Long adminId) {
         this.name = name;
         this.businessCode = businessCode;
         this.address = address;
         this.default_ = default_;
         this.saas_ = saas_;
         this.uu = uu;
+        this.admin = admin;
+        this.adminId = adminId;
     }
 
     public CompanyRspDTO() {

+ 4 - 0
base-servers/account/account-server/pom.xml

@@ -30,6 +30,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>file-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>auth-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>auth-client</artifactId>

+ 12 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountCenterController.java

@@ -24,7 +24,18 @@ public class AccountCenterController {
      */
     @PostMapping("/companyAccount/save")
     public Result saveCompanyAccount(@RequestBody CompanyAccountDTO companyAccountDTO){
-        return Result.success(accountCenterService.saveCompanyAccount(companyAccountDTO));
+        return Result.success(accountCenterService.saveCompanyAccount(companyAccountDTO).getData());
+    }
+
+    /**
+     * 信息完善界面   更新接口
+     * @param companyAccountDTO
+     * @return
+     */
+    @PostMapping("/companyAccount/update")
+    public Result updateCompanyAccount(@RequestBody CompanyAccountDTO companyAccountDTO){
+        accountCenterService.updateCompanyAccount(companyAccountDTO);
+        return Result.success();
     }
 
     /**

+ 4 - 4
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -35,13 +35,10 @@ public class AccountController {
 
     @Autowired
     private AccountService accountService;
-
     @Autowired
     private CompanyService companyService;
-
     @Autowired
     private RoleService roleService;
-
     @Autowired
     private SsoUserApi ssoUserApi;
 
@@ -115,7 +112,6 @@ public class AccountController {
      * @return
      */
     @PostMapping("/register/add")
-    @IgnoreAuth
     public Result AddAccount(@RequestBody AccountCopyDTO accountCopyDTO) {
         // 判断是否已注册
         Account account = accountService.findByUsername(accountCopyDTO.getUsername());
@@ -401,6 +397,10 @@ public class AccountController {
     @PostMapping("/disable")
     public Result disableAccount(@RequestParam long accountId) {
         accountService.disable(accountId);
+        //同步到优软云
+        Long userUU = accountService.findByPrimaryKey(accountId).getUu();
+        Long companyUU = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId()).getUu();
+        String result = ssoUserApi.unbind("unbind", userUU, companyUU);
         accountService.clearCache(accountId);
         return Result.success();
     }

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java

@@ -82,4 +82,11 @@ public interface CompanyMapper {
      * @return
      */
     int updateByPrimaryKeySelective(CompanyRegDTO companyRegDTO);
+
+    /**
+     * 更新UU号
+     * @param companyId
+     * @param uu
+     */
+    void updateUUByPrimaryKey(@Param("companyId") Long companyId, @Param("uu") Long uu);
 }

+ 8 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountCenterService.java

@@ -17,6 +17,14 @@ public interface AccountCenterService {
      */
     Result saveCompanyAccount(CompanyAccountDTO companyAccountDTO);
 
+
+    /**
+     * 企业账户信息完善  更新
+     * @param companyAccountDTO
+     * @return
+     */
+    boolean updateCompanyAccount(CompanyAccountDTO companyAccountDTO);
+
     /**
      * 获取企业信息列表
      * @param mobile

+ 7 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java

@@ -98,4 +98,11 @@ public interface CompanyService {
      * @param companyRegDTO
      */
     void update(CompanyRegDTO companyRegDTO);
+
+    /**
+     * 更新公司UU号
+     * @param companyId
+     * @param uu
+     */
+    void updateUUByPrimaryKey(Long companyId, Long uu);
 }

+ 45 - 34
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountCenterServiceImpl.java

@@ -7,14 +7,18 @@ import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.service.AccountCenterService;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.CompanyService;
+import com.usoftchina.saas.auth.api.AuthApi;
+import com.usoftchina.saas.auth.dto.TokenDTO;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.sso.api.SsoUserApi;
+import com.usoftchina.sso.api.SsoUserSpaceApi;
 import com.usoftchina.sso.dto.SsoUserSpace;
 import com.usoftchina.sso.dto.SsoUserSpaceList;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
@@ -36,11 +40,12 @@ public class AccountCenterServiceImpl implements AccountCenterService {
     @Autowired
     private SsoUserApi ssoUserApi;
     @Autowired
+    private SsoUserSpaceApi ssoUserSpaceApi;
+    @Autowired
+    private AuthApi authApi;
+    @Autowired
     private AccountCompanyMapper accountCompanyMapper;
 
-    private final String ACCOUNTCNETER_URL_DEV = "http://192.168.253.12:32323";
-    //private final String ACCOUNTCNETER_URL_PROD = "https://sso.ubtob.com";
-
     @Override
     @Transactional
     public Result saveCompanyAccount(CompanyAccountDTO companyAccountDTO) {
@@ -66,9 +71,9 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         companyService.save(company);
         //b. 同步企业信息到优软云 ——>  创建企业
         if ("0".equals(type)) {
-            String result = postToAccount(company.getName(), company.getBusinessCode(), accountRegDTO.getUu());
-            accountCompanyMapper.insert(accountId, company.getId());
+            String result = ssoUserSpaceApi.registerLogin(company.getName(), company.getBusinessCode(), Long.parseLong(accountRegDTO.getUu()));
         }
+        accountCompanyMapper.insert(accountId, company.getId());
         //2.更新账户信息
         Account account = BeanMapper.map(accountRegDTO, Account.class);
 
@@ -77,22 +82,18 @@ public class AccountCenterServiceImpl implements AccountCenterService {
         return null;
     }
 
-    /**
-     * 将企业信息同步到优软云
-     * @param spaceName
-     * @param businesscode
-     * @param uu
-     * @return
-     */
-    private String postToAccount(String spaceName, String businesscode, String uu) {
-        String url = "/sso/userspace/register/admin";
-        RestTemplate restTemplate = new RestTemplate();
-        MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<>();
-        requestEntity.add("spaceName", spaceName);
-        requestEntity.add("businessCode", businesscode);
-        requestEntity.add("userUU", uu);
-        String result = restTemplate.postForObject(ACCOUNTCNETER_URL_DEV + url, requestEntity, String.class);
-        return result;
+    @Override
+    public boolean updateCompanyAccount(CompanyAccountDTO companyAccountDTO) {
+        CompanyRegDTO companyRegDTO = companyAccountDTO.getCompanyRegDTO();
+        AccountRegDTO accountRegDTO = companyAccountDTO.getAccountRegDTO();
+        Long accountId = accountService.findByMobile(accountRegDTO.getMobile()).getId();
+        //更新企业信息
+        companyService.update(companyRegDTO);
+        //更新账户信息
+        Account account = BeanMapper.map(accountRegDTO, Account.class);
+        account.setId(accountId);
+        accountService.updateByPrimaryKeySelective(account);
+        return true;
     }
 
     @Override
@@ -116,27 +117,37 @@ public class AccountCenterServiceImpl implements AccountCenterService {
 
         //3、去重复
         for (CompanyRspDTO companyRspDTO : companyRspDTOList) {
-            for (SsoUserSpace ssoUserSpace : ssoUserSpaces) {
-                if (companyRspDTO.getName().equals(ssoUserSpace.getSpaceName())){
-                    ssoUserSpaces.remove(ssoUserSpace);
+            for (int i = 0; i < ssoUserSpaces.size(); i++){
+                if (companyRspDTO.getName().equals(ssoUserSpaces.get(i).getSpaceName())){
+                    //更新公司UU号
+                    if (StringUtils.isEmpty(companyRspDTO.getUu())){
+                        companyService.updateUUByPrimaryKey(companyRspDTO.getId(), ssoUserSpaces.get(i).getSpaceUU());
+                    }
+                    ssoUserSpaces.remove(ssoUserSpaces.get(i));
                 }
             }
             if (companyRspDTO.isDefault_()){
                 resultMap.put("hasDefaultCompany", true);
                 resultMap.put("defaultCompanyId", companyRspDTO.getId());
+                TokenDTO tokenDTO = authApi.switchCompany(companyRspDTO.getId()).getData();
+                resultMap.put("token", tokenDTO);
             }
         }
         //构造返回数据
-        for (SsoUserSpace ssoUserSpace : ssoUserSpaces){
-            CompanyRspDTO companyRspDTO = new CompanyRspDTO(
-                    ssoUserSpace.getSpaceName(),
-                    ssoUserSpace.getBusinessCode(),
-                    ssoUserSpace.getRegAddress(),
-                    false,
-                    false,
-                    ssoUserSpace.getSpaceUU().toString()
-            );
-            resultList.add(companyRspDTO);
+        if (ssoUserSpaces.size() > 0) {
+            for (SsoUserSpace ssoUserSpace : ssoUserSpaces) {
+                CompanyRspDTO companyRspDTO = new CompanyRspDTO(
+                        ssoUserSpace.getSpaceName(),
+                        ssoUserSpace.getBusinessCode(),
+                        ssoUserSpace.getRegAddress(),
+                        false,
+                        false,
+                        ssoUserSpace.getSpaceUU().toString(),
+                        ssoUserSpace.getAdmin().getVipName(),
+                        0l
+                );
+                resultList.add(companyRspDTO);
+            }
         }
         resultMap.put("spaces", resultList);
         return resultMap;

+ 5 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java

@@ -54,6 +54,11 @@ public class CompanyServiceImpl implements CompanyService{
         }
     }
 
+    @Override
+    public void updateUUByPrimaryKey(Long companyId, Long uu) {
+        companyMapper.updateUUByPrimaryKey(companyId, uu);
+    }
+
     @Override
     public Company findByName(String name) {
         return companyMapper.selectByName(name);

+ 2 - 1
base-servers/account/account-server/src/main/resources/mapper/AccountCompanyMapper.xml

@@ -14,9 +14,10 @@
         delete from ac_account_company where company_id=#{companyId}
     </delete>
     <select id="getCompanyListByAccountMobile" resultType="com.usoftchina.saas.account.dto.CompanyRspDTO">
-        SELECT cmp.id,cmp.name,cmp.uu,cmp.business_code businessCode,cmp.address,accmp.is_default default_,'1' saas_ from ac_company cmp
+        SELECT cmp.id,cmp.name,cmp.uu,cmp.business_code businessCode,cmp.address,accmp.is_default default_,'1' saas_,aci.realname admin,cmp.creator_id adminId from ac_company cmp
         left join ac_account_company accmp on accmp.company_id=cmp.id
         left join ac_account ac on ac.id = accmp.account_id
+        left join ac_account aci on aci.id = cmp.creator_id
         where ac.mobile = #{mobile}
         order by is_default desc
     </select>

+ 2 - 2
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -17,7 +17,7 @@
         delete from ac_account_role where company_id=#{companyId}
     </delete>
     <select id="selectAccountRole" resultType="com.usoftchina.saas.account.dto.AccountRoleDTO">
-        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds
+        SELECT a.id id,a.username,a.realname,a.email,a.mobile,GROUP_CONCAT(c.name) roleNames,GROUP_CONCAT(c.id) roleIds,a.enabled
         FROM ac_account a
         left join ac_account_company d on a.id = d.account_id
         left join ac_account_role b on a.id=b.account_id and d.company_id = b.company_id
@@ -30,7 +30,7 @@
                 AND d.COMPANY_ID = #{companyId}
             </if>
         </where>
-        group by a.id,a.username,a.realname,a.email,a.mobile
+        group by a.id,a.username,a.realname,a.email,a.mobile,a.enabled
     </select>
     <delete id="unBindRolesById" parameterType="java.lang.Long">
         DELETE FROM AC_ACCOUNT_ROLE WHERE ACCOUNT_ID = #{id}

+ 7 - 1
base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml

@@ -119,9 +119,12 @@
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from ac_company where id=#{id,jdbcType=BIGINT}
     </delete>
-    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.account.po.Company">
+    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.account.dto.CompanyRegDTO">
         UPDATE ac_company
         <set>
+            <if test="name != null">
+                name = #{name, jdbcType=VARCHAR},
+            </if>
             <if test="address != null">
                 address = #{address,jdbcType=VARCHAR},
             </if>
@@ -140,4 +143,7 @@
         </set>
         where id = #{id}
     </update>
+    <update id="updateUUByPrimaryKey">
+        UPDATE ac_company set uu = #{uu} where id = #{companyId}
+    </update>
 </mapper>

+ 3 - 3
base-servers/auth/auth-api/src/main/java/com/usoftchina/saas/auth/api/AuthApi.java

@@ -21,7 +21,7 @@ public interface AuthApi {
      * @param password
      * @return
      */
-    @PostMapping(value = "/api/auth")
+    @PostMapping(value = "/authorize")
     Result<AuthDTO> authorize(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password);
 
     /**
@@ -30,8 +30,8 @@ public interface AuthApi {
      * @param companyId
      * @return
      */
-    @GetMapping(value = "/api/auth/switch/company")
-    Result<TokenDTO> switchCompany(@RequestParam(value = "companyId") String companyId);
+    @GetMapping(value = "/switch/company")
+    Result<TokenDTO> switchCompany(@RequestParam(value = "companyId") Long companyId);
 
     /**
      * 获取auth信息

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

@@ -9,6 +9,7 @@ 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -41,9 +42,24 @@ public interface SsoUserApi {
     @Deprecated
     SsoUserSpaceList getUserSpacesByMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 校验手机号是否已注册
+     * @param mobile
+     * @return
+     */
     @GetMapping("/checkMobile")
     SsoCheckMobile checkMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 解除用户企业绑定
+     * @param _operate
+     * @param userUU
+     * @param spaceUU
+     * @return
+     */
+    @PostMapping("")
+    String unbind(@RequestParam("_operate") String _operate, @RequestParam("userUU") Long userUU, @RequestParam("spaceUU") Long spaceUU);
+
     @Component
     class DefaultFallback implements SsoUserApi{
         @Override
@@ -61,5 +77,10 @@ public interface SsoUserApi {
             return null;
         }
 
+        @Override
+        public String unbind(String _operate, Long userUU, Long spaceUU) {
+            return null;
+        }
+
     }
 }

+ 23 - 4
base-servers/auth/sso-api/src/main/java/com/usoftchina/sso/api/SsoUserSpaceApi.java

@@ -4,7 +4,7 @@ import com.usoftchina.sso.dto.SsoResult;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 /**
@@ -12,11 +12,25 @@ import org.springframework.web.bind.annotation.RequestParam;
  * @date 2018/11/23
  */
 @FeignClient(url = "${sso.base-url}", name = "sso-server", fallback = SsoUserApi.DefaultFallback.class)
-@RequestMapping("/api/userspace")
 public interface SsoUserSpaceApi {
+    /**
+     * 校验企业名称是否已注册
+     * @param spacename
+     * @return
+     */
+    @GetMapping("/api/userspace/checkSpaceName")
+    SsoResult checkSpaceName(@RequestParam("spaceName") String spacename);
 
-    @GetMapping("/checkSpaceName")
-    SsoResult checkSpaceName(@RequestParam("spacename") String spacename);
+    /**
+     * <p>账户中心接口: 通过登录管理员注册企业</p>
+     * <p>将企业信息同步到优软云</p>
+     * @param spaceName
+     * @param businessCode
+     * @param userUU
+     * @return
+     */
+    @PostMapping("/sso/userspace/register/admin")
+    String registerLogin(@RequestParam("spaceName") String spaceName, @RequestParam("businessCode") String businessCode, @RequestParam("userUU") Long userUU);
 
     @Component
     class DefaultFallback implements SsoUserSpaceApi{
@@ -25,6 +39,11 @@ public interface SsoUserSpaceApi {
         public SsoResult checkSpaceName(String spaceName) {
             return null;
         }
+
+        @Override
+        public String registerLogin(String spaceName, String businessCode, Long userUU) {
+            return null;
+        }
     }
 
 }

+ 10 - 1
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserApiTest.java

@@ -29,7 +29,7 @@ public class SsoUserApiTest {
 
     final static long userUU = 200040149;
 
-    final static String mobile = "18595633323";
+    final static String mobile = "18702604854";
 
     @Test
     public void testA_getUserByUu() {
@@ -53,4 +53,13 @@ public class SsoUserApiTest {
         System.out.println(checked);
     }
 
+
+    @Test
+    public void testD_unbind(){
+        Long companyUU = 10050435l;
+        Long userUU = 1000027276l;
+        String result = ssoUserApi.unbind("unbind", userUU, companyUU);
+        System.out.println(result);
+    }
+
 }

+ 11 - 1
base-servers/auth/sso-api/src/test/java/com/usoftchina/sso/test/SsoUserSpaceApiTeest.java

@@ -1,5 +1,6 @@
 package com.usoftchina.sso.test;
 
+import com.usoftchina.saas.utils.StringUtils;
 import com.usoftchina.sso.api.SsoUserSpaceApi;
 import com.usoftchina.sso.dto.SsoResult;
 import org.junit.FixMethodOrder;
@@ -24,7 +25,16 @@ public class SsoUserSpaceApiTeest {
 
     @Test
     public void testA_checkSpaceName(){
-        SsoResult result = ssoUserSpaceApi.checkSpaceName("测试公司08111550");
+        SsoResult result = ssoUserSpaceApi.checkSpaceName("上海宇声电子科技有限公司");
+        System.out.println(result);
+    }
+
+    @Test
+    public void testB_registerLogin(){
+        String spaceName = "测试企业009";
+        String businessCode = StringUtils.createBusinessCode();
+        Long userUU = 1000027276l;
+        String result = ssoUserSpaceApi.registerLogin(spaceName, businessCode, userUU);
         System.out.println(result);
     }
 }

+ 5 - 2
frontend/saas-web/app/Application.scss

@@ -143,11 +143,14 @@ body.launching {
 }
 
 .x-keyboard-mode .x-btn-focus.x-btn-default-toolbar-small {
-  background: #34BAF6;
-  opacity: 0.72;
+  background: inherit;
+  opacity: 1;
   box-shadow: none;
+  border:1px solid #34BAF6;
 }
+
 .x-keyboard-mode .x-btn-focus.x-btn-over.x-btn-default-toolbar-small {
+  background: #34BAF6;
   box-shadow: none;
 }
 

+ 18 - 0
frontend/saas-web/app/model/document/stocking.js

@@ -0,0 +1,18 @@
+Ext.define('saas.model.document.stocking', {
+    extend: 'saas.model.Base',
+    fields: [
+        { name: 'id', type: 'int' },
+        { name: 'st_prodid', type: 'int' },
+        { name: 'st_prodcode', type: 'string' },
+        { name: 'st_proddetail', type: 'string' },
+        { name: 'st_prodorispeccode', type: 'string' },
+        { name: 'st_prodkind', type: 'string' },
+        { name: 'st_produnit', type: 'string' },
+        { name: 'st_whid', type: 'int' },
+        { name: 'st_whcode', type: 'string' },
+        { name: 'st_whname', type: 'string' },
+        { name: 'st_batchqty', type: 'float' },
+        { name: 'st_actqty', type: 'float' },
+        { name: 'st_num', type: 'float' }
+    ]
+});

+ 22 - 14
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -277,23 +277,37 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 regexText:'请输入正确的手机号码',
                 listeners:{
                     blur:function(f,a,b,c){
+                        var form = f.ownerCt;
+                        form.setLoading(true);
                         if(f.value&&f.value!=''&&f.isValid()){
                             Ext.Ajax.request({
-                                url: 'http://192.168.253.31:8560/api/account/account/checkMobile?mobile='+f.value,
+                                url: '/api/account/account/checkMobile?mobile='+f.value,
                                 method: 'GET',
                                 headers:{
                                     'Access-Control-Allow-Origin': '*',
                                     "Content-Type": 'application/json;charset=UTF-8'
                                 },
                                 success: function (response) {
+                                    form.setLoading(false);
+                                    var localJson = Ext.decode(response.responseText);
                                     if(localJson.success){
-                                        saas.util.BaseUtil.showSuccessToast('保存成功');
-                                        form.ownerCt._parent.store.load()
-                                        form.ownerCt.close();
+                                        if(!localJson.data.hasRegister){
+                                            saas.util.BaseUtil.showSuccessToast('校验成功:手机号未被注册');
+                                        }else{
+                                            saas.util.BaseUtil.showErrorToast('校验失败:手机号已被注册');
+                                            f.setValue('');
+                                        }
+                                    }else{
+                                        saas.util.BaseUtil.showErrorToast('校验失败:'+localJson.message);
                                     }
                                 },
                                 failure: function (response) {
-                                    debugger
+                                    if(response.responseText){
+                                        var localJson = Ext.decode(response.responseText);
+                                        saas.util.BaseUtil.showErrorToast('校验失败:'+localJson.message);
+                                    }else{
+                                        saas.util.BaseUtil.showErrorToast('手机号校验接口连接超时');
+                                    }
                                 }
                             });
                         }
@@ -310,6 +324,8 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 fieldLabel: '邮箱',
                 name: 'email',
                 allowBlank:false,
+                regex:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
+                regexText:'请输入正确的邮箱',
                 maxLength: 30,
             }]
         },
@@ -646,15 +662,7 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
         .then(function(localJson) {
             me.setLoading(false);
             if(localJson.success){
-                var grid = form.ownerCt._parent ? form.ownerCt._parent.lookup('document-kind-Grid') : null;
-                if(grid){
-                    grid.store.load();
-                }
-                if(combo){
-                    combo.store.load(function() {
-                        typeof combo.setValue == 'function' && combo.setValue(params._value);
-                    });
-                }
+                form.ownerCt._parent.store.load();
                 saas.util.BaseUtil.showSuccessToast('保存成功');
                 form.ownerCt.close();
             }

+ 2 - 2
frontend/saas-web/app/view/home/InfoCard.js

@@ -51,13 +51,13 @@ Ext.define('saas.view.home.InfoCard', {
                     condition: 'purchase.companyId=' + companyId + ' and pu_statuscode=\'AUDITED\' and exists (select 1 from purchasedetail detail where pd_id=purchasedetail.pd_id and IFNULL(pd_acceptqty,0) < ifnull(pd_qty,0) and TO_DAYS(PD_DELIVERY)-TO_DAYS(now()) <= 7)'
                 },
                 unpay: {
-                    title: '未收款出货',
+                    title: '未付款验收单',
                     color: 'red',
                     viewType: 'purchase-purchasein-querypanel',
                     condition: 'pi_class in(\'采购验收单\',\'采购验退单\') and prodinout.companyId=' + companyId + ' and TO_DAYS(pi_date+ifnull(ve_promisedays,0))-TO_DAYS(now()) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=' + companyId + ' and ifnull(sl_namount,0)<>0)'
                 },
                 unreceive: {
-                    title: '未审核出货单',
+                    title: '未收款出货',
                     color: 'pink',
                     viewType: 'sale-saleout-querypanel',
                     condition: 'pi_class in(\'出货单\',\'销售退货单\') and prodinout.companyId=' + companyId + ' and TO_DAYS(pi_date+ifnull(cu_promisedays,0))-TO_DAYS(now()) <= 7 and exists (select 1 from subledger where sl_code=pi_inoutno and sl_kind=pi_class and subledger.companyId=' + companyId + ' and ifnull(sl_namount,0)<>0)'

+ 1 - 1
frontend/saas-web/app/view/purchase/purchase/FormPanelController.js

@@ -64,7 +64,7 @@ Ext.define('saas.view.purchase.purchase.FormPanelController', {
         form = me.getView(),
         id = form.getForm().findField(form._idField);
         saas.util.BaseUtil.request({
-            url: form._turnInUrl+id.value,
+            url: form._turnInUrl+'/'+id.value,
             method: 'POST',
         })
         .then(function(localJson) {

+ 1 - 1
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelController.js

@@ -99,7 +99,7 @@ Ext.define('saas.view.purchase.purchaseIn.FormPanelController', {
         form = me.getView(),
         id = form.getForm().findField(form._idField);
         saas.util.BaseUtil.request({
-            url: form._turnOutUrl+id.value,
+            url: form._turnOutUrl+'/'+id.value,
             method: 'POST',
         })
         .then(function(localJson) {

+ 2 - 1
frontend/saas-web/app/view/stock/inventory/EditDataList.js

@@ -50,7 +50,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         }],
         width:150,
     },{
-        editable:false,
+        editable:true,
         xtype : "remotecombo", 
         storeUrl:'/api/document/producttype/getCombo',
         name : "pr_kind",
@@ -251,6 +251,7 @@ Ext.define('saas.view.stock.inventory.EditDataList', {
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
             me.store = Ext.create('Ext.data.Store',{
+                model:'saas.model.document.stocking',
                 fields:fields,
                 autoLoad: true,
                 pageSize: 11,

+ 15 - 8
frontend/saas-web/app/view/sys/account/DataList.js

@@ -9,7 +9,9 @@ Ext.define('saas.view.sys.account.DataList', {
     autoScroll: true,
     frame:true,
     layout:'fit',
-    dataUrl:'/api/account/account/accountRole/list',                 
+    dataUrl:'/api/account/account/accountRole/list',   
+    _openUrl:'/api/account/account/enable',
+    _closeUrl:'/api/account/account/disable',              
 
     tbar: [{
         width: 150,
@@ -22,7 +24,6 @@ Ext.define('saas.view.sys.account.DataList', {
         xtype: 'textfield',
         emptyText : '电话'
     },{
-        cls:'x-formpanel-btn-orange',
         xtype:'button',
         text:'查询',
         listeners: {
@@ -99,14 +100,14 @@ Ext.define('saas.view.sys.account.DataList', {
         width : 220.0
     },{
         text: '账户状态',
-        dataIndex: 'em_class',
+        dataIndex: 'enabled',
         width:90,
         xtype: 'actioncolumn',
         align : 'center',
         items: [{
             iconCls:'',
             getClass: function(v, meta, rec) {
-                if(rec.get('em_class')=='正式'){
+                if(rec.get('enabled')){
                     return 'x-grid-checkcolumn-checked-btn';
                 }else{
                     return 'x-grid-checkcolumn-btn';
@@ -114,14 +115,20 @@ Ext.define('saas.view.sys.account.DataList', {
             },
             handler: function(view, rowIndex, colIndex) {
                 var rec = view.getStore().getAt(rowIndex);
-                var type=rec.get('em_class')=='正式'?true:false;
+                var type=rec.get('enabled');
                 //  禁用/启用
-                var form = this.ownerCt.ownerCt.ownerCt;
                 var grid = this.ownerCt.ownerCt;
+                var params = {
+                    accountId:rec.get('id')
+                };
                 saas.util.BaseUtil.request({
-                    url: (!type?form._openUrl:form._closeUrl)+'/'+rec.get('id'),
-                    params: '',
+                    url: (!type?grid._openUrl:grid._closeUrl),
+                    params: params,
                     method: 'POST',
+                    headers : {
+                        'Access-Control-Allow-Origin': '*',
+                        "Content-Type":'application/x-www-form-urlencoded'
+                    }
                 })
                 .then(function(localJson) {
                     if(localJson.success){

+ 4 - 0
frontend/saas-web/app/view/sys/manager/FormPanel.scss

@@ -65,4 +65,8 @@
         content: '';
         border:none !important;
     }
+    .x-btn-over.x-btn-default-toolbar-small {
+        background: #34BAF6 !important;
+        opacity: 0.72;
+      }
 }

+ 1 - 1
frontend/saas-web/app/view/sys/power/GroupGrid.js

@@ -12,7 +12,7 @@ Ext.define('saas.view.sys.power.GroupGrid', {
         text:'保存',
         name:'savepower',
         margin:'0 10 0 2',
-        style:'background:#34baf6;border-color:#cccccc'
+        style:'background:#fff;border-color:#34baf6'
     }],
     features : [Ext.create('Ext.grid.feature.Grouping',{
         collapseTip:null,