Browse Source

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

rainco 7 years ago
parent
commit
05cb4bbf92
84 changed files with 669 additions and 128 deletions
  1. 3 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 5 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java
  3. 1 0
      applications/commons/commons-server/src/main/resources/i18n/messages_zh_CN.properties
  4. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/AddressMapper.java
  5. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerkindMapper.java
  6. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductbrandMapper.java
  7. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProducttypeMapper.java
  8. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/ProductunitMapper.java
  9. 2 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorkindMapper.java
  10. 13 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/AddressServiceImpl.java
  11. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  12. 3 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  13. 6 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  14. 13 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerkindServiceImpl.java
  15. 3 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  16. 15 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductbrandServiceImpl.java
  17. 12 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProducttypeServiceImpl.java
  18. 12 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductunitServiceImpl.java
  19. 7 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  20. 12 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorkindServiceImpl.java
  21. 7 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java
  22. 3 0
      applications/document/document-server/src/main/resources/mapper/AddressMapper.xml
  23. 4 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  24. 3 0
      applications/document/document-server/src/main/resources/mapper/CustomerkindMapper.xml
  25. 3 0
      applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml
  26. 3 0
      applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml
  27. 3 0
      applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml
  28. 3 0
      applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml
  29. 1 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferdetailMapper.java
  30. 19 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransferdetail.java
  31. 8 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  32. 43 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  33. 12 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  34. 8 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  35. 8 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  36. 2 0
      applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml
  37. 15 0
      applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml
  38. 2 0
      applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml
  39. 2 0
      applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml
  40. 6 0
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  41. 1 1
      applications/money/money-server/src/main/resources/mapper/PaybalancedetMapper.xml
  42. 6 0
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  43. 1 1
      applications/money/money-server/src/main/resources/mapper/RecbalancedetMapper.xml
  44. 4 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  45. 11 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  46. 9 0
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  47. 4 4
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  48. 5 0
      framework/core/src/main/java/com/usoftchina/saas/utils/RegexpUtils.java
  49. 0 28
      framework/server-starter/src/main/java/com/usoftchina/saas/server/error/ServletErrorUtils.java
  50. 41 0
      framework/server-starter/src/main/java/com/usoftchina/saas/server/web/ServletUtils.java
  51. 13 0
      frontend/saas-portal-web/config/env.js
  52. 25 0
      frontend/saas-portal-web/src/js/main.js
  53. 2 1
      frontend/saas-web/Dockerfile
  54. 1 1
      frontend/saas-web/app.json
  55. 6 3
      frontend/saas-web/app/view/core/base/BasePanel.js
  56. 29 18
      frontend/saas-web/app/view/core/base/GridPanel.js
  57. 8 6
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  58. 17 9
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  59. 3 3
      frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js
  60. 79 1
      frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js
  61. 7 4
      frontend/saas-web/app/view/core/form/DataMultiCombo.js
  62. 1 1
      frontend/saas-web/app/view/core/form/FormPanel.js
  63. 30 1
      frontend/saas-web/app/view/core/form/FormPanelController.js
  64. 1 0
      frontend/saas-web/app/view/core/form/FormPanelModel.js
  65. 15 2
      frontend/saas-web/app/view/core/query/QueryFormPanel.js
  66. 1 1
      frontend/saas-web/app/view/core/query/QueryPanelController.js
  67. 3 0
      frontend/saas-web/app/view/document/customer/BasePanel.js
  68. 9 4
      frontend/saas-web/app/view/document/kind/ChildForm.js
  69. 5 1
      frontend/saas-web/app/view/document/product/FormPanel.js
  70. 3 0
      frontend/saas-web/app/view/money/othreceipts/FormPanelModel.js
  71. 1 1
      frontend/saas-web/app/view/money/othspendings/FormPanel.js
  72. 3 0
      frontend/saas-web/app/view/money/othspendings/FormPanelModel.js
  73. 4 0
      frontend/saas-web/app/view/money/payBalance/FormPanelModel.js
  74. 3 0
      frontend/saas-web/app/view/purchase/purchase/FormPanelModel.js
  75. 10 8
      frontend/saas-web/app/view/purchase/purchaseIn/FormPanelModel.js
  76. 0 1
      frontend/saas-web/app/view/purchase/purchaseIn/QueryPanel.js
  77. 4 3
      frontend/saas-web/app/view/purchase/purchaseOut/FormPanelModel.js
  78. 4 0
      frontend/saas-web/app/view/sale/sale/FormPanelModel.js
  79. 4 0
      frontend/saas-web/app/view/sale/saleIn/FormPanelModel.js
  80. 4 0
      frontend/saas-web/app/view/sale/saleOut/FormPanelModel.js
  81. 2 0
      frontend/saas-web/app/view/stock/make/QueryPanel.js
  82. 3 2
      frontend/saas-web/app/view/stock/otherIn/FormPanelModel.js
  83. 3 2
      frontend/saas-web/app/view/stock/otherOut/FormPanelModel.js
  84. 10 0
      frontend/saas-web/set-token.html

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

@@ -46,6 +46,9 @@ public enum BizExceptionCode implements BaseExceptionCode {
     DEAL_FAILED(79800, "编号:<u>%s</u>处理失败,%s"),
     USING_EXISTS(79504, ""),
 
+    VENDOR_ISCLOSE(79505, "供应商已关闭"),
+    PRODUCT_ISCLOSE(79506, "物料已关闭"),
+    CUSTOMER_ISCLOSE(79507, "客户资料已关闭"),
 
 
     //采购 70000-71999

+ 5 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Operation.java

@@ -51,6 +51,11 @@ public enum Operation {
      */
     BANNED("msg.banned", "msg.bannedSuccess"),
 
+    /**
+     * 启用操作
+     */
+    ENABLE("msg.enable", "msg.enableSuccess"),
+
     /**
      * 记账
      */

+ 1 - 0
applications/commons/commons-server/src/main/resources/i18n/messages_zh_CN.properties

@@ -33,6 +33,7 @@ msg.resHungSuccess=\u89e3\u6302\u6210\u529f
 msg.checkSuccess=\u6838\u5bf9\u6210\u529f
 msg.printSuccess=\u6253\u5370\u6210\u529f
 msg.bannedSuccess=\u7981\u7528\u6210\u529f
+msg.enableSuccess=\u542f\u7528\u6210\u529f
 msg.resBannedSuccess=\u53cd\u7981\u7528\u6210\u529f
 msg.modifySuccess=\u6570\u636e\u66f4\u65b0\u6210\u529f
 msg.modifyDetailSuccess=\u66f4\u65b0\u660e\u7ec6\u6570\u636e\u6210\u529f

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

@@ -30,4 +30,6 @@ public interface AddressMapper extends CommonBaseMapper<Address> {
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
 
     List<Address> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromPurchase(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -25,4 +25,6 @@ public interface CustomerkindMapper extends CommonBaseMapper<Customerkind> {
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId, @Param("id") Long id);
 
     List<Customerkind> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromCustomer(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -26,4 +26,6 @@ public interface ProductbrandMapper extends CommonBaseMapper<Productbrand> {
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId, @Param("id") Long id);
 
     List<Productbrand> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromProduct(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -25,4 +25,6 @@ public interface ProducttypeMapper extends CommonBaseMapper<Producttype> {
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
 
     List<Producttype> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromProduct(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -25,4 +25,6 @@ public interface ProductunitMapper extends CommonBaseMapper<Productunit> {
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
 
     List<Productunit> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromProduct(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -26,4 +26,6 @@ public interface VendorkindMapper extends CommonBaseMapper<Vendorkind> {
     int selectCountByName(@Param("name") String name, @Param("companyId") Long companyId, @Param("id") Long id);
 
     List<Vendorkind> selectAll(@Param("companyId") Long companyId);
+
+    int getCountFromVendor(@Param("id") Long id, @Param("companyId") Long companyId);
 }

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

@@ -65,12 +65,25 @@ public class AddressServiceImpl extends CommonBaseServiceImpl<AddressMapper, Add
     @Override
     public boolean removeByPrimaryKey(Long id){
         if(id != null && id > 0){
+            //校验是否有采购单使用了这个地址
+            validUse(id);
             addressMapper.deleteByPrimaryKey(id);
             messageLogService.delete(generateMsgObj(id));
         }
         return true;
     }
 
+    /**
+     * 校验采购地址是否已经被使用
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromPurchase(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     /**
      * 批量删除
      * @param ids

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

@@ -45,7 +45,6 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     @Override
     public boolean save(Bankinformation bankinformation){
         bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
-        bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
         bankinformation.setBk_income(new Double(0));
         bankinformation.setBk_spending(new Double(0));
 
@@ -56,10 +55,11 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
             if (bktion != null){
                 throw new BizException(500, BizExceptionCode.ACCOUNT_EXISTS.getMessage());
             }
+            bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
             bankinformationMapper.insertSelective(bankinformation);
         }else {
+            Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode());
             if (bktion != null){
-                Long id = bankinformationMapper.selectBankId(bankinformation.getBk_bankcode());
                 if (id.equals(bankinformation.getId())){
                     bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
                 }else {

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

@@ -10,6 +10,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.entities.Bom;
@@ -200,7 +201,7 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
             getMapper().updateByPrimaryKeySelective(bom);
             //记录LOG
             DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-            messageLogService.close(docBaseDTO);
+            messageLogService.customizeLog(docBaseDTO, Operation.BANNED);
             return docBaseDTO;
         }else{
             throw new BizException(BizExceptionCode.ILLEGAL_ID);
@@ -226,7 +227,7 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
                 getMapper().updateByPrimaryKeySelective(bom);
                 //记录LOG
                 DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-                messageLogService.open(docBaseDTO);
+                messageLogService.customizeLog(docBaseDTO, Operation.ENABLE);
                 return docBaseDTO;
             }else {
                 throw new BizException(BizExceptionCode.BIZ_OPEN);

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

@@ -10,6 +10,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.dto.CustomerDTO;
@@ -22,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.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -119,7 +121,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         //返回对象
         DocBaseDTO baseDTO = null;
         Long cu_id = main.getId();
-        String cu_code = main.getCu_code();
+        String cu_code = main.getCu_code().trim().toUpperCase();
         Customer customer = BeanMapper.map(main,Customer.class);
         customer.setCompanyId(companyId);
         customer.setCreatorId(userId);
@@ -132,6 +134,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         customer.setCu_leftamount(beginapamount-beginprepayamount+recamount-preamount);
 
         //编号校验
+        cu_code = RegexpUtils.replaceSpecCharacter(cu_code);
         cu_code = pushMaxnubmer(cu_code, cu_id);
         //单号赋值
         customer.setCu_code(cu_code);
@@ -363,7 +366,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             getMapper().updateByPrimaryKeySelective(customer);
             docBaseDTO = getBaseDTOById(id);
             //日志
-            messageLogService.close(docBaseDTO);
+            messageLogService.customizeLog(docBaseDTO, Operation.BANNED);
         }
         return docBaseDTO;
     }
@@ -398,7 +401,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             getMapper().updateByPrimaryKeySelective(customer);
             docBaseDTO = getBaseDTOById(id);
             //日志
-        messageLogService.open(docBaseDTO);
+        messageLogService.customizeLog(docBaseDTO, Operation.ENABLE);
         }
         return docBaseDTO;
     }

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

@@ -60,12 +60,25 @@ public class CustomerkindServiceImpl extends CommonBaseServiceImpl<CustomerkindM
     @Override
     public boolean removeByPrimaryKey(Long id){
         if(id != null && id > 0){
+            //查找客户资料里是否用了该客户类型
+            validUse(id);
             customerkindMapper.deleteByPrimaryKey(id);
             messageLogService.delete(generateMsgObj(id));
         }
         return true;
     }
 
+    /**
+     * 校验客户资料里是否已使用这个客户类型
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromCustomer(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     /**
      * 构造 记录日志对象
      * @param id

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

@@ -12,6 +12,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.dto.ProductDTO;
@@ -309,7 +310,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             getMapper().updateByPrimaryKeySelective(product);
             //记录LOG
             docBaseDTO = generateMsgObj(id, code);
-            messageLogService.close(docBaseDTO);
+            messageLogService.customizeLog(docBaseDTO, Operation.BANNED);
             return docBaseDTO;
         }else{
             throw new BizException(BizExceptionCode.ILLEGAL_ID);
@@ -336,7 +337,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                 getMapper().updateByPrimaryKeySelective(product);
                 //记录LOG
                 docBaseDTO = generateMsgObj(id, code);
-                messageLogService.open(docBaseDTO);
+                messageLogService.customizeLog(docBaseDTO, Operation.ENABLE);
                 return docBaseDTO;
             }
         }else{

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

@@ -56,6 +56,10 @@ public class ProductbrandServiceImpl extends CommonBaseServiceImpl<ProductbrandM
 
     @Override
     public boolean removeByPrimaryKey(Long id){
+        if (id == null || id < 0){
+            throw new BizException(BizExceptionCode.ILLEGAL_ID);
+        }
+        validUse(id);
         productbrandMapper.deleteByPrimaryKey(id);
         //记录日志
         DocBaseDTO docBaseDTO = new DocBaseDTO(id, null, LOG_NAME);
@@ -63,6 +67,17 @@ public class ProductbrandServiceImpl extends CommonBaseServiceImpl<ProductbrandM
         return true;
     }
 
+    /**
+     * 校验物料品牌是否已经在使用
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromProduct(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     @Override
     public List<ComboDTO> getCombo() {
         return getMapper().getCombo(BaseContextHolder.getCompanyId());

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

@@ -64,6 +64,7 @@ public class ProducttypeServiceImpl extends CommonBaseServiceImpl<ProducttypeMap
     @Override
     public boolean removeByPrimaryKey(Long id){
         if(id != null && id > 0){
+            validUse(id);
             producttypeMapper.deleteByPrimaryKey(id);
             //记录LOG
             messageLogService.delete(generateMsgObj(id));
@@ -71,6 +72,17 @@ public class ProducttypeServiceImpl extends CommonBaseServiceImpl<ProducttypeMap
         return true;
     }
 
+    /**
+     * 校验物料类型是否已经被物料资料所使用
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromProduct(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     /**
      * 构造 记录日志对象
      * @param id

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

@@ -52,6 +52,7 @@ public class ProductunitServiceImpl extends CommonBaseServiceImpl<ProductunitMap
     @Override
     public boolean removeByPrimaryKey(Long id){
         if(id != null && id > 0){
+            validUse(id);
             getMapper().deleteByPrimaryKey(id);
             //记录LOG
             messageLogService.delete(generateMsgObj(id));
@@ -59,6 +60,17 @@ public class ProductunitServiceImpl extends CommonBaseServiceImpl<ProductunitMap
         return true;
     }
 
+    /**
+     * 校验物料单位是否已使用
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromProduct(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     @Override
     public List<Productunit> findAll(){
         List<Productunit> productunitList = getMapper().selectAll();

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

@@ -11,6 +11,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.dto.VendorDTO;
@@ -25,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.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -115,7 +117,9 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         Vendor main = vendorListDTO.getMain();
         main.setCompanyId(BaseContextHolder.getCompanyId());
         List<Vendorcontact> items = vendorListDTO.getItems();
-        String code = pushMaxnubmer(main.getVe_code(), main.getId());
+        String ve_code = main.getVe_code().trim().toUpperCase();
+        ve_code = RegexpUtils.replaceSpecCharacter(ve_code);
+        String code = pushMaxnubmer(ve_code, main.getId());
         if(main.getId() == 0){
             int count = getMapper().getCountByCode(code, companyId);
             if(count > 0){
@@ -300,7 +304,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             getMapper().updateByPrimaryKeySelective(vendor);
             //记录LOG
             DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-            messageLogService.close(docBaseDTO);
+            messageLogService.customizeLog(docBaseDTO, Operation.BANNED);
             return docBaseDTO;
         }else{
             throw new BizException(BizExceptionCode.ILLEGAL_ID);
@@ -328,7 +332,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 getMapper().updateByPrimaryKeySelective(vendor);
                 //记录LOG
                 DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-                messageLogService.open(docBaseDTO);
+                messageLogService.customizeLog(docBaseDTO, Operation.ENABLE);
                 return docBaseDTO;
             }else {
                 throw new BizException(BizExceptionCode.BIZ_OPEN);

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

@@ -54,6 +54,7 @@ public class VendorkindServiceImpl extends CommonBaseServiceImpl<VendorkindMappe
     @Override
     public boolean removeByPrimaryKey(Long id){
         if(id != null && id > 0){
+            validUse(id);
             vendorkindMapper.deleteByPrimaryKey(id);
             //记录LOG
             messageLogService.delete(generateMsgObj(id));
@@ -61,6 +62,17 @@ public class VendorkindServiceImpl extends CommonBaseServiceImpl<VendorkindMappe
         return true;
     }
 
+    /**
+     * 校验供应商类型是否已被供应商资料使用
+     * @param id
+     */
+    private void validUse(Long id) {
+        int count = getMapper().getCountFromVendor(id, BaseContextHolder.getCompanyId());
+        if (count > 0){
+            throw new BizException(BizExceptionCode.BIZ_RELDELETE);
+        }
+    }
+
     /**
      * 构造 记录日志对象
      * @param id

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

@@ -10,6 +10,7 @@ import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.po.BillCodeSeq;
+import com.usoftchina.saas.commons.po.Operation;
 import com.usoftchina.saas.commons.po.Status;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.entities.Warehouse;
@@ -17,6 +18,7 @@ import com.usoftchina.saas.document.mapper.WarehouseMapper;
 import com.usoftchina.saas.document.service.WarehouseService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.RegexpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -106,7 +108,9 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
         DocBaseDTO docBaseDTO = null;
         Long companyId = BaseContextHolder.getCompanyId();
         if(record.getId() == 0){
-            String code = pushMaxnubmer(record.getWh_code(), record.getId());
+            String whcode = record.getWh_code().trim().toUpperCase();
+            whcode = RegexpUtils.replaceSpecCharacter(whcode);
+            String code = pushMaxnubmer(whcode, record.getId());
             record.setCompanyId(BaseContextHolder.getCompanyId());
             record.setCreatorId(BaseContextHolder.getUserId());
             record.setCreateTime(new Date());
@@ -177,7 +181,7 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
             getMapper().updateByPrimaryKeySelective(warehouse);
             //记录LOG
             DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-            messageLogService.close(docBaseDTO);
+            messageLogService.customizeLog(docBaseDTO, Operation.BANNED);
             return docBaseDTO;
         }else{
             throw new BizException(BizExceptionCode.ILLEGAL_ID);
@@ -203,7 +207,7 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
                 getMapper().updateByPrimaryKeySelective(warehouse);
                 //记录LOG
                 DocBaseDTO docBaseDTO = generateMsgObj(id, code);
-                messageLogService.open(docBaseDTO);
+                messageLogService.customizeLog(docBaseDTO, Operation.ENABLE);
                 return docBaseDTO;
             }else {
                 throw new BizException(BizExceptionCode.BIZ_OPEN);

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/AddressMapper.xml

@@ -198,4 +198,7 @@
     <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
         SELECT AD_ADDRESS display,AD_ADDRESS value FROM ADDRESS WHERE COMPANYID=#{companyId}
     </select>
+    <select id="getCountFromPurchase" resultType="int">
+        SELECT COUNT(*) FROM PURCHASE WHERE PU_SHIPADDRESSCODE = (SELECT AD_ADDRESS FROM ADDRESS WHERE AD_ID = #{id}) AND companyId = #{companyId}
+    </select>
 </mapper>

+ 4 - 0
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -340,6 +340,10 @@
         select bk_bankcode from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
     </select>
 
+  <select id="selectBankId" parameterType="java.lang.String" resultType="java.lang.Long">
+        select bk_id from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
+   </select>
+
   <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">
         CALL SP_LIMITBASE(?, ?, ?, ?,?)
     </select>

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/CustomerkindMapper.xml

@@ -139,4 +139,7 @@
             </if>
         </where>
     </select>
+    <select id="getCountFromCustomer" resultType="int">
+        SELECT COUNT(*) FROM CUSTOMER WHERE CU_TYPE = (SELECT CK_NAME FROM CUSTOMERKIND WHERE CK_ID = #{id}) AND companyid = #{companyId};
+    </select>
 </mapper>

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/ProductbrandMapper.xml

@@ -146,4 +146,7 @@
         </if>
     </where>
   </select>
+    <select id="getCountFromProduct" resultType="int">
+        SELECT COUNT(*) FROM PRODUCT WHERE PR_BRAND = (SELECT PB_NAME FROM PRODUCTBRAND WHERE PB_ID = #{id}) AND companyId = #{companyId}
+    </select>
 </mapper>

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/ProducttypeMapper.xml

@@ -145,4 +145,7 @@
     <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
         SELECT PT_NAME display,PT_NAME value FROM PRODUCTTYPE WHERE COMPANYID=#{companyId}
     </select>
+    <select id="getCountFromProduct" resultType="int">
+        SELECT COUNT(*) FROM PRODUCT WHERE PR_KIND = (SELECT PT_NAME FROM PRODUCTTYPE WHERE PT_ID = #{id}) AND companyId=#{companyId}
+    </select>
 </mapper>

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/ProductunitMapper.xml

@@ -139,4 +139,7 @@
     <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
         SELECT PU_NAME display,PU_NAME value FROM PRODUCTUNIT WHERE COMPANYID=#{companyId}
     </select>
+    <select id="getCountFromProduct" resultType="int">
+        SELECT COUNT(*) FROM PRODUCT WHERE PR_UNIT = (SELECT PU_NAME FROM PRODUCTUNIT WHERE PU_ID = #{id}) AND companyId = #{companyId}
+    </select>
 </mapper>

+ 3 - 0
applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml

@@ -145,4 +145,7 @@
         </if>
     </where>
   </select>
+    <select id="getCountFromVendor" resultType="int">
+        SELECT COUNT(*) FROM VENDOR WHERE VE_TYPE = (SELECT VK_NAME FROM VENDORKIND WHERE VK_ID = #{id}) AND companyId = #{companyId}
+    </select>
 </mapper>

+ 1 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferdetailMapper.java

@@ -13,7 +13,7 @@ public interface FundtransferdetailMapper {
 
     int insertSelective(Fundtransferdetail record);
 
-    List<Fundtransferdetail> selectByPrimaryKey(@Param("id") Integer ftdId, @Param("companyId") Integer companyId);
+    List<Fundtransferdetail> selectByPrimaryKeyList(@Param("id") Integer ftdId, @Param("companyId") Integer companyId);
 
     int updateByPrimaryKeySelective(Fundtransferdetail record);
 

+ 19 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransferdetail.java

@@ -47,6 +47,25 @@ public class Fundtransferdetail extends CommonBaseEntity implements Serializable
 
     private String ftd_text5;
 
+    private Double bk_outthisamount;
+    private Double bk_inthisamount;
+
+    public Double getBk_outthisamount() {
+        return bk_outthisamount;
+    }
+
+    public void setBk_outthisamount(Double bk_outthisamount) {
+        this.bk_outthisamount = bk_outthisamount;
+    }
+
+    public Double getBk_inthisamount() {
+        return bk_inthisamount;
+    }
+
+    public void setBk_inthisamount(Double bk_inthisamount) {
+        this.bk_inthisamount = bk_inthisamount;
+    }
+
     public Date getFt_date() {
         return ft_date;
     }

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

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -70,6 +71,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         }else {
             fundtransfer.setCompanyId(BaseContextHolder.getCompanyId());
             fundtransfer.setFt_recorder(BaseContextHolder.getUserName());
+            fundtransfer.setCreatorName(BaseContextHolder.getUserName());
             fundtransferMapper.insertSelective(fundtransfer);
             id = fundtransfer.getId();
 
@@ -99,6 +101,8 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         Fundtransfer fundtransfer = fundtran.getMain();
         fundtransfer.setFt_status(Status.AUDITED.getDisplay());
         fundtransfer.setFt_statuscode(Status.AUDITED.name());
+        fundtransfer.setFt_auditman(BaseContextHolder.getUserName());
+        fundtransfer.setFt_auditdate(new Date());
         fundtransfer.setCompanyId(companyId);
         this.changBankUntil(fundtran);
         DocBaseDTO docBaseDTO = this.insert(fundtran);
@@ -186,6 +190,8 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         fundtransfer.setId(Long.valueOf(id));
         fundtransfer.setFt_status(com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay());
         fundtransfer.setFt_statuscode(Status.UNAUDITED.name());
+        fundtransfer.setFt_auditman(null);
+        fundtransfer.setFt_auditdate(null);
         fundtransferMapper.updateByPrimaryKeySelective(fundtransfer);
 
         //删除中间表
@@ -194,7 +200,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
 
         //资金
         //取从表金额
-        List<Fundtransferdetail> fundtransferdetailList = fundtransferdetailMapper.selectByPrimaryKey(id, Math.toIntExact(BaseContextHolder.getCompanyId()));
+        List<Fundtransferdetail> fundtransferdetailList = fundtransferdetailMapper.selectByPrimaryKeyList(id, Math.toIntExact(BaseContextHolder.getCompanyId()));
         Iterator isList = fundtransferdetailList.iterator();
         while (isList.hasNext()){
             Fundtransferdetail fundtransferdetail = (Fundtransferdetail) isList.next();
@@ -299,7 +305,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
     public Fundtran select(int id) {
         Fundtran fundtran = new Fundtran();
         fundtran.setMain(fundtransferMapper.selectByPrimaryKey(id));
-        fundtran.setItems(fundtransferdetailMapper.selectByPrimaryKey(id, Math.toIntExact(BaseContextHolder.getCompanyId())));
+        fundtran.setItems(fundtransferdetailMapper.selectByPrimaryKeyList(id, Math.toIntExact(BaseContextHolder.getCompanyId())));
         return fundtran;
     }
 

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

@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -78,6 +79,8 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         }else {
             othreceipts.setCompanyId(BaseContextHolder.getCompanyId());
             othreceipts.setOr_recorder(BaseContextHolder.getUserName());
+            othreceipts.setCreatorName(BaseContextHolder.getUserName());
+            othreceipts.setCreateTime(new Date());
             othreceiptsMapper.insertSelective(othreceipts);
             id = othreceipts.getId();
             baseDTO = getBaseDTOById(id);
@@ -106,6 +109,8 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         Othreceipts othreceipts = othte.getMain();
         othreceipts.setOr_status(Status.AUDITED.getDisplay());
         othreceipts.setOr_statuscode(Status.AUDITED.name());
+        othreceipts.setOr_auditman(BaseContextHolder.getUserName());
+        othreceipts.setOr_auditdate(new Date());
         this.changBankUntil(othte);
         DocBaseDTO docBaseDTO = this.insert(othte);
         Long id = docBaseDTO.getId();
@@ -197,11 +202,14 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         othreceipts.setId(Long.valueOf(id));
         othreceipts.setOr_status(com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay());
         othreceipts.setOr_statuscode(Status.UNAUDITED.name());
+        othreceipts.setOr_auditman(null);
+        othreceipts.setOr_auditdate(null);
         othreceiptsMapper.updateByPrimaryKeySelective(othreceipts);
 
         //删除中间表
         othreceipts = othreceiptsMapper.selectByPrimaryKey(id);
         banksubledgerMapper.deleteByPrimaryKey(othreceipts.getOr_code(), "其他收入单");
+        subledgerMapper.deleteByPrimaryKey(othreceipts.getOr_code(), "其他收入单");
 
         //更新资金
         Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
@@ -213,6 +221,41 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
                     othreceipts.getOr_bankcode(), "-");
         }
 
+        //资金账号表
+        int bk_inid = othreceipts.getOr_bankid();
+
+        Double or_amount = othreceipts.getOr_amount();
+        //收款
+        Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_inid);
+        Double beginamount = bankinformation.getBk_beginamount();
+        Double spending = bankinformation.getBk_spending() == null ? new Double(0) : bankinformation.getBk_spending();
+        Double incomme = bankinformation.getBk_income() == null ? new Double(0) : bankinformation.getBk_income();
+        bankinformation.setBk_thisamount(beginamount + incomme - spending - or_amount);
+        bankinformation.setBk_income(incomme - or_amount);
+        bankinformation.setBk_spending(spending);
+        bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
+
+        //客户付款
+        /**
+         * 更新客户资料
+         * cu_preamount=nvl(cu_preamount,0)+rb_preamount,
+         * cu_recamount=nvl(cu_recamount,0)-rb_rbdamount,
+         * cu_leftamount=cu_beginaramount-cu_beginprerecamount+cu_recamount-cu_preamount;
+         */
+        Customer customerData = recbalanceMapper.selectCustomerByPrimaryKey(othreceipts.getOr_custid());
+        Double preamount = customerData.getCu_preamount()==null?new Double(0):customerData.getCu_preamount();
+        Double beginapamount = customerData.getCu_beginaramount()==null?new Double(0):customerData.getCu_beginaramount();
+        Double beginprepayamount= customerData.getCu_beginprerecamount()==null?new Double(0):customerData.getCu_beginprerecamount();
+        Double recamount = customerData.getCu_recamount()==null?new Double(0):customerData.getCu_recamount();
+
+        Customer customer = new Customer();
+        customer.setId(Long.valueOf(othreceipts.getOr_custid()));
+        customer.setCu_preamount(preamount);
+        customer.setCu_recamount(recamount-or_amount);
+        customer.setCu_leftamount(beginapamount+beginprepayamount-recamount+or_amount+preamount);
+        recbalanceMapper.updateCustomerByPrimaryKeySelective(customer);
+
+
         //计算期间金额
         Statsinfo statsinfo = new Statsinfo();
         List<Integer> ymList = othreceiptsdetailMapper.selectYm(id);

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

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -73,6 +74,8 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         }else {
             othspendings.setCompanyId(BaseContextHolder.getCompanyId());
             othspendings.setOs_recorder(BaseContextHolder.getUserName());
+            othspendings.setCreatorName(BaseContextHolder.getUserName());
+            othspendings.setCreateTime(new Date());
             othspendingsMapper.insertSelective(othspendings);
             id = othspendings.getId();
 
@@ -143,6 +146,8 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         othspendings.setOs_status(Status.AUDITED.getDisplay());
         othspendings.setOs_statuscode(Status.AUDITED.name());
         othspendings.setCompanyId(companyId);
+        othspendings.setOs_auditdate(new Date());
+        othspendings.setOs_auditman(BaseContextHolder.getUserName());
         this.changBankUntil(othsp);
         DocBaseDTO docBaseDTO = this.insert(othsp);
         Long id = docBaseDTO.getId();
@@ -172,6 +177,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         bankinformation.setBk_thisamount(beginamount + incomme - spending - bk_amount);
         bankinformation.setBk_income(incomme);
         bankinformation.setBk_spending(spending + bk_amount);
+        bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
 
         /**
          * ve_preamount=nvl(ve_preamount,0)+pb_preamount,
@@ -228,11 +234,13 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         othspendings.setId(Long.valueOf(id));
         othspendings.setOs_status(com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay());
         othspendings.setOs_statuscode(Status.UNAUDITED.name());
+        othspendings.setOs_auditman(null);
+        othspendings.setOs_auditdate(null);
         othspendingsMapper.updateByPrimaryKeySelective(othspendings);
 
         //删除中间表
         othspendings = othspendingsMapper.selectByPrimaryKey(id);
-        banksubledgerMapper.deleteByPrimaryKey(othspendings.getOs_code(), "其他收入单");
+        banksubledgerMapper.deleteByPrimaryKey(othspendings.getOs_code(), "其他支出单");
         subledgerMapper.deleteByPrimaryKey(othspendings.getOs_code(), "其他支出单");
 
         //资金
@@ -255,9 +263,10 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         Double beginamount = bankinformation.getBk_beginamount();
         Double spending = bankinformation.getBk_spending() == null ? new Double(0) : bankinformation.getBk_spending();
         Double incomme = bankinformation.getBk_income() == null ? new Double(0) : bankinformation.getBk_income();
-        bankinformation.setBk_thisamount(beginamount + incomme - spending - bk_amount);
+        bankinformation.setBk_thisamount(beginamount + incomme - spending + bk_amount);
         bankinformation.setBk_income(incomme);
-        bankinformation.setBk_spending(spending + bk_amount);
+        bankinformation.setBk_spending(spending - bk_amount);
+        bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
 
         /**
          * ve_preamount=nvl(ve_preamount,0)+pb_preamount,

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

@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -78,6 +79,8 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         }else {
             paybalance.setCompanyId(BaseContextHolder.getCompanyId());
             paybalance.setPb_recorder(BaseContextHolder.getUserName());
+            paybalance.setCreatorName(BaseContextHolder.getUserName());
+            paybalance.setCreateTime(new Date());
             paybalanceMapper.insertSelective(paybalance);
             pbId = paybalance.getId();
             baseDTO = getBaseDTOById(pbId);
@@ -188,6 +191,9 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         paybalance.setCompanyId(companyId);
         paybalance.setPb_status(Status.AUDITED.getDisplay());
         paybalance.setPb_statuscode(Status.AUDITED.name());
+        paybalance.setPb_auditman(BaseContextHolder.getUserName());
+        paybalance.setPb_auditdate(new Date());
+        pay.setMain(paybalance);
         Subledger subledger = this.changSubledgerUntil(paybalance);
         if (subledger.getSl_code() == null){
             subledgerMapper.insertSelective(subledger);
@@ -338,6 +344,8 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         paybalance.setId(Long.valueOf(id));
         paybalance.setPb_status(com.usoftchina.saas.commons.po.Status.UNAUDITED.getDisplay());
         paybalance.setPb_statuscode(Status.UNAUDITED.name());
+        paybalance.setPb_auditman(null);
+        paybalance.setPb_auditdate(null);
         paybalanceMapper.updateByPrimaryKeySelective(paybalance);
 
         //删除中间表

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

@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
@@ -76,6 +77,8 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         }else {
             recbalance.setCompanyId(BaseContextHolder.getCompanyId());
             recbalance.setRb_recorder(BaseContextHolder.getUserName());
+            recbalance.setCreatorName(BaseContextHolder.getUserName());
+            recbalance.setCreateTime(new Date());
             recbalanceMapper.insertSelective(recbalance);
             rbId = recbalance.getId();
 
@@ -224,6 +227,9 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         recbalance.setCompanyId(companyId);
         recbalance.setRb_status(Status.AUDITED.getDisplay());
         recbalance.setRb_statuscode(Status.AUDITED.name());
+        recbalance.setRb_auditman(BaseContextHolder.getUserName());
+        recbalance.setRb_auditdate(new Date());
+        rec.setMain(recbalance);
         Subledger subledger = this.changSubledgerUntil(recbalance);
         if (subledger.getSl_code() == null){
             subledgerMapper.insertSelective(subledger);
@@ -363,6 +369,8 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         recbalance.setId(id);
         recbalance.setRb_status(Status.UNAUDITED.getDisplay());
         recbalance.setRb_statuscode(Status.UNAUDITED.name());
+        recbalance.setRb_auditman(null);
+        recbalance.setRb_auditdate(null);
         recbalanceMapper.updateByPrimaryKeySelective(recbalance);
 
         //删除中间表

+ 2 - 0
applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml

@@ -225,6 +225,8 @@
       <if test="ft_text5 != null" >
         ft_text5 = #{ft_text5,jdbcType=VARCHAR},
       </if>
+        ft_auditman = #{ft_auditman,jdbcType=VARCHAR},
+        ft_auditdate = #{ft_auditdate,jdbcType=TIMESTAMP}
     </set>
     where ft_id = #{id,jdbcType=INTEGER}
   </update>

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

@@ -25,12 +25,17 @@
     <result column="ftd_text3" property="ftd_text3" jdbcType="VARCHAR" />
     <result column="ftd_text4" property="ftd_text4" jdbcType="VARCHAR" />
     <result column="ftd_text5" property="ftd_text5" jdbcType="VARCHAR" />
+      <result column="bk_outthisamount" property="bk_outthisamount" jdbcType="DOUBLE" />
+      <result column="bk_inthisamount" property="bk_inthisamount" jdbcType="DOUBLE" />
   </resultMap>
   <sql id="Base_Column_List" >
     ftd_id, ftd_ftid, ftd_detno, ftd_ym, ftd_bankid, ftd_bankcode, ftd_bankname, ftd_inbankid, 
     ftd_inbankcode, ftd_inbankname, ftd_nowbalance, ftd_paymethod, ftd_paycode, ftd_remark, 
     companyid, updaterId, updatedate, ftd_text1, ftd_text2, ftd_text3, ftd_text4, ftd_text5
   </sql>
+    <sql id="Bank_Column_List">
+        b.bk_thisamount as bk_outthisamount,c.bk_thisamount as bk_inthisamount
+    </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
     <include refid="Base_Column_List" />
@@ -38,6 +43,16 @@
     where ftd_ftid = #{id,jdbcType=INTEGER} and companyId = #{companyId}
   </select>
 
+    <select id="selectByPrimaryKeyList" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select
+    <include refid="Base_Column_List"/>,
+        <include refid="Bank_Column_List" />
+    from fundtransferdetail,
+    (select bk_id,bk_thisamount from bankinformation) b,
+    (select bk_id, bk_thisamount from bankinformation)c
+    where ftd_ftid = #{id,jdbcType=INTEGER} and companyId = #{companyId} and ftd_bankid = b.bk_id and
+    ftd_inbankid = c.bk_id
+    </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from fundtransferdetail
     where ftd_ftid = #{id,jdbcType=INTEGER}

+ 2 - 0
applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml

@@ -300,6 +300,8 @@
       <if test="or_text5 != null" >
         or_text5 = #{or_text5,jdbcType=VARCHAR},
       </if>
+      or_auditman = #{or_auditman,jdbcType=VARCHAR},
+      or_auditdate = #{or_auditdate,jdbcType=TIMESTAMP}
     </set>
     where or_id = #{id,jdbcType=INTEGER}
   </update>

+ 2 - 0
applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml

@@ -295,6 +295,8 @@
       <if test="os_text5 != null" >
         os_text5 = #{os_text5,jdbcType=VARCHAR},
       </if>
+      os_auditman = #{os_auditman,jdbcType=VARCHAR},
+      os_auditdate = #{os_auditdate,jdbcType=TIMESTAMP}
     </set>
     where os_id = #{id,jdbcType=INTEGER}
   </update>

+ 6 - 0
applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml

@@ -414,6 +414,12 @@
       <if test="pb_text5 != null">
         pb_text5 = #{pb_text5,jdbcType=VARCHAR},
       </if>
+      <if test="pb_auditman !=null">
+        pb_auditman = #{pb_auditman,jdbcType=VARCHAR},
+      </if>
+      <if test="pb_auditdate !=null">
+        pb_auditdate = #{pb_auditdate,jdbcType=TIMESTAMP}
+      </if>
     </set>
     where pb_id = #{id,jdbcType=INTEGER}
   </update>

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

@@ -32,7 +32,7 @@
     select 
     <include refid="Base_Column_List" />
     from paybalancedet
-    where pd_pbid = #{id,jdbcType=INTEGER} order by pd_id desc
+    where pd_pbid = #{id,jdbcType=INTEGER} order by pd_detno asc
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer" >
     delete from paybalancedet

+ 6 - 0
applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml

@@ -581,6 +581,12 @@
       <if test="rb_text5 != null">
         rb_text5 = #{rb_text5,jdbcType=VARCHAR},
       </if>
+      <if test="rb_auditman !=null">
+        rb_auditman = #{rb_auditman,jdbcType=VARCHAR},
+      </if>
+    <if test="rb_auditdate !=null">
+      rb_auditdate = #{rb_auditdate,jdbcType=TIMESTAMP}
+    </if>
     </set>
     where rb_id = #{id,jdbcType=INTEGER}
   </update>

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

@@ -90,7 +90,7 @@
     select 
     <include refid="Base_Column_List" />
     from recbalancedet
-    where rd_rbid = #{id,jdbcType=INTEGER} order by rd_id desc
+    where rd_rbid = #{id,jdbcType=INTEGER} order by rd_detno asc
   </select>
   <delete id="deleteItem" parameterType="java.lang.Integer">
     delete from recbalancedet

+ 4 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -32,4 +32,8 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     Integer checkTurnInstatus(Long id);
 
     void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pu_id);
+
+    Integer validateVendor(@Param("id") Long id);
+
+    Integer validateProduct(@Param("id") Long id);
 }

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

@@ -499,6 +499,17 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     public Result singleAudit(Long id) {
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         Result result = Result.success(docBaseDTO);
+        //检查供应商是否开启状态
+        Integer count =0;
+        count = purchaseMapper.validateVendor(id);
+        if (count != 0) {
+            throw new BizException(BizExceptionCode.VENDOR_ISCLOSE);
+        }
+        //检查物料是否开启状态
+        count = purchaseMapper.validateProduct(id);
+        if (count != 0) {
+            throw new BizException(BizExceptionCode.PRODUCT_ISCLOSE);
+        }
         //检查最小包装数
         result.setMessage(purchasedetailMapper.checkzxbzs(id));
         commonService.commonAudit("purchase", "pu_id=" + id, "pu_status",

+ 9 - 0
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -436,5 +436,14 @@
     update purchase set creatorId = #{userId} , creatorName=#{userName} where pu_id=#{id}
   </update>
 
+  <select id="validateVendor" resultType="int" >
+    select count(1) from vendor where ve_id = (select pu_vendid from purchase where pu_id=#{id}) and ve_statuscode='CLOSE';
+  </select>
+
+  <select id="validateProduct" resultType="int" >
+    select count(1) from purchasedetail left join product on PD_PRODID=pr_id where  pd_puid=#{id} and pr_statuscode='CLOSE';
+  </select>
+
+
 
 </mapper>

+ 4 - 4
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -21,7 +21,7 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.server.error.ServletErrorUtils;
+import com.usoftchina.saas.server.web.ServletUtils;
 import com.usoftchina.saas.socket.api.SocketMessageApi;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
@@ -136,7 +136,7 @@ public class AuthController {
                     accountDTO = createAccountByCookieInfo(info);
                 } else {
                     logger.error(result.getMessage());
-                    ServletErrorUtils.writeJsonPMessage(response, callback, false);
+                    ServletUtils.writeJsonPMessage(response, callback, false);
                     return;
                 }
             } else {
@@ -147,7 +147,7 @@ public class AuthController {
                     Result updateResult = accountApi.update(BeanMapper.map(accountDTO, AccountUpdateDTO.class));
                     if (!updateResult.isSuccess()) {
                         logger.error(updateResult.getMessage());
-                        ServletErrorUtils.writeJsonPMessage(response, callback, false);
+                        ServletUtils.writeJsonPMessage(response, callback, false);
                         return;
                     }
                 }
@@ -170,7 +170,7 @@ public class AuthController {
                 socketMessageApi.sendToClient(clientId, "/sso/callback",
                         JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
             }
-            ServletErrorUtils.writeJsonPMessage(response, callback, true);
+            ServletUtils.writeJsonPMessage(response, callback, true);
         }
     }
 

+ 5 - 0
framework/core/src/main/java/com/usoftchina/saas/utils/RegexpUtils.java

@@ -56,6 +56,11 @@ public class RegexpUtils {
         return m.matches();
     }
 
+    /**
+     * 特殊字符替换
+     * @param str
+     * @return
+     */
     public static String replaceSpecCharacter(String str){
         Pattern p = Pattern.compile(SPECCHARACTER_EXP);
         Matcher m = p.matcher(str);

+ 0 - 28
framework/server-starter/src/main/java/com/usoftchina/saas/server/error/ServletErrorUtils.java

@@ -50,32 +50,4 @@ public class ServletErrorUtils {
         writer.flush();
     }
 
-    public static void writeMessage(HttpServletResponse response, String text) throws IOException {
-        response.setContentType(MediaType.TEXT_HTML_VALUE);
-        response.setCharacterEncoding("UTF-8");
-        PrintWriter writer = response.getWriter();
-        writer.print(text);
-        writer.flush();
-    }
-
-    /**
-     * 输出jsonp
-     *
-     * @param response
-     * @param callbackFn
-     * @param success
-     * @throws IOException
-     */
-    public static void writeJsonPMessage(HttpServletResponse response, String callbackFn, boolean success) throws IOException {
-        response.setContentType(MediaType.TEXT_HTML_VALUE);
-        response.setCharacterEncoding("UTF-8");
-        PrintWriter writer = response.getWriter();
-        writer.print(buildJsonPMessage(callbackFn, success));
-        writer.flush();
-    }
-
-    public static String buildJsonPMessage(String callbackFn, boolean success) {
-        return String.format("%s({success:\"%s\"})", callbackFn, success ? 1 : 0);
-    }
-
 }

+ 41 - 0
framework/server-starter/src/main/java/com/usoftchina/saas/server/web/ServletUtils.java

@@ -0,0 +1,41 @@
+package com.usoftchina.saas.server.web;
+
+import org.springframework.http.MediaType;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+/**
+ * @author yingp
+ * @date 2018/11/19
+ */
+public class ServletUtils {
+    public static void writeMessage(HttpServletResponse response, String text) throws IOException {
+        response.setContentType(MediaType.TEXT_HTML_VALUE);
+        response.setCharacterEncoding("UTF-8");
+        PrintWriter writer = response.getWriter();
+        writer.print(text);
+        writer.flush();
+    }
+
+    /**
+     * 输出jsonp
+     *
+     * @param response
+     * @param callbackFn
+     * @param success
+     * @throws IOException
+     */
+    public static void writeJsonPMessage(HttpServletResponse response, String callbackFn, boolean success) throws IOException {
+        response.setContentType(MediaType.TEXT_HTML_VALUE);
+        response.setCharacterEncoding("UTF-8");
+        PrintWriter writer = response.getWriter();
+        writer.print(buildJsonPMessage(callbackFn, success));
+        writer.flush();
+    }
+
+    public static String buildJsonPMessage(String callbackFn, boolean success) {
+        return String.format("%s({success:\"%s\"})", callbackFn, success ? 1 : 0);
+    }
+}

+ 13 - 0
frontend/saas-portal-web/config/env.js

@@ -1,16 +1,29 @@
 if (process.env.NODE_ENV == 'production') {
     window.env = {
         profile: 'production',
+        frontend: {
+            // 前端地址
+            baseUrl: 'http://192.168.0.181'
+        },
         server: {
+            // 后端接口网关
             baseUrl: 'http://192.168.0.181:8560',
+            // 账户中心接口
             ssoUrl: 'http://192.168.253.12:32323'
         }
     }
 } else {
     window.env = {
         profile: 'development',
+        frontend: {
+            // 前端地址
+            baseUrl: 'http://192.168.0.181'
+            // baseUrl: 'http://127.0.0.1:1841'
+        },
         server: {
+            // 后端接口网关
             baseUrl: 'http://192.168.0.181:8560',
+            // 账户中心接口
             ssoUrl: 'http://192.168.253.12:32323'
         }
     }

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

@@ -155,6 +155,25 @@ $(document).ready(function(){
             });
         });
     };
+    // 系统页面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();
     // 关闭弹窗X
     $(".tc-on").click(function(){
         $('#box-zc').css('display','none');
@@ -172,11 +191,17 @@ $(document).ready(function(){
             $('#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(){
+                    // TODO
+                    Frontend.redirect();
+                });
             });
         } else {
             $('#box').hide();

+ 2 - 1
frontend/saas-web/Dockerfile

@@ -2,4 +2,5 @@ FROM hub.c.163.com/library/nginx
 MAINTAINER USOFTCHINA <yingp@usoftchina.com>
 RUN rm /etc/nginx/conf.d/default.conf
 ADD runtime/nginx/default.conf /etc/nginx/conf.d/
-COPY build/production/saas/ /usr/share/nginx/html/
+COPY build/production/saas/ /usr/share/nginx/html/
+COPY set-token.html /usr/share/nginx/html/

+ 1 - 1
frontend/saas-web/app.json

@@ -296,7 +296,7 @@
         },*/
         "compressor":null,
         "server": {
-            "basePath": "http://192.168.253.181:8560",
+            "basePath": "http://192.168.0.181:8560",
             "urlPattern": "^\/api\/"
         }
     },

+ 6 - 3
frontend/saas-web/app/view/core/base/BasePanel.js

@@ -28,7 +28,8 @@ Ext.define('saas.view.core.base.BasePanel', {
     searchField:[],
     gridColumns: [],
 
-    _deleteMsg: '是否删除所选单据?',
+    deleteMoreMsg: '确认删除所选单据?',
+    deleteOneMsg: '确认删除该单据?',
 
     initComponent: function() {
 
@@ -38,7 +39,8 @@ Ext.define('saas.view.core.base.BasePanel', {
         gridIdField = gridConfig.idField,
         gridCodeField = gridConfig.codeField,
         gridStatusCodeField = gridConfig.statusCodeField,
-        gridColumns = gridConfig.columns;
+        gridColumns = gridConfig.columns,
+        deleteMsg = gridConfig.deleteMsg;
 
         Ext.apply(me, {
             dockedItems: [{
@@ -65,7 +67,8 @@ Ext.define('saas.view.core.base.BasePanel', {
                 idField: gridIdField,
                 codeField: gridCodeField,
                 columns: gridColumns,
-                statusCodeField : gridStatusCodeField
+                statusCodeField : gridStatusCodeField,
+                deleteMsg: deleteMsg
             }]
         });
         me.callParent(arguments);

+ 29 - 18
frontend/saas-web/app/view/core/base/GridPanel.js

@@ -123,11 +123,17 @@ Ext.define('saas.view.core.base.GridPanel', {
                         text: '删除',
                         handler: function(){
                             var form = this.ownerCt.ownerCt.ownerCt;
-                            saas.util.BaseUtil.deleteWarn(form._deleteMsg,function(btn){
-                                if(btn == 'yes'){
-                                    me.onVastDeal(form._batchDeleteUrl);
-                                }
-                            });
+
+                            var data = me.getGridSelected(form._batchDeleteUrl);
+                            if(data && data.length > 0) {
+                                saas.util.BaseUtil.deleteWarn(form.deleteMoreMsg,function(btn){
+                                    if(btn == 'yes'){
+                                        me.onVastDeal(form._batchDeleteUrl);
+                                    }
+                                });
+                            }else {
+                                saas.util.BaseUtil.showToast('请至少选择一条明细');
+                            }
                         }
                     }, {
                         text: '刷新',
@@ -199,20 +205,25 @@ Ext.define('saas.view.core.base.GridPanel', {
                 //删除
                 var id = record.get('id');
                 if(id){
-                    saas.util.BaseUtil.request({
-                        url: form._deleteUrl+id,
-                        method: 'POST',
-                    })
-                    .then(function(localJson) {
-                        if(localJson.success){
-                            //解析参数
-                            saas.util.BaseUtil.showToast('删除成功');
-                            view.ownerCt.store.load();
+                    saas.util.BaseUtil.showConfirm('警告', form.deleteOneMsg)
+                    .then(function(yes) {
+                        if(yes == 'yes') {
+                            saas.util.BaseUtil.request({
+                                url: form._deleteUrl+id,
+                                method: 'POST',
+                            })
+                            .then(function(localJson) {
+                                if(localJson.success){
+                                    //解析参数
+                                    saas.util.BaseUtil.showToast('删除成功');
+                                    view.ownerCt.store.load();
+                                }
+                            })
+                            .catch(function(res) {
+                                console.error(res);
+                                saas.util.BaseUtil.showToast('删除失败: ' + res.message);
+                            });
                         }
-                    })
-                    .catch(function(res) {
-                        console.error(res);
-                        saas.util.BaseUtil.showToast('删除失败: ' + res.message);
                     });
                 }
             }

+ 8 - 6
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -36,7 +36,7 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                             condition = [];
                         }
                         //添加默认条件
-                        if(me.ownerCt.trigger.defaultCondition) {
+                        if(me.up('window').trigger.defaultCondition) {
                             condition.push({
                                 type: 'condition',
                                 value: me.ownerCt.trigger.defaultCondition
@@ -71,11 +71,7 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                     },'->',{
                         xtype:'button',
                         text:'新增',
-                        handler:function(b){
-                            var grid = me;
-                            var trigger = grid.ownerCt.trigger;
-                            saas.util.BaseUtil.openTab(trigger.addXtype, '新增'+trigger.addTitle,trigger.addXtype + '_add');
-                        }
+                        handler: me.onAddClick.bind(me)
                     }])
                 },{
                     xtype: 'pagingtoolbar',
@@ -267,5 +263,11 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
         }
 
         return conditionValue;
+    },
+
+    onAddClick: function(){
+        var grid = this;
+        var trigger = grid.ownerCt.trigger;
+        saas.util.BaseUtil.openTab(trigger.addXtype, '新增'+trigger.addTitle,trigger.addXtype + '_add');
     }
 });

+ 17 - 9
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -122,6 +122,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     	}
     },
     onTriggerClick:function(f){
+        var me = this;
         this.fireEvent('beforetriggerclick', this);
         f.blur(f);
         //判断dbfindtrigger归属
@@ -135,6 +136,21 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
         var box = panelEl.getBox();
         var height = box.height;
         var width = box.width;
+
+        var dbItem = {
+            xtype:'dbfindgridpanel',
+            columns: f.dbColumns,
+            dataUrl: f.dataUrl,
+            dbfinds: f.dbfinds,
+            belong: f.belong,
+            dbSearchFields:f.dbSearchFields?f.dbSearchFields:[],
+            dbfindtrigger:f,
+        };
+
+        if(me.onAddClick) {
+            dbItem.onAddClick = me.onAddClick;
+        }
+
         var win = panel.add(Ext.create('Ext.window.Window', {   
             trigger:f,
             belong:f.ownerCt,  
@@ -148,15 +164,7 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
             closable: true,
             layout:'fit',
             renderTo:panel.getEl(),
-            items:[{
-                xtype:'dbfindgridpanel',
-                columns: f.dbColumns,
-                dataUrl: f.dataUrl,
-                dbfinds: f.dbfinds,
-                belong: f.belong,
-                dbSearchFields:f.dbSearchFields?f.dbSearchFields:[],
-                dbfindtrigger:f
-            }]
+            items:[dbItem]
         }));
         win.show();
     },

+ 3 - 3
frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js

@@ -73,15 +73,15 @@ Ext.define('saas.view.core.dbfind.types.VendorDbfindTrigger', {
         }
     }, {
         text: "纳税人识别号",
-        dataIndex: "ve_bankaccount",
+        dataIndex: "ve_nsrzh",
         width: 150
     }, {
         text: "开户银行",
-        dataIndex: "ve_bankaccount",
+        dataIndex: "ve_bankcode",
         width: 150
     }, {
         text: "银行账户",
-        dataIndex: "ve_bankcode",
+        dataIndex: "ve_bankaccount",
         width: 200
     }]
 

+ 79 - 1
frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js

@@ -49,6 +49,84 @@ Ext.define('saas.view.core.dbfind.types.WarehouseDbfindTrigger', {
         flex: 1,
         dataIndex: "wh_type",
         xtype: "",
-    }]
+    }],
+
+    onAddClick: function() {
+        var me=this;
+        var tab = saas.util.BaseUtil.getCurrentTab();
+        // this.isEdit = !!record;
+        this.dialog = tab.add({
+            autoScroll:true,
+            xtype: 'document-kind-childwin',
+            bind: {
+                title: '新增仓库资料'
+            },
+            dataKind: 'warehouse',
+            belong: {
+                columns: [{
+                    text: '编号',
+                    dataIndex: 'wh_code',
+                    width: 200
+                },{
+                    text: '仓库名称',
+                    dataIndex: 'wh_description',
+                    width: 200
+                },{
+                    text: '类型',
+                    dataIndex: 'wh_type',
+                    width: 200
+                },{  
+                    text: '仓库状态码',
+                    dataIndex: 'wh_status',
+                    hidden:true,
+                },{
+                    text: '仓库状态',
+                    dataIndex: 'wh_statuscode',
+                    width:90,
+                    xtype: 'actioncolumn',
+                    align : 'center',
+                    items: [{
+                        iconCls:'',
+                        getClass: function(v, meta, rec) {
+                            if(rec.get('wh_statuscode')=='OPEN'){
+                                return 'x-grid-checkcolumn-checked-btn';
+                            }else{
+                                return 'x-grid-checkcolumn-btn';
+                            }
+                        },
+                        handler: function(view, rowIndex, colIndex) {
+                            var rec = view.getStore().getAt(rowIndex);
+                            var type=rec.get('wh_statuscode')=='OPEN'?true:false;
+                            //  禁用/启用
+                            var form = this.ownerCt.ownerCt.ownerCt;
+                            var grid = this.ownerCt.ownerCt;
+                            saas.util.BaseUtil.request({
+                                url: (!type?form._openUrl:form._closeUrl)+'/'+rec.get('id'),
+                                params: '',
+                                method: 'POST',
+                            })
+                            .then(function(localJson) {
+                                if(localJson.success){
+                                    saas.util.BaseUtil.showToast('操作成功');
+                                    grid.store.load();
+                                }
+                            })
+                            .catch(function(res) {
+                                console.error(res);
+                                saas.util.BaseUtil.showToast('操作失败: ' + res.message);
+                            });
+                        }
+                    }]
+                }],
+                keyField:'id',
+                reqUrl: '/api/document/warehouse/save',
+                delUrl: '/api/document/warehouse/delete'
+            },
+            // _parent:this.getView(),
+            // record:record,
+            session: true
+        });
+        this.dialog.show();
+    }
 
 });

+ 7 - 4
frontend/saas-web/app/view/core/form/DataMultiCombo.js

@@ -123,9 +123,10 @@ Ext.define('saas.view.core.form.DataMultiCombo', {
     setValue: function(items) {
         var me = this, rawV = '',
         datas = me.datas,
-        menu = me.menu;
+        menu = me.menu,
+        items = items==null?[]:items;
         if(!Ext.isArray(items)) {
-            if(items.indexOf(',')>0){
+            if(items&&items.indexOf(',')>0){
                 items = items.split(',')
             }else{
                 items = [items]
@@ -183,8 +184,10 @@ Ext.define('saas.view.core.form.DataMultiCombo', {
     hideMenu: function(b) {
         if (this.hasVisibleMenu()) {
             var target=b.parentEvent.relatedTarget;
-            if(!((target.className && target.className.indexOf('x-menu')!=-1) || (target.name && target.name.indexOf(this.name)!=-1))){
-                this.menu.hide();
+            if(target){
+                if(!((target.className && target.className.indexOf('x-menu')!=-1) || (target.name && target.name.indexOf(this.name)!=-1))){
+                    this.menu.hide();
+                }
             }
         }
         return this;

+ 1 - 1
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -100,7 +100,7 @@ Ext.define('saas.view.core.form.FormPanel', {
             text:'打印',
             hidden: true,
             bind: {
-                // hidden: '{!id}'
+                hidden: '{!showPrintBtn || !id}'
             },
             handler:"onPrint"
         }, {

+ 30 - 1
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -368,6 +368,35 @@ Ext.define('saas.view.core.form.FormPanelController', {
     },
 
     onPrint: function() {
-        console.log('print');
+        var me = this,
+        form = me.getView(),
+        viewModel = me.getViewModel(),
+        caller = form.caller,
+        id = viewModel.get(form._idField);
+
+        saas.util.BaseUtil.request({
+            url: '/api/commons/jasperReport/printByDefault',
+            // url: 'http://192.168.253.58:8920/jasperReport/printByDefault',
+            method: 'POST',
+            headers: {
+                "Content-Type": 'application/x-www-form-urlencoded;charset=UTF-8'
+            },
+            params: {
+                caller: caller,
+                id: id
+            }
+        }).then(function(res) {
+            var data = res.data,
+            printurl = data.printurl,
+            printtype = data.printtype,
+            reportName = data.reportName,
+            title = data.title,
+            whereCondition = data.whereCondition,
+            companyId = saas.util.BaseUtil.getCurrentUser().companyId;
+
+            var url = printurl + '?' + 'reportName=' + reportName + '&' + 'companyId=' + companyId + '&whereCondition=' + whereCondition
+
+            window.open(url);
+        });
     },
 });

+ 1 - 0
frontend/saas-web/app/view/core/form/FormPanelModel.js

@@ -11,6 +11,7 @@ Ext.define('saas.view.core.form.FormPanelModel', {
             codeEditable: false, // 单据编号是否可编辑
         },
         auditBtnText: '审核', // 审核按钮默认text
+        showPrintBtn: false, // 显示打印按钮
         showAuditBtn: true, // 显示审核、反审核按钮
         detailBindeFields: [], // 从表绑定列
         detailStore: null, // 从表store

+ 15 - 2
frontend/saas-web/app/view/core/query/QueryFormPanel.js

@@ -15,7 +15,7 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
         labelAlign: 'right',
         labelWidth: 90,
         columnWidth: 0.25,
-        blankText: '该字段不能为空'
+        blankText: '该字段不能为空',
 	},
 
     dockedItems: [{
@@ -30,6 +30,19 @@ Ext.define('saas.view.core.query.QueryFormPanel', {
             text: '查询',
             handler: 'onQuery'
         },'->']
-    }]
+    }],
+
+    listeners: {
+        beforerender: function(form) {
+            var fiels = form.getForm().getFields();
+            fiels.each(function(f) {
+                f.on && f.on({
+                    keydown: {
+                        fn: 'onQuery',
+                    }
+                });
+            });
+        }
+    }
 
 });

+ 1 - 1
frontend/saas-web/app/view/core/query/QueryPanelController.js

@@ -13,7 +13,7 @@ Ext.define('saas.view.core.query.QueryPanelController', {
         });
         this.queryWin.show();
     },
-    onQuery: function (btn) {
+    onQuery: function () {
         var me = this,
         queryPanel = me.getView(),
         viewModel = me.getViewModel(),

+ 3 - 0
frontend/saas-web/app/view/document/customer/BasePanel.js

@@ -5,6 +5,9 @@ Ext.define('saas.view.document.customer.BasePanel', {
     controller: 'document-customer-basepanel',
     viewModel: 'document-customer-basepanel',
 
+    deleteMoreMsg: '删除的客户资料将不能恢复,请确认是否删除?',
+    deleteOneMsg: '删除的客户资料将不能恢复,请确认是否删除?',
+
     searchField:[{
         xtype:'customerDbfindTrigger',
         name : "cu_code", 

+ 9 - 4
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -229,8 +229,9 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                 dataUrl:'/api/account/role/list',
                 fieldLabel: '关联角色',
                 name: 'roleNames',
-                allowBlank:false,
-                maxLength: 20
+                allowBlank:true,
+                maxLength: 20,
+                beforeLabelTextTpl: "",
             },{
                 xtype:'textfield',
                 fieldLabel: '联系电话',
@@ -416,8 +417,7 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
         .then(function(localJson) {
             me.setLoading(false);
             if(localJson.success){
-                saas.util.BaseUtil.showToast('保存成功');
-                var grid = form.ownerCt._parent.lookup('document-kind-Grid');
+                var grid = form.ownerCt._parent ? form.ownerCt._parent.lookup('document-kind-Grid') : null;
                 if(grid){
                     grid.store.load();
                 }
@@ -426,6 +426,7 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
                         typeof combo.setValue == 'function' && combo.setValue(params._value);
                     });
                 }
+                saas.util.BaseUtil.showToast('保存成功');
                 form.ownerCt.close();
             }
         })
@@ -464,6 +465,10 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
         });
         o = o.substring(0,o.length-1);
 
+        if(o==""){
+            saas.util.BaseUtil.showToast('关联角色未选择,无法保存!')
+        }
+
         var _params = {
             accountId:Number(params['accountId']),
             roleIds:o,

+ 5 - 1
frontend/saas-web/app/view/document/product/FormPanel.js

@@ -201,7 +201,9 @@ Ext.define('saas.view.document.product.FormPanel', {
     }, {
         xtype: 'numberfield',
         fieldLabel: 'L/T',
-        name: 'pr_leadtime'
+        name: 'pr_leadtime',
+        minValue: 0,
+        maxLength: 10
     }, {
         xtype: 'checkbox',
         fieldLabel: '期初设置',
@@ -370,6 +372,8 @@ Ext.define('saas.view.document.product.FormPanel', {
             trueData = detailGrid.getTrueData();
 
             viewModel.set('qcsz', trueData.length > 0);
+            viewModel.notify();
+            form.getForm().findField('qcsz').resetOriginalValue();
         }
     }
 });

+ 3 - 0
frontend/saas-web/app/view/money/othreceipts/FormPanelModel.js

@@ -2,4 +2,7 @@ Ext.define('saas.view.money.othreceipts.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-othreceipts-formpanel',
 
+    data: {
+        showPrintBtn: true
+    }
 });

+ 1 - 1
frontend/saas-web/app/view/money/othspendings/FormPanel.js

@@ -97,7 +97,7 @@ Ext.define('saas.view.money.othspendings.FormPanel', {
                         this.dialog = form.getController().getView().add({
                             xtype: 'document-kind-childwin',
                             bind: {
-                                title: '新增收入类别'
+                                title: '新增支出类别'
                             },
                             dataKind:'inoutkind',
                             belong:document.etc['inoutkind'],

+ 3 - 0
frontend/saas-web/app/view/money/othspendings/FormPanelModel.js

@@ -2,4 +2,7 @@ Ext.define('saas.view.money.othspendings.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-othspendings-formpanel',
 
+    data: {
+        showPrintBtn: true
+    }
 });

+ 4 - 0
frontend/saas-web/app/view/money/payBalance/FormPanelModel.js

@@ -2,6 +2,10 @@ Ext.define('saas.view.money.payBalance.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.money-paybalance-formpanel',
 
+    data: {
+        showPrintBtn: true
+    },
+    
     formulas: {
         pb_vendname_change: {
             bind: '{pb_vendid}',

+ 3 - 0
frontend/saas-web/app/view/purchase/purchase/FormPanelModel.js

@@ -2,6 +2,9 @@ Ext.define('saas.view.purchase.purchase.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.purchase-purchase-formpanel',
 
+    data: {
+        showPrintBtn: true
+    },
 
     formulas:{
         turnHidden:{

+ 10 - 8
frontend/saas-web/app/view/purchase/purchaseIn/FormPanelModel.js

@@ -1,15 +1,17 @@
 Ext.define('saas.view.purchase.purchaseIn.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.purchase-purchasein-formpanel',
-    
+
     data: {
-        pi_class: '采购验收单'
-     },
-     formulas:{
-        turnHidden:{
-            bind:'{pi_statuscode}',
-            get:function(value){
-                return value!='AUDITED';
+        pi_class: '采购验收单',
+        showPrintBtn: true
+    },
+
+    formulas: {
+        turnHidden: {
+            bind: '{pi_statuscode}',
+            get: function (value) {
+                return value != 'AUDITED';
             }
         }
     }

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

@@ -233,7 +233,6 @@ Ext.define('saas.view.purchase.purchaseIn.QueryPanel', {
         },{
             text: '相关单号',
             dataIndex: 'pd_ordercode',
-            xtype:'numbercolumn',
             width: 120
         }]
     }

+ 4 - 3
frontend/saas-web/app/view/purchase/purchaseOut/FormPanelModel.js

@@ -1,8 +1,9 @@
 Ext.define('saas.view.purchase.purchaseOut.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.purchase-purchaseout-formpanel',
-    
+
     data: {
-        pi_class: '采购验退单'
-     }
+        pi_class: '采购验退单',
+        showPrintBtn: true
+    }
 });

+ 4 - 0
frontend/saas-web/app/view/sale/sale/FormPanelModel.js

@@ -1,4 +1,8 @@
 Ext.define('saas.view.sale.sale.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.sale-sale-formpanel',
+
+    data: {
+        showPrintBtn: true
+    }
 });

+ 4 - 0
frontend/saas-web/app/view/sale/saleIn/FormPanelModel.js

@@ -1,4 +1,8 @@
 Ext.define('saas.view.sale.saleIn.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.sale-salein-formpanel',
+
+    data: {
+        showPrintBtn: true
+    }
 });

+ 4 - 0
frontend/saas-web/app/view/sale/saleOut/FormPanelModel.js

@@ -2,4 +2,8 @@ Ext.define('saas.view.sale.saleout.FormPanelModel', {
     extend: 'saas.view.core.form.FormPanelModel',
     alias: 'viewmodel.sale-saleout-formpanel',
 
+    data: {
+        showPrintBtn: true
+    }
+
 });

+ 2 - 0
frontend/saas-web/app/view/stock/make/QueryPanel.js

@@ -26,12 +26,14 @@ Ext.define('saas.view.stock.make.QueryPanel', {
         allowBlank: true,
         editable:false,
         columnWidth: 0.25,
+        emptyText :'全部',
         queryMode: 'local',
         displayField: 'name',
         valueField: 'value',
         store: Ext.create('Ext.data.ArrayStore', {
             fields: ['name', 'value'],
             data: [
+                ["全部", "ALL"],
                 ["组装", "组装"],
                 ["拆件", "拆件"]
             ]

+ 3 - 2
frontend/saas-web/app/view/stock/otherIn/FormPanelModel.js

@@ -3,6 +3,7 @@ Ext.define('saas.view.stock.otherIn.FormPanelModel', {
     alias: 'viewmodel.stock-otherin-formpanel',
     
     data: {
-        pi_class: '其它入库单'
-     }
+        pi_class: '其它入库单',
+        showPrintBtn: true
+    }
 });

+ 3 - 2
frontend/saas-web/app/view/stock/otherOut/FormPanelModel.js

@@ -3,6 +3,7 @@ Ext.define('saas.view.stock.otherOut.FormPanelModel', {
     alias: 'viewmodel.stock-otherout-formpanel',
     
     data: {
-        pi_class: '其它出库单'
-     }
+        pi_class: '其它出库单',
+        showPrintBtn: true
+    }
 });

+ 10 - 0
frontend/saas-web/set-token.html

@@ -0,0 +1,10 @@
+<script>
+    // iframe接收消息
+	window.addEventListener('message', function(e) {
+		if (e.source != window.parent) {
+            return;
+        }
+        localStorage.setItem('app-state-session', e.data);
+        window.parent.postMessage("success", "*");
+    });
+</script>