浏览代码

Merge branch 'master' of http://47.100.3.209:3000/gdc/yiliangyiyun

ccjgmwz 3 年之前
父节点
当前提交
1642afe952

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/ImportController.java

@@ -68,7 +68,7 @@ public class ImportController {
     private void readExcel(String filePath) throws IOException, BiffException {
         //创建输入流
 
-        InputStream stream = new FileInputStream(filePath);
+        InputStream stream = new FileInputStream("https://taohaoliang.oss-cn-beijing.aliyuncs.com/admin/7eb413f799894b2bb52afcf8bac2bbbb.xls");
 
         //获取Excel文件对象
 

+ 4 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/IdentityAuthenticationInfoServiceImpl.java

@@ -78,7 +78,10 @@ public class IdentityAuthenticationInfoServiceImpl extends ServiceImpl<IdentityA
                     if (commonCompanyIdentity != null) {
                         identityAuthenticationInfo1.setAuthenticationStatus("已接受");
                     }
-
+                    //筛除企业
+                    if("2".equals(identityAuthenticationInfo1.getCustomerTypeFlag())){
+                        identityAuthenticationInfoList.remove(identityAuthenticationInfo1);
+                    }
                 }
             }
         }

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/PaymentManagementServiceImpl.java

@@ -172,7 +172,7 @@ public class PaymentManagementServiceImpl extends ServiceImpl<PaymentManagementM
             paymentManagement.setTaxRegistrationNo(commonCompany.getCompImo());
         }
         IdentityAuthenticationInfo identityAuthenticationInfo=iIdentityAuthenticationInfoService.selectOne(new EntityWrapper<IdentityAuthenticationInfo>()
-        .eq("customer_name",paymentManagement.getCustomerName())
+        .eq("customer_name",paymentManagement.getCustomerName()).eq("cover","0")
         .eq("customer_type_flag","1"));
         paymentManagement.setIdentityAuthenticationInfo(identityAuthenticationInfo);
         paymentManagement.setQualityInspectionManagement(qualityInspectionManagement);

+ 8 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/PurchasePriceServiceImpl.java

@@ -10,6 +10,8 @@ import com.winsea.svc.base.base.service.ICommonRoleResourceService;
 import com.winsea.svc.base.security.entity.User;
 import com.winsea.svc.base.security.util.AuthSecurityUtils;
 import com.winsea.svc.base.workflow.entity.Workflow;
+import com.winsea.svc.notice.entity.base.BaseNotice;
+import com.winsea.svc.notice.service.INoticeService;
 import com.yh.saas.common.support.util.IdGenerator;
 import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
 import com.yh.saas.plugin.yiliangyiyun.entity.*;
@@ -49,6 +51,9 @@ public class PurchasePriceServiceImpl extends ServiceImpl<PurchasePriceMapper, P
     private IWarehouseBaseInfoService warehouseBaseInfoService;
     @Autowired
     private INewWorkflowService workflowService;
+
+    @Autowired
+    private INoticeService noticeService;
     @Override
     public Page<PurchasePrice> purchasePriceList(PurchasePrice purchasePrice) {
 
@@ -223,6 +228,9 @@ public class PurchasePriceServiceImpl extends ServiceImpl<PurchasePriceMapper, P
         purchasePriceDetailService.delete(new EntityWrapper<PurchasePriceDetail>().eq("main_id",purchasePrice.getId()));
         purchasePriceDetailPrintService.delete(new EntityWrapper<PurchasePriceDetailPrint>().eq("main_id",purchasePrice.getId()));
         this.deleteById(purchasePrice.getId());
+        // 删除任务
+        noticeService.removeNotice(BaseNotice.NoticeStatus.TASK, "PROCUREMENT-PRICE-APPROVE",
+                purchasePrice.getId(), null);
         return "ok";
     }
 

+ 12 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseBaseInfoServiceImpl.java

@@ -735,6 +735,12 @@ public class WarehouseBaseInfoServiceImpl extends ServiceImpl<WarehouseBaseInfoM
             for (ContractManagementInfo contractManagementInfo : contractManagementInfoList) {
                 ContractGoodsInfo contractGoodsInfo=contractGoodsInfoService.selectOne(new EntityWrapper<ContractGoodsInfo>()
                         .eq("contract_id",contractManagementInfo.getId()));
+                //查合同下的车牌号
+                List<TranCarInfo> tranCarInfoList=tranCarInfoService.selectList(new EntityWrapper<TranCarInfo>()
+                        .eq("contract_no",contractManagementInfo.getContractNo()));
+                if (!CollectionUtils.isEmpty(tranCarInfoList)){
+                    contractManagementInfo.setTranCarInfoList(tranCarInfoList);
+                }
                 contractManagementInfo.setGoodsName(contractGoodsInfo.getGoodsName());
                 contractManagementInfo.setGoodsNameKey(contractGoodsInfo.getGoodsNameKey());
                 contractManagementInfo.setInOutType("销售出库");
@@ -751,6 +757,12 @@ public class WarehouseBaseInfoServiceImpl extends ServiceImpl<WarehouseBaseInfoM
             for (InOutWarehouseTask inOutWarehouseTask : inOutWarehouseTaskList) {
                 ContractManagementInfo contractManagementInfo = new ContractManagementInfo();
                 BeanUtils.copyProperties(inOutWarehouseTask, contractManagementInfo);
+                //查移库任务编号下的车牌号
+                List<TranCarInfo> tranCarInfoList=tranCarInfoService.selectList(new EntityWrapper<TranCarInfo>()
+                        .eq("contract_no",inOutWarehouseTask.getMoveTaskNo()));
+                if (!CollectionUtils.isEmpty(tranCarInfoList)){
+                    contractManagementInfo.setTranCarInfoList(tranCarInfoList);
+                }
                 contractManagementInfo.setContractNo(inOutWarehouseTask.getMoveTaskNo());
                 contractManagementInfo.setContractPrice(inOutWarehouseTask.getUnitPrice());
                 contractManagementInfo.setInOutType("移库出库");

+ 125 - 57
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseInOutInfoServiceImpl.java

@@ -89,9 +89,13 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
     @Autowired
     private IStockSaleReceiptReportService stockSaleReceiptReportService;
     @Autowired
+    private IStockPurchaseReceiptReportService stockPurchaseReceiptReportService;
+    @Autowired
     private IWeightedDetailsService weightedDetailsService;
     @Autowired
     private ICostManagementInfoService costManagementInfoService;
+    @Autowired
+    private IInOutWarehouseTaskService inOutWarehouseTaskService;
 
     /**
      * 待完成页面列表
@@ -562,10 +566,9 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             costManagementInfoService.updateById(costManagementInfo);
                         }
                     }
-                    StockPurchaseReceiptReport stockPurchaseReceiptReport = new StockPurchaseReceiptReport();
-                    PurchaseReceiptReport purchaseReceiptReport = new PurchaseReceiptReport();
                     // 期货采购入库统计
-                    if ("2".equals(contractManagementInfo.getGoodsType())) {
+                    if (contractManagementInfo!=null&&"2".equals(contractManagementInfo.getGoodsType())) {
+                        PurchaseReceiptReport purchaseReceiptReport = new PurchaseReceiptReport();
                         purchaseReceiptReport.setId(IdGenerator.generateUUID());
                         purchaseReceiptReport.setCompId(warehouseBaseInfo.getCompId());
                         purchaseReceiptReport.setContractNo(warehouseInOutInfo.getContractNo());
@@ -631,9 +634,33 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             purchaseReceiptReport.setCustomerConfirmationStatusFlag("3");
                             purchaseReceiptReport.setCustomerConfirmationStatus("否");
                         }
+                        purchaseReceiptReportService.insert(purchaseReceiptReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(purchaseReceiptReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(purchaseReceiptReport.getCompId(), "PROCUREMENT-RECEIPT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+                                // 设置状态 已提交审核
+                                purchaseReceiptReport.setWorkflowId(workflow.getId());
+                                purchaseReceiptReportService.updateById(purchaseReceiptReport);
+                                workflowService.startInstance(workflow.getId(), purchaseReceiptReport.getId());
+                            }
+                        }
+                        // 退回的单子 再启用
+                        else {
+                            purchaseReceiptReportService.updateById(purchaseReceiptReport);
+                            workflowService.activateInstance(purchaseReceiptReport.getWorkflowId(), purchaseReceiptReport.getId());
+                        }
                     }
                     //现货采购入库统计
                     else {
+                        StockPurchaseReceiptReport stockPurchaseReceiptReport = new StockPurchaseReceiptReport();
                         stockPurchaseReceiptReport.setId(IdGenerator.generateUUID());
                         stockPurchaseReceiptReport.setCompId(warehouseBaseInfo.getCompId());
                         stockPurchaseReceiptReport.setContractNo(warehouseInOutInfo.getContractNo());
@@ -645,9 +672,20 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                         stockPurchaseReceiptReport.setWarehousingDate(warehouseInOutInfo.getInOutDate());
                         stockPurchaseReceiptReport.setDeductionWeight(warehouseInOutInfo.getDeductionWeight());
                         stockPurchaseReceiptReport.setSettlementWeight(warehouseInOutInfo.getNetWeight());
-                        stockPurchaseReceiptReport.setAmountIngPayable
-                                (warehouseInOutInfo.getNetWeight() *
-                                        (Float.valueOf(String.valueOf(contractManagementInfo.getUnitContractPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        // 移库编号
+                        InOutWarehouseTask inOutWarehouseTask = inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
+                                .eq("move_task_no", warehouseInOutInfo.getContractNo())
+                                .eq("delete_flag", "0"));
+                        if (inOutWarehouseTask!=null){
+                            stockPurchaseReceiptReport.setAmountIngPayable
+                                    (warehouseInOutInfo.getNetWeight() *
+                                            (Float.valueOf(String.valueOf(inOutWarehouseTask.getUnitPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        }
+                        else{
+                            stockPurchaseReceiptReport.setAmountIngPayable
+                                    (warehouseInOutInfo.getNetWeight() *
+                                            (Float.valueOf(String.valueOf(contractManagementInfo.getUnitContractPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        }
                         stockPurchaseReceiptReport.setAmountEdPayable(0.0f);
                         stockPurchaseReceiptReport.setAmountNotPayable(stockPurchaseReceiptReport.getAmountIngPayable());
                         stockPurchaseReceiptReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
@@ -666,32 +704,30 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             }
                             tranCarInfoService.updateById(tranCarInfo);
                         }
-                    }
-                    purchaseReceiptReportService.insert(purchaseReceiptReport);
-                    boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(purchaseReceiptReport.getWorkflowId());
-                    // 不是退回的单子
-                    if (isStartWorkflow) {
-                        Workflow workflow = workflowService
-                                .findLatestWorkflowByBusinessCodeByApp(purchaseReceiptReport.getCompId(), "PROCUREMENT-RECEIPT-REPORT");
-                        // 没配置审核流程,直接结束并处理信息
-                        if (workflow == null) {
-                            throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                        stockPurchaseReceiptReportService.insert(stockPurchaseReceiptReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(stockPurchaseReceiptReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(stockPurchaseReceiptReport.getCompId(), "PROCUREMENT-RECEIPT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+                                // 设置状态 已提交审核
+                                stockPurchaseReceiptReport.setWorkflowId(workflow.getId());
+                                stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                                workflowService.startInstance(workflow.getId(), stockPurchaseReceiptReport.getId());
+                            }
                         }
-                        // 开启审核流
+                        // 退回的单子 再启用
                         else {
-
-                            // 设置状态 已提交审核
-                            purchaseReceiptReport.setWorkflowId(workflow.getId());
-                            purchaseReceiptReportService.updateById(purchaseReceiptReport);
-                            workflowService.startInstance(workflow.getId(), purchaseReceiptReport.getId());
+                            stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                            workflowService.activateInstance(stockPurchaseReceiptReport.getWorkflowId(), stockPurchaseReceiptReport.getId());
                         }
                     }
-                    // 退回的单子 再启用
-                    else {
-
-                        purchaseReceiptReportService.updateById(purchaseReceiptReport);
-                        workflowService.activateInstance(purchaseReceiptReport.getWorkflowId(), purchaseReceiptReport.getId());
-                    }
                 }
                 //App端出库
                 else if ("0".equals(warehouseInOutInfo.getPcFlag()) && "出库任务".equals(warehouseInOutInfo.getTaskType())) {
@@ -747,7 +783,7 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     //查询期货现货合同
                     ContractManagementInfo contractManagementInfo = contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
                             .eq("contract_no", warehouseInOutInfo.getContractNo()));
-                    if ("2".equals(contractManagementInfo.getGoodsType())) {
+                    if (contractManagementInfo!=null&&"2".equals(contractManagementInfo.getGoodsType())) {
                         //客户生成收货信息
                         TranCarInfo tranCarInfo = new TranCarInfo();
                         tranCarInfo.setId(IdGenerator.generateUUID());
@@ -1010,10 +1046,9 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             costManagementInfoService.updateById(costManagementInfo);
                         }
                     }
-                    StockPurchaseReceiptReport stockPurchaseReceiptReport = new StockPurchaseReceiptReport();
-                    PurchaseReceiptReport purchaseReceiptReport = new PurchaseReceiptReport();
                     // 期货采购入库统计
-                    if ("2".equals(contractManagementInfo.getGoodsType())) {
+                    if (contractManagementInfo!=null&&"2".equals(contractManagementInfo.getGoodsType())) {
+                        PurchaseReceiptReport purchaseReceiptReport = new PurchaseReceiptReport();
                         purchaseReceiptReport.setId(IdGenerator.generateUUID());
                         purchaseReceiptReport.setCompId(warehouseBaseInfo.getCompId());
                         purchaseReceiptReport.setContractNo(warehouseInOutInfo.getContractNo());
@@ -1079,9 +1114,33 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             purchaseReceiptReport.setCustomerConfirmationStatusFlag("3");
                             purchaseReceiptReport.setCustomerConfirmationStatus("否");
                         }
+                        purchaseReceiptReportService.insert(purchaseReceiptReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(purchaseReceiptReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(purchaseReceiptReport.getCompId(), "PROCUREMENT-RECEIPT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+                                // 设置状态 已提交审核
+                                purchaseReceiptReport.setWorkflowId(workflow.getId());
+                                purchaseReceiptReportService.updateById(purchaseReceiptReport);
+                                workflowService.startInstance(workflow.getId(), purchaseReceiptReport.getId());
+                            }
+                        }
+                        // 退回的单子 再启用
+                        else {
+                            purchaseReceiptReportService.updateById(purchaseReceiptReport);
+                            workflowService.activateInstance(purchaseReceiptReport.getWorkflowId(), purchaseReceiptReport.getId());
+                        }
                     }
                     //现货采购入库统计
                     else {
+                        StockPurchaseReceiptReport stockPurchaseReceiptReport = new StockPurchaseReceiptReport();
                         stockPurchaseReceiptReport.setId(IdGenerator.generateUUID());
                         stockPurchaseReceiptReport.setCompId(warehouseBaseInfo.getCompId());
                         stockPurchaseReceiptReport.setContractNo(warehouseInOutInfo.getContractNo());
@@ -1093,9 +1152,19 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                         stockPurchaseReceiptReport.setWarehousingDate(warehouseInOutInfo.getInOutDate());
                         stockPurchaseReceiptReport.setDeductionWeight(warehouseInOutInfo.getDeductionWeight());
                         stockPurchaseReceiptReport.setSettlementWeight(warehouseInOutInfo.getNetWeight());
-                        stockPurchaseReceiptReport.setAmountIngPayable
-                                (warehouseInOutInfo.getNetWeight() *
-                                        (Float.valueOf(String.valueOf(contractManagementInfo.getUnitContractPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        // 移库编号
+                        InOutWarehouseTask inOutWarehouseTask = inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
+                                .eq("move_task_no", warehouseInOutInfo.getContractNo())
+                                .eq("delete_flag", "0"));
+                        if (inOutWarehouseTask != null) {
+                            stockPurchaseReceiptReport.setAmountIngPayable
+                                    (warehouseInOutInfo.getNetWeight() *
+                                            (Float.valueOf(String.valueOf(inOutWarehouseTask.getUnitPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        } else {
+                            stockPurchaseReceiptReport.setAmountIngPayable
+                                    (warehouseInOutInfo.getNetWeight() *
+                                            (Float.valueOf(String.valueOf(contractManagementInfo.getUnitContractPrice())) - Float.valueOf(warehouseInOutInfo.getDeductionAmount())));
+                        }
                         stockPurchaseReceiptReport.setAmountEdPayable(0.0f);
                         stockPurchaseReceiptReport.setAmountNotPayable(stockPurchaseReceiptReport.getAmountIngPayable());
                         stockPurchaseReceiptReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
@@ -1114,32 +1183,31 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                             }
                             tranCarInfoService.updateById(tranCarInfo);
                         }
-                    }
-                    purchaseReceiptReportService.insert(purchaseReceiptReport);
-                    boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(purchaseReceiptReport.getWorkflowId());
-                    // 不是退回的单子
-                    if (isStartWorkflow) {
-                        Workflow workflow = workflowService
-                                .findLatestWorkflowByBusinessCodeByApp(purchaseReceiptReport.getCompId(), "PROCUREMENT-RECEIPT-REPORT");
-                        // 没配置审核流程,直接结束并处理信息
-                        if (workflow == null) {
-                            throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                        stockPurchaseReceiptReportService.insert(stockPurchaseReceiptReport);
+                        boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(stockPurchaseReceiptReport.getWorkflowId());
+                        // 不是退回的单子
+                        if (isStartWorkflow) {
+                            Workflow workflow = workflowService
+                                    .findLatestWorkflowByBusinessCodeByApp(stockPurchaseReceiptReport.getCompId() , "PROCUREMENT-RECEIPT-REPORT");
+                            // 没配置审核流程,直接结束并处理信息
+                            if (workflow == null) {
+                                throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                            }
+                            // 开启审核流
+                            else {
+                                // 设置状态 已提交审核
+                                stockPurchaseReceiptReport.setWorkflowId(workflow.getId());
+                                stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                                workflowService.startInstance(workflow.getId(), stockPurchaseReceiptReport.getId());
+                            }
                         }
-                        // 开启审核流
+                        // 退回的单子 再启用
                         else {
 
-                            // 设置状态 已提交审核
-                            purchaseReceiptReport.setWorkflowId(workflow.getId());
-                            purchaseReceiptReportService.updateById(purchaseReceiptReport);
-                            workflowService.startInstance(workflow.getId(), purchaseReceiptReport.getId());
+                            stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                            workflowService.activateInstance(stockPurchaseReceiptReport.getWorkflowId(), stockPurchaseReceiptReport.getId());
                         }
                     }
-                    // 退回的单子 再启用
-                    else {
-
-                        purchaseReceiptReportService.updateById(purchaseReceiptReport);
-                        workflowService.activateInstance(purchaseReceiptReport.getWorkflowId(), purchaseReceiptReport.getId());
-                    }
                 }
                 //App端出库
                 else if ("0".equals(warehouseInOutInfo.getPcFlag()) && "出库任务".equals(warehouseInOutInfo.getTaskType())) {
@@ -1197,7 +1265,7 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     //查询期货现货合同
                     ContractManagementInfo contractManagementInfo = contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
                             .eq("contract_no", warehouseInOutInfo.getContractNo()));
-                    if ("2".equals(contractManagementInfo.getGoodsType())) {
+                    if (contractManagementInfo!=null&&"2".equals(contractManagementInfo.getGoodsType())) {
                         //客户生成收货信息
                         TranCarInfo tranCarInfo = new TranCarInfo();
                         tranCarInfo.setId(IdGenerator.generateUUID());