buli
2023-07-05 af7b716a60d889acea95560abba0e46eee008b8f
backup0705
67个文件已添加
38个文件已修改
42791 ■■■■ 已修改文件
.vscode/settings.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/RetrospectiveWeeklyReport/RetrospectiveWeeklyReport.cmp 1029 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/RetrospectiveWeeklyReport/RetrospectiveWeeklyReportHelper.js 3830 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/WeeklyReport/WeeklyReport.cmp 768 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/WeeklyReport/WeeklyReport.css 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/WeeklyReport/WeeklyReportController.js 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/aura/WeeklyReport/WeeklyReportHelper.js 2840 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ArriveGoodsControllerTest.cls 2068 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ArriveGoodsControllerTestV2.cls 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ArriveGoodsControllerTestV2.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/AssetHandler.cls 971 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/AssetHandler.cls-meta.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/Batch_FixAttachmentToFiles.cls 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/DealerInquiryModifyStateControllerTest.cls 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LayoutDescriberHelper.cls 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsControllerTest.cls 483 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsControllerTest1.cls 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsControllerTest1.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsMainControllerTest.cls 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGoodsMainControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGsDetailsControllerTest.cls 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexArriveGsDetailsControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexCancelRemoveBoxController.cls 488 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexCancelRemoveBoxControllerTest.cls 953 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexCancelRemoveBoxControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoiceListTest.cls 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoiceListTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoiceViewController.cls 561 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoiceViewControllerTest.cls 4125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoiceViewControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoicedetailsController.cls 205 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConInvoicedetailsControllerTest.cls 776 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountController.cls 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountControllerTest.cls 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountInfoControllerTest.cls 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountInfoControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountSOQL.cls 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountSOQLTest.cls 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableAccountSOQLTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableController.cls 770 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableControllerTest.cls 1377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableGoodsInfoTest.cls 1113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableGoodsInfoTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableOrderManageControllerTest.cls 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexConsumableOrderManageControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryController.cls 1072 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryControllerTest.cls 1179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryListController.cls 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryListControllerTest.cls 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryListControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryViewControllerTest.cls 1273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexInventoryViewControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexLicenceReminderControllerTest.cls 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexLicenceReminderControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOutboundorderImportController.cls 229 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOutboundorderImportControllerTest.cls 682 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOutboundorderImportControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOverdueStockController.cls 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOverdueStockControllerTest.cls 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexOverdueStockControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexProductLimitEditControllerTest.cls 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexProductLimitEditControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexRemoveBoxControllerTest.cls 806 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexRemoveBoxControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSaleAndDeliveryControllerTest.cls 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSaleAndDeliveryControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSaleOrderController.cls 418 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSaleOrderControllerTest.cls 1919 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSaleOrderControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSearchContractControllerTest.cls 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSearchContractControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSearchHospitalControllerTest.cls 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSearchHospitalControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSummonsCreatController.cls 780 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSummonsCreatControllerTest.cls 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexSummonsCreatControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexTopPageControllerTest.cls 460 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexTopPageControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexUpAccountProLimit.cls 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexUpAccountProLimitControllerTest.cls 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexUpAccountProLimitControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexUtilityTest.cls 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LexUtilityTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LookupSearchResultTest.cls 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/LookupSearchResultTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/NewAndEditLeadController.cls 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/Product2Handler.cls 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/RentalApplyEquipmentSetDetailHandler.cls 4315 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ResponseBodyLWCTest.cls 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/ResponseBodyLWCTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/lexSearchAgencyHospitalControllerTest.cls 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/lexSearchAgencyHospitalControllerTest.cls-meta.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexArriveGoods/lexArriveGoods.html 293 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/lwc/lexArriveGoods/lexArriveGoods.js 618 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/OFSInsReportLayout.page 1203 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/StraightBackAddress.page 382 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/StraightBackAddress.page-meta.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/permissionsets/Community_Consumable_LEX_PS.permissionset-meta.xml 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest/LEXC01packagelexcommunitynew.xml 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest/LEXC02packagelexcommunityupdate.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest/package.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/settings.json
@@ -5,5 +5,6 @@
    "**/.sfdx": true
  },
  "salesforcedx-vscode-core.show-cli-success-msg": false,
  "salesforcedx-vscode-apex.java.home": "C:\\Users\\buli\\Documents\\Software\\JDK11\\",
  "open-in-browser.default": "{\"opn-in-browser.default\":\"Microsoft Edge\"}"
}
force-app/main/default/aura/RetrospectiveWeeklyReport/RetrospectiveWeeklyReport.cmp
@@ -1,13 +1,31 @@
<aura:component controller="RetrospectiveWeeklyReportController"
<aura:component
  controller="RetrospectiveWeeklyReportController"
    implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction,forceCommunity:availableForAllPageTypes,lightning:availableForFlowScreens"
    access="global">
  access="global"
>
    <ltng:require styles="{!$Resource.multilineToastCSS}" /> 
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
    <aura:handler event="c:strike_evt" action="{!c.createAopp}" name="strike_evt_addNewRecord" />
    <aura:attribute name="data" type="Agency_Report__c" default="{sobjectType:'Agency_Report__c'}" />
    <aura:attribute name="oppdata" type="Agency_Opportunity__c" default="{sobjectType:'Agency_Opportunity__c'}" />
    <aura:attribute name="acondata" type="Agency_Contact__c" default="{sobjectType:'Ag
    ency_Contact__c'}" />
  <aura:handler
    event="c:strike_evt"
    action="{!c.createAopp}"
    name="strike_evt_addNewRecord"
  />
  <aura:attribute
    name="data"
    type="Agency_Report__c"
    default="{sobjectType:'Agency_Report__c'}"
  />
  <aura:attribute
    name="oppdata"
    type="Agency_Opportunity__c"
    default="{sobjectType:'Agency_Opportunity__c'}"
  />
  <aura:attribute
    name="acondata"
    type="Agency_Contact__c"
    default="{sobjectType:'Ag
    ency_Contact__c'}"
  />
    <aura:attribute name="successMessage" type="String" />
    <aura:attribute name="etEng" type="String" />
    <aura:attribute name="errorMessage" type="String" />
@@ -46,19 +64,31 @@
    <!-- 使用产品1(产品型号) -->
    <aura:attribute name="UseProduct1" type="string" default="" />
    <aura:attribute name="UseProduct1s" type="string" default="" />
    <aura:handler name="change" value="{!v.UseProduct1}" action="{!c.UseProduct1Change}" />
  <aura:handler
    name="change"
    value="{!v.UseProduct1}"
    action="{!c.UseProduct1Change}"
  />
    <aura:attribute name="UseProduct1List" type="Map" />
    <aura:attribute name="UseProduct1Id" type="string" default="" />
    <!-- 使用产品2 -->
    <aura:attribute name="UseProduct2" type="string" default="" />
    <aura:attribute name="UseProduct2s" type="string" default="" />
    <aura:handler name="change" value="{!v.UseProduct2}" action="{!c.UseProduct2Change}" />
  <aura:handler
    name="change"
    value="{!v.UseProduct2}"
    action="{!c.UseProduct2Change}"
  />
    <aura:attribute name="UseProduct2List" type="Map" />
    <aura:attribute name="UseProduct2Id" type="string" default="" />
    <!-- 使用产品3 -->
    <aura:attribute name="UseProduct3" type="string" default="" />
    <aura:attribute name="UseProduct3s" type="string" default="" />
    <aura:handler name="change" value="{!v.UseProduct3}" action="{!c.UseProduct3Change}" />
  <aura:handler
    name="change"
    value="{!v.UseProduct3}"
    action="{!c.UseProduct3Change}"
  />
    <aura:attribute name="UseProduct3List" type="Map" />
    <aura:attribute name="UseProduct3Id" type="string" default="" />
    <!--SWAG-CF58C3 fy start -->
@@ -71,7 +101,6 @@
    <aura:attribute name="contactawsurl" type="Map" />
    <aura:attribute name="allselectlistAgencyPerson" type="Map" />
    <!--SWAG-CF58C3 fy end -->
    <aura:attribute name="doctor_list" type="Map" />
    <!-- <aura:attribute name="doctor_title" type="String" /> -->
@@ -99,12 +128,28 @@
    <aura:attribute name="UserProType" type="String" />
    <!-- 科室 -->
    <aura:attribute name="opportunity_cfilter" type="String" />
    <aura:attribute name="update_select_report_data_id" type="String" default="" />
  <aura:attribute
    name="update_select_report_data_id"
    type="String"
    default=""
  />
    <!-- 批量添加日报 start-->
    <aura:attribute name="reports_date" type="List" />
    <aura:attribute name="TableContent" type="String" description=" Show the Result class" />
    <aura:attribute name="TableContent2" type="String" description=" Show the Result class" />
    <aura:attribute name="TargetFileName" type="String" description="Name of the file" />
  <aura:attribute
    name="TableContent"
    type="String"
    description=" Show the Result class"
  />
  <aura:attribute
    name="TableContent2"
    type="String"
    description=" Show the Result class"
  />
  <aura:attribute
    name="TargetFileName"
    type="String"
    description="Name of the file"
  />
    <aura:attribute name="tableheaders" type="Object[]" />
    <aura:attribute name="fileContentData" type="String" />
    <aura:attribute name="filename" type="String" />
@@ -127,66 +172,143 @@
    <!--ロード中...-->
    <aura:renderIf isTrue="{!v.login}">
        <aura:renderIf isTrue="{!!v.loginEdit}">
            <lightning:spinner alternativeText="Loading" size="medium" />
      <!-- <div class="slds-spinner_container">
                <div role="status" class="slds-spinner slds-spinner_medium slds-spinner_brand">
                        <span class="slds-assistive-text">Loading</span>
                        <div class="slds-spinner__dot-a"></div>
                        <div class="slds-spinner__dot-b"></div>
                </div>
            </div> -->
      <div
        class="slds-spinner_container"
        id="spinner"
        style="position: fixed; top: 123px"
      >
        <div
          role="status"
          class="slds-spinner slds-spinner_medium slds-spinner_brand"
        >
          <span class="slds-assistive-text">Loading</span>
          <div class="slds-spinner__dot-a"></div>
          <div class="slds-spinner__dot-b"></div>
        </div>
      </div>
        </aura:renderIf>
    </aura:renderIf>
    <div aura:id="report" id="report">
        <div class="slds-grid slds-wrap slds-grid--pull-padded">
            <div style="width: 150px;"></div>
      <div style="width: 150px"></div>
            <div
                class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12 fontSize">
        class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12 fontSize"
      >
                周
            </div>
            <div
                class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 fontSize">
                <ui:inputSelect aura:id="select_date" class="slds-select" change="{!c.select_date_change}" />
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 fontSize"
      >
        <ui:inputSelect
          aura:id="select_date"
          class="slds-select"
          change="{!c.select_date_change}"
        />
            </div>
            <!-- 代理店担当者 -->
            <div class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12"
                style="display: none;">
      <div
        class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12"
        style="display: none"
      >
                {!v.fieldsmap.Person_In_Charge2__c}
            </div>
            <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12"
                style="display: none;">
                <ui:inputSelect aura:id="select_agency_person" class="slds-select agency_person_select"
                    change="{!c.select_agency_change}" />
      <div
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12"
        style="display: none"
      >
        <ui:inputSelect
          aura:id="select_agency_person"
          class="slds-select agency_person_select"
          change="{!c.select_agency_change}"
        />
            </div>
            <div style="width: 100px;">
      <div style="width: 100px"></div>
      <div
        class="tr slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
        style="display: contents"
      >
        <ui:button
          aura:id="new_button"
          label="新建"
          press="{!c.new_report}"
          class="buttonFontSize"
        />
            </div>
            <div class="tr slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
                style="display: contents;">
                <ui:button aura:id="new_button" label="新建" press="{!c.new_report}" class="buttonFontSize" />
            </div>
            <div style="width: 400px;"
                class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--4-of-12 slds-large-size--4-of-12">
                <ui:button aura:id="copy_button" label="复制" press="{!c.copy_button}" disabled="true"
                    class="buttonFontSize" />
                <ui:button aura:id="delete_button" label="删除" press="{!c.delete_button}" disabled="true"
                    class="buttonFontSize" />
                <ui:button aura:id="import" label="导入" press="{!c.import}" class="buttonFontSize" />
                <ui:button aura:id="export" label="导出" press="{!c.export_condition}" class="buttonFontSize" />
      <div
        style="width: 400px"
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--4-of-12 slds-large-size--4-of-12"
      >
        <ui:button
          aura:id="copy_button"
          label="复制"
          press="{!c.copy_button}"
          disabled="true"
          class="buttonFontSize"
        />
        <ui:button
          aura:id="delete_button"
          label="删除"
          press="{!c.delete_button}"
          disabled="true"
          class="buttonFontSize"
        />
        <ui:button
          aura:id="import"
          label="导入"
          press="{!c.import}"
          class="buttonFontSize"
        />
        <ui:button
          aura:id="export"
          label="导出"
          press="{!c.export_condition}"
          class="buttonFontSize"
        />
                <!-- <ui:button aura:id="returnbutton" label="返回" press="{!c.return_main_page}" /> -->
            </div>
        </div>
    </div>
    <div aura:id="report_list" class="report_list_area">
        <div class="slds-table--edit_container slds-is-relative" style="padding-left: 50px;">
            <table class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus"
                role="grid" style="width:66.75rem;">
    <div
      class="slds-table--edit_container slds-is-relative"
      style="padding-left: 50px"
    >
      <table
        class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus"
        role="grid"
        style="width: 66.75rem"
      >
                <thead>
                    <tr class="slds-line-height--reset">
                        <th class="table_header slds-text-title--caps fontSize" style="width:250px">
            <th
              class="table_header slds-text-title--caps fontSize"
              style="width: 250px"
            >
                            <span class="slds-truncate" title="Name">日报编号</span>
                        </th>
                        <th class="table_header slds-text-title--caps fontSize">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Person_In_Charge2__c}</span>
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.Person_In_Charge2__c}</span
              >
                            <!-- {!v.fieldsmap.Person_In_Charge2__c}  担当-->
                        </th>
                        <th class="table_header slds-text-title--caps fontSize" style="width:250px">
            <th
              class="table_header slds-text-title--caps fontSize"
              style="width: 250px"
            >
                            <span class="slds-truncate" title="Name">医院</span>
                        </th>
                        <th class="table_header slds-text-title--caps fontSize">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Department_Cateogy__c}</span>
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.Department_Cateogy__c}</span
              >
                            <!-- {!v.fieldsmap.Department_Cateogy__c}    科室-->
                        </th>
                        <th class="table_header slds-text-title--caps fontSize">
@@ -194,11 +316,15 @@
                            <!-- {!v.fieldsmap.doctor2__c}    拜访人 -->
                        </th>
                        <th class="table_header slds-text-title--caps fontSize">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.DealerPersonnel__c}</span>
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.DealerPersonnel__c}</span
              >
                            <!-- {!v.fieldsmap.visitor_title__c}   职位-->
                        </th>
                        <th class="table_header slds-text-title--caps fontSize">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.WorkMark__c}</span>
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.WorkMark__c}</span
              >
                            <!-- {!v.fieldsmap.visitor_title__c}   职位-->
                        </th>
                    </tr>
@@ -207,27 +333,45 @@
                    <aura:iteration items="{!v.reports}" var="item" indexVar="index">
                        <tr class="slds-hint-parent">
                            <td role="gridcell" class="slds-cell-edit fontSize">
                                <ui:inputRadio class="report_radio" name="report_radio" label="{!item.Name}"
                                    change="{!c.change_report_radio}" />
                                <lightning:buttonIcon class="edit_button" iconName="utility:edit" size="small"
                                    alternativeText="edit" value="{!index}" onclick="{!c.edit_button}" />
                <ui:inputRadio
                  class="report_radio"
                  name="report_radio"
                  label="{!item.Name}"
                  change="{!c.change_report_radio}"
                />
                <lightning:buttonIcon
                  class="edit_button"
                  iconName="utility:edit"
                  size="small"
                  alternativeText="edit"
                  value="{!index}"
                  onclick="{!c.edit_button}"
                />
                            </td>
                            <td role="gridcell" class="slds-cell-edit fontSize">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate"
                                        title="{!item.Person_In_Charge2__r.Name}">{!item.Person_In_Charge2__r.Name}</span>
                  <span
                    class="slds-truncate"
                    title="{!item.Person_In_Charge2__r.Name}"
                    >{!item.Person_In_Charge2__r.Name}</span
                  >
                                </span>
                            </td>
                            <td scope="row" tabindex="0" class="slds-cell-edit fontSize">
                                <div class="slds-grid slds-grid--align-spread" style="word-wrap: break-word;">
                <div
                  class="slds-grid slds-grid--align-spread"
                  style="word-wrap: break-word"
                >
                                    {!item.Agency_Hospital__r.Name}
                                </div>
                            </td>
                            <td role="gridcell" class="slds-cell-edit fontSize">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate"
                                        title="{!item.Department_Cateogy_text__c}">{!item.Department_Cateogy_text__c}</span>
                  <span
                    class="slds-truncate"
                    title="{!item.Department_Cateogy_text__c}"
                    >{!item.Department_Cateogy_text__c}</span
                  >
                                </span>
                            </td>
                            <td role="gridcell" class="slds-cell-edit fontSize">
@@ -240,15 +384,21 @@
                            </td>
                            <td role="gridcell" class="slds-cell-edit fontSize">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate"
                                        title="{!item.DealerPersonnel__r.Name}">{!item.DealerPersonnel__r.Name}</span>
                  <span
                    class="slds-truncate"
                    title="{!item.DealerPersonnel__r.Name}"
                    >{!item.DealerPersonnel__r.Name}</span
                  >
                                </span>
                            </td>
                            <td role="gridcell" class="slds-cell-edit fontSize">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate" title="{!item.WorkMark__c}">
                                        <lightning:input type="checkbox" checked="{!item.WorkMark__c}"
                                            disabled="true" />
                    <lightning:input
                      type="checkbox"
                      checked="{!item.WorkMark__c}"
                      disabled="true"
                    />
                                    </span>
                                </span>
                            </td>
@@ -259,28 +409,39 @@
        </div>
        <aura:renderIf isTrue="{!v.report_count > 0}">
            <aura:set attribute="else">
                <div class="no_data_area">
                    {!v.list_message}
                </div>
        <div class="no_data_area">{!v.list_message}</div>
            </aura:set>
        </aura:renderIf>
    </div>
    <!-- 批量添加日报 start-->
    <div aura:id="modal_import" role="dialog" tabindex="-1"
        class="disp_none slds-modal slds-fade-in-open slds-modal--large" aria-labelledby="headerTarget">
  <div
    aura:id="modal_import"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
    aria-labelledby="headerTarget"
  >
        <aura:renderIf isTrue="{!v.modal_import_spinner}">
            <lightning:spinner alternativeText="Loading" size="medium" />
        </aura:renderIf>
        <div class="slds-modal slds-fade-in-open slds-hide" aura:id="successDiv01">
            <!-- <ui:inputText aura:id="articleURL" /> -->
            <div class="demo-only" style="height: 8rem;">
      <div class="demo-only" style="height: 8rem">
                <div class="slds-notify_container slds-is-relative">
                    <div class="slds-notify slds-notify_toast slds-theme_success" role="alert">
          <div
            class="slds-notify slds-notify_toast slds-theme_success"
            role="alert"
          >
                        <div class=" slds-m-left_xx-large">
                            <div
                                class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large">
                                <lightning:icon alternativeText="Success" iconName="utility:success" size="small"
                                    class="buttonColor slds-m-right_small" />
                class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large"
              >
                <lightning:icon
                  alternativeText="Success"
                  iconName="utility:success"
                  size="small"
                  class="buttonColor slds-m-right_small"
                />
                                <h2 class="slds-text-heading_small ">{!v.successMessage}</h2>
                            </div>
                        </div>
@@ -309,106 +470,194 @@
        <div class="slds-modal__container ">
            <div class="slds-modal__header ">
                <h4 id="headerTarget" class="slds-float--left"></h4>
                <h2 id="headerTarget" class="slds-text-heading--medium">日报批量导入</h2>
                <ui:button aura:id="close_button" label="关闭"
        <h2 id="headerTarget" class="slds-text-heading--medium">
          日报批量导入
        </h2>
        <ui:button
          aura:id="close_button"
          label="关闭"
                    class="close_button slds-button slds-button--neutral slds-order--1 buttonFontSize"
                    press="{!c.close_import}" />
          press="{!c.close_import}"
        />
            </div>
            <div class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium fontSize">
      <div
        class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium fontSize"
      >
                <aura:if isTrue="{!v.showMain}">
                    <div>
                        <lightning:input type="file" class="file" uara:id="file" onchange="{!c.CreateRecord}" />
            <lightning:input
              type="file"
              class="file"
              uara:id="file"
              onchange="{!c.CreateRecord}"
            />
                    </div>
                    <aura:set attribute="else">
                        <ui:outputRichText class="uiOutputRichText slds-m--around-large fontSize"
                            value="{!v.TableContent}" />
            <ui:outputRichText
              class="uiOutputRichText slds-m--around-large fontSize"
              value="{!v.TableContent}"
            />
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="保存" variant="brand" onclick="{!c.processFileContent}"
                                class="buttonFontSize" />
                            <lightning:button label="取消" variant="brand" onclick="{!c.cancel}" class="buttonFontSize" />
              <lightning:button
                label="保存"
                variant="brand"
                onclick="{!c.processFileContent}"
                class="buttonFontSize"
              />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.cancel}"
                class="buttonFontSize"
              />
                        </div>
                        <aura:if isTrue="{!v.showErrorInfo}">
                            <div class="slds-p-around--large slds-align--absolute-center">
                                <lightning:button label="导出错误信息" variant="brand" onclick="{!c.exportErrorInfo}" />
                <lightning:button
                  label="导出错误信息"
                  variant="brand"
                  onclick="{!c.exportErrorInfo}"
                />
                            </div>
                            <div class="slds-p-around--large slds-align--absolute-center">
                                <div style="height: 300px;overflow-x:scroll">
                                    <lightning:datatable keyField="id" data="{! v.errorData }"
                                        columns="{! v.errorColumns }" hideCheckboxColumn="true" />
                  <lightning:datatable
                    keyField="id"
                    data="{! v.errorData }"
                    columns="{! v.errorColumns }"
                    hideCheckboxColumn="true"
                  />
                                </div>
                            </div>
                        </aura:if>
                    </aura:set>
                </aura:if>
            </div>
        </div>
    </div>
    <div aura:id="modal_importbg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_importbg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <!-- 批量添加日报 end-->
    <!-- 批量导出日报 start-->
    <div aura:id="modal_export" role="dialog" tabindex="-1"
        class="disp_none slds-modal slds-fade-in-open slds-modal--large">
  <div
    aura:id="modal_export"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
  >
        <div class="slds-modal__container">
            <div class="slds-modal__header">
                <h4 id="headerTarget" class="slds-float--left"></h4>
                <h2 id="headerTarget" class="slds-text-heading--medium">日报批量导出</h2>
                <ui:button aura:id="close_button" label="关闭"
                    class="close_button slds-button slds-button--neutral slds-order--1" press="{!c.close_export}" />
        <h2 id="headerTarget" class="slds-text-heading--medium">
          日报批量导出
        </h2>
        <ui:button
          aura:id="close_button"
          label="关闭"
          class="close_button slds-button slds-button--neutral slds-order--1"
          press="{!c.close_export}"
        />
            </div>
            <div class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium">
      <div
        class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium"
      >
                <aura:if isTrue="{!v.showMain}">
                    <div class="slds-grid slds-wrap slds-grid--pull-padded">
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
                        </div>
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            ></div>
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            >
                            活动日开始日期
                            <lightning:input type="Date" class="slds-input slds-input_bare "
                                aura:id="input-report-date1" />
              <lightning:input
                type="Date"
                class="slds-input slds-input_bare"
                aura:id="input-report-date1"
              />
                        </div>
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            >
                            活动日结束日期
                            <lightning:input type="Date" class="slds-input slds-input_bare "
                                aura:id="input-report-date2" />
              <lightning:input
                type="Date"
                class="slds-input slds-input_bare"
                aura:id="input-report-date2"
              />
                        </div>
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
                        </div>
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            ></div>
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="确认" variant="brand" onclick="{!c.select_repores_date}" />
                            <lightning:button label="取消" variant="brand" onclick="{!c.close_export}" />
              <lightning:button
                label="确认"
                variant="brand"
                onclick="{!c.select_repores_date}"
              />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.close_export}"
              />
                        </div>
                    </div>
                    <aura:set attribute="else">
                        <ui:outputRichText class="uiOutputRichText slds-m--around-large" value="{!v.TableContent2}" />
            <ui:outputRichText
              class="uiOutputRichText slds-m--around-large"
              value="{!v.TableContent2}"
            />
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="确认" variant="brand" onclick="{!c.exportDate}" />
                            <lightning:button label="取消" variant="brand" onclick="{!c.close_export}" />
              <lightning:button
                label="确认"
                variant="brand"
                onclick="{!c.exportDate}"
              />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.close_export}"
              />
                        </div>
                    </aura:set>
                </aura:if>
            </div>
        </div>
    </div>
    <div aura:id="modal_exportbg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_exportbg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <!-- 批量导出日报 end-->
    <div aura:id="modal_window" role="dialog" tabindex="-1"
        class="disp_none slds-modal slds-fade-in-open slds-modal--large" aria-labelledby="headerTarget" >
  <div
    aura:id="modal_window"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
    aria-labelledby="headerTarget"
  >
        <div class="slds-modal__container" >
            <div class="slds-modal slds-fade-in-open slds-hide" aura:id="successDiv">
                <!-- <ui:inputText aura:id="articleURL" /> -->
                <div class="demo-only" style="height: 8rem;">
        <div class="demo-only" style="height: 8rem">
                    <div class="slds-notify_container slds-is-relative">
                        <div class="slds-notify slds-notify_toast slds-theme_success" role="alert">
            <div
              class="slds-notify slds-notify_toast slds-theme_success"
              role="alert"
            >
                            <div class=" slds-m-left_xx-large">
                                <div
                                    class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large">
                                    <lightning:icon alternativeText="Success" iconName="utility:success" size="small"
                                        class="buttonColor slds-m-right_small" />
                  class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large"
                >
                  <lightning:icon
                    alternativeText="Success"
                    iconName="utility:success"
                    size="small"
                    class="buttonColor slds-m-right_small"
                  />
                                    <h2 class="slds-text-heading_small ">{!v.successMessage}</h2>
                                </div>
                            </div>
@@ -416,16 +665,28 @@
                    </div>
                </div>
            </div>
            <div class="slds-modal slds-fade-in-open slds-hide" aura:id="errorDiv" style="z-index: 10001">
      <div
        class="slds-modal slds-fade-in-open slds-hide"
        aura:id="errorDiv"
        style="z-index: 10001"
      >
                <!-- <ui:inputText aura:id="articleURL" /> -->
                <div class="demo-only" style="height: 8rem;">
        <div class="demo-only" style="height: 8rem">
                    <div class="slds-notify_container slds-is-relative">
                        <div class="slds-notify slds-notify_toast slds-theme_error" role="status">
            <div
              class="slds-notify slds-notify_toast slds-theme_error"
              role="status"
            >
                            <div class=" slds-m-left_xx-large">
                                <div
                                    class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large">
                                    <lightning:icon alternativeText="error" iconName="utility:error" size="small"
                                        class="buttonColor slds-m-right_small" />
                  class="slds-notify__content slds-m-left_small slds-align_absolute-center slds-m-left_xx-large"
                >
                  <lightning:icon
                    alternativeText="error"
                    iconName="utility:error"
                    size="small"
                    class="buttonColor slds-m-right_small"
                  />
                                    <h2 class="slds-text-heading_small ">{!v.errorMessage}</h2>
                                </div>
                            </div>
@@ -434,43 +695,74 @@
                </div>
            </div>
            
            <div class="slds-modal__content slds-grow slds-p-around--medium" style="position: relative;">
      <div
        class="slds-modal__content slds-grow slds-p-around--medium"
        style="position: relative"
      >
                <aura:renderIf isTrue="{!v.loginEdit}">
                    <lightning:spinner alternativeText="Loading" size="medium" style="width: 100%; height: 100%;"/>
          <lightning:spinner
            alternativeText="Loading"
            size="medium"
            style="width: 100%; height: 100%"
          />
                </aura:renderIf>
                <div class="slds-modal__header">
                    <h2 id="headerTarget" class="slds-text-heading--medium">
                        日报({!v.selected_date}&nbsp;{!v.selected_agency_person})</h2>
                    <ui:button aura:id="close_button" label="关闭"
                        class="close_button slds-button slds-button--neutral slds-order--1" press="{!c.toggle_report}" />
            日报({!v.selected_date}&nbsp;{!v.selected_agency_person})
          </h2>
          <ui:button
            aura:id="close_button"
            label="关闭"
            class="close_button slds-button slds-button--neutral slds-order--1"
            press="{!c.toggle_report}"
          />
                </div>
                <div class="slds-box slds-theme--shade">
                    <div class="slds-grid slds-wrap slds-grid--pull-padded">
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
            >
                            活动日
                            <lightning:input type="date" value="{!v.data.Report_Date__c}" aura:id="input-report-date"
                                variant="label-hidden" />
              <lightning:input
                type="date"
                value="{!v.data.Report_Date__c}"
                aura:id="input-report-date"
                variant="label-hidden"
              />
                        </div>
                        <!-- 医院 -->
                        <div aura:id="hospital_list"
            <div
              aura:id="hospital_list"
                            class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
                            data-select="single">
              data-select="single"
            >
                            <!-- label="医院" -->
                            医院
                            <lightning:input aura:id="hospital_input_text" class="field" value="{!v.hospital}"
                                updateOn="keyup" variant="label-hidden" />
              <lightning:input
                aura:id="hospital_input_text"
                class="field"
                value="{!v.hospital}"
                updateOn="keyup"
                variant="label-hidden"
              />
                            <div class="slds-lookup__menu" id="lookup-66">
                                <ul class="slds-lookup__list" role="listbox">
                                    <aura:iteration var="hospital" items="{!v.hospitalList}">
                                        <li role="presentation" onclick="{!c.selectHos}"
                    <li
                      role="presentation"
                      onclick="{!c.selectHos}"
                                            data-accName="{!hospital.Hospital_Name_readonly__c}"
                                            data-accId="{!hospital.Hospital__c}">
                                            <span class="slds-lookup__item-action slds-media" id="lookup-option-498"
                                                role="option">
                      data-accId="{!hospital.Hospital__c}"
                    >
                      <span
                        class="slds-lookup__item-action slds-media"
                        id="lookup-option-498"
                        role="option"
                      >
                                                <div class="slds-media__body">
                                                    <div class="slds-lookup__result-text">
                                                        {!hospital.Hospital_Name_readonly__c}</div>
                            {!hospital.Hospital_Name_readonly__c}
                          </div>
                                                </div>
                                            </span>
                                        </li>
@@ -480,69 +772,120 @@
                        </div>
                        <!-- 科室分类 -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
            >
                            {!v.fieldsmap.Department_Cateogy__c}
                            <!-- <ui:inputText aura:id="select_department" class="slds-select"
                                change="{!c.select_department}"/> -->
                            <lightning:input type="text" onchange="{!c.select_department}" aura:id="select_department"
                                variant="label-hidden" />
              <lightning:input
                type="text"
                onchange="{!c.select_department}"
                aura:id="select_department"
                variant="label-hidden"
              />
                        </div>
                        <!-- 经销商人员  change="{!c.select_DealerPersonnel}" -->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
                            style="width: 145px;">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
              style="width: 145px"
            >
                            {!v.fieldsmap.DealerPersonnel__c}
                            <ui:inputSelect aura:id="select_DealerPersonnel" class="slds-select" />
              <ui:inputSelect
                aura:id="select_DealerPersonnel"
                class="slds-select"
              />
                        </div>
                        <!-- 活动区分   -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
            >
                            {!v.fieldsmap.WorkRecord__c}
                            <ui:inputSelect aura:id="select_purpose_type" class="slds-select"
                                change="{!c.select_purpose_type}" />
              <ui:inputSelect
                aura:id="select_purpose_type"
                class="slds-select"
                change="{!c.select_purpose_type}"
              />
                        </div>
                        <!-- 拜访人 {!v.fieldsmap.doctor2__c}-->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
                            style="width: 145px;">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
              style="width: 145px"
            >
                            拜访人
                            <ui:inputSelect aura:id="select_doctor" class="slds-select" change="{!c.doctor_change}" />
              <ui:inputSelect
                aura:id="select_doctor"
                class="slds-select"
                change="{!c.doctor_change}"
              />
                        </div>
                        <!-- <p hidden="hidden"> -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-7 slds-large-size--1-of-7"
            >
                            <br />
                            <ui:button label="新建" class="slds-button" press="{!c.createCon}" disabled="true"
                                aura:id="new_con" />
              <ui:button
                label="新建"
                class="slds-button"
                press="{!c.createCon}"
                disabled="true"
                aura:id="new_con"
              />
                        </div>
                        <!-- </p> -->
                        <hr />
                        <!-- 产品分类(第三分类) change="{!c.select_ProductClassification}" -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
            >
                            产品分类(第三分类)
                            <ui:inputSelect aura:id="select_ProductClassification" class="slds-select"
                                change="{!c.selectProductClassification}" />
              <ui:inputSelect
                aura:id="select_ProductClassification"
                class="slds-select"
                change="{!c.selectProductClassification}"
              />
                        </div>
                        <!-- 使用产品1(产品型号)   UseProduct1__c  -->
                        <div aura:id="UseProduct1_List"
            <div
              aura:id="UseProduct1_List"
                            class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
                            data-select="single">
              data-select="single"
            >
                            <!-- label="使用产品1(产品型号)" -->
                            使用产品1(产品型号)
                            <lightning:input aura:id="UseProduct1_TEXT" class="field" value="{!v.UseProduct1}"
                                updateOn="keyup" variant="label-hidden" />
              <lightning:input
                aura:id="UseProduct1_TEXT"
                class="field"
                value="{!v.UseProduct1}"
                updateOn="keyup"
                variant="label-hidden"
              />
                            <div class="slds-lookup__menu" id="lookup-11">
                                <ul class="slds-lookup__list" role="listbox" style="max-height:230px;">
                                    <aura:iteration var="UseProduct1" items="{!v.UseProduct1List}">
                                        <li role="presentation" onclick="{!c.seletUseProduct1Change}"
                <ul
                  class="slds-lookup__list"
                  role="listbox"
                  style="max-height: 230px"
                >
                  <aura:iteration
                    var="UseProduct1"
                    items="{!v.UseProduct1List}"
                  >
                    <li
                      role="presentation"
                      onclick="{!c.seletUseProduct1Change}"
                                            data-accid="{!UseProduct1.Id}"
                                            data-accName="{!UseProduct1.Asset_Model_No__c}">
                                            <span class="slds-lookup__item-action slds-media" id="lookup-option-498"
                                                role="option">
                      data-accName="{!UseProduct1.Asset_Model_No__c}"
                    >
                      <span
                        class="slds-lookup__item-action slds-media"
                        id="lookup-option-498"
                        role="option"
                      >
                                                <div class="slds-media__body">
                                                    <div class="slds-lookup__result-text">
                                                        {!UseProduct1.Asset_Model_No__c}</div>
                            {!UseProduct1.Asset_Model_No__c}
                          </div>
                                                </div>
                                            </span>
                                        </li>
@@ -551,24 +894,45 @@
                            </div>
                        </div>
                        <!-- 使用产品2   UseProduct2__c  -->
                        <div aura:id="UseProduct2_List"
            <div
              aura:id="UseProduct2_List"
                            class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
                            data-select="single">
              data-select="single"
            >
                            <!-- label="使用产品2" -->
                            使用产品2
                            <lightning:input aura:id="UseProduct2_TEXT" class="field" value="{!v.UseProduct2}"
                                updateOn="keyup" variant="label-hidden" />
              <lightning:input
                aura:id="UseProduct2_TEXT"
                class="field"
                value="{!v.UseProduct2}"
                updateOn="keyup"
                variant="label-hidden"
              />
                            <div class="slds-lookup__menu" id="lookup-22">
                                <ul class="slds-lookup__list" role="listbox" style="max-height:230px;">
                                    <aura:iteration var="UseProduct2" items="{!v.UseProduct2List}">
                                        <li role="presentation" onclick="{!c.seletUseProduct2Change}"
                <ul
                  class="slds-lookup__list"
                  role="listbox"
                  style="max-height: 230px"
                >
                  <aura:iteration
                    var="UseProduct2"
                    items="{!v.UseProduct2List}"
                  >
                    <li
                      role="presentation"
                      onclick="{!c.seletUseProduct2Change}"
                                            data-accid="{!UseProduct2.Id}"
                                            data-accName="{!UseProduct2.Asset_Model_No__c}">
                                            <span class="slds-lookup__item-action slds-media" id="lookup-option-498"
                                                role="option">
                      data-accName="{!UseProduct2.Asset_Model_No__c}"
                    >
                      <span
                        class="slds-lookup__item-action slds-media"
                        id="lookup-option-498"
                        role="option"
                      >
                                                <div class="slds-media__body">
                                                    <div class="slds-lookup__result-text">
                                                        {!UseProduct2.Asset_Model_No__c}</div>
                            {!UseProduct2.Asset_Model_No__c}
                          </div>
                                                </div>
                                            </span>
                                        </li>
@@ -577,24 +941,45 @@
                            </div>
                        </div>
                        <!-- 使用产品3   UseProduct3__c  -->
                        <div aura:id="UseProduct3_List"
            <div
              aura:id="UseProduct3_List"
                            class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
                            data-select="single">
              data-select="single"
            >
                            <!-- label="使用产品3" -->
                            使用产品3
                            <lightning:input aura:id="UseProduct3_TEXT" class="field" value="{!v.UseProduct3}"
                                updateOn="keyup" variant="label-hidden" />
              <lightning:input
                aura:id="UseProduct3_TEXT"
                class="field"
                value="{!v.UseProduct3}"
                updateOn="keyup"
                variant="label-hidden"
              />
                            <div class="slds-lookup__menu" id="lookup-33">
                                <ul class="slds-lookup__list" role="listbox" style="max-height:230px;">
                                    <aura:iteration var="UseProduct3" items="{!v.UseProduct3List}">
                                        <li role="presentation" onclick="{!c.seletUseProduct3Change}"
                <ul
                  class="slds-lookup__list"
                  role="listbox"
                  style="max-height: 230px"
                >
                  <aura:iteration
                    var="UseProduct3"
                    items="{!v.UseProduct3List}"
                  >
                    <li
                      role="presentation"
                      onclick="{!c.seletUseProduct3Change}"
                                            data-accid="{!UseProduct3.Id}"
                                            data-accName="{!UseProduct3.Asset_Model_No__c}">
                                            <span class="slds-lookup__item-action slds-media" id="lookup-option-498"
                                                role="option">
                      data-accName="{!UseProduct3.Asset_Model_No__c}"
                    >
                      <span
                        class="slds-lookup__item-action slds-media"
                        id="lookup-option-498"
                        role="option"
                      >
                                                <div class="slds-media__body">
                                                    <div class="slds-lookup__result-text">
                                                        {!UseProduct3.Asset_Model_No__c}</div>
                            {!UseProduct3.Asset_Model_No__c}
                          </div>
                                                </div>
                                            </span>
                                        </li>
@@ -603,91 +988,137 @@
                            </div>
                        </div>
                        <!-- 效果/进度  EffectProgress__c-->
                        <div aura:id="product_category_select1"
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5">
            <div
              aura:id="product_category_select1"
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
            >
                            {!v.fieldsmap.EffectProgress__c}
                            <ui:inputSelect aura:id="select_EffectProgress" class="slds-select" />
              <ui:inputSelect
                aura:id="select_EffectProgress"
                class="slds-select"
              />
                        </div>
                        <hr />
                        <!-- 产品1同类耗材科室月使用量  ConsumptionOfConsumables__c-->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5"
            >
                            {!v.fieldsmap.ConsumptionOfConsumables__c}
                            <!-- <ui:inputText aura:id="select_ConsumptionOfConsumables" class="slds-select"
                                change="{!c.select_ConsumptionOfConsumables}" /> -->
                            <lightning:input type="text" onchange="{!c.select_ConsumptionOfConsumables}"
                                aura:id="select_ConsumptionOfConsumables" variant="label-hidden" />
              <lightning:input
                type="text"
                onchange="{!c.select_ConsumptionOfConsumables}"
                aura:id="select_ConsumptionOfConsumables"
                variant="label-hidden"
              />
                        </div>
                        <!-- 术士分类   WarlockClassification__c   -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6"
            >
                            {!v.fieldsmap.WarlockClassification__c}
                            <ui:inputSelect aura:id="select_OtherBrandConsumables" class="slds-select" />
              <ui:inputSelect
                aura:id="select_OtherBrandConsumables"
                class="slds-select"
              />
                        </div>
                        <!-- 已采用其他品牌   ProductCcategory__c -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6"
            >
                            {!v.fieldsmap.ProductCcategory__c}
                            <ui:inputSelect aura:id="select_ProductCcategory" class="slds-select"
                                change="{!c.selectpurposetype}" />
              <ui:inputSelect
                aura:id="select_ProductCcategory"
                class="slds-select"
                change="{!c.selectpurposetype}"
              />
                        </div>
                        <!-- 其他品牌产品类别  -->
                        <div aura:id="result"
                            class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6">
            <div
              aura:id="result"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6"
            >
                            {!v.fieldsmap.productCategories__c}
                            <ui:inputSelect aura:id="select_productCategories" class="slds-select" />
              <ui:inputSelect
                aura:id="select_productCategories"
                class="slds-select"
              />
                        </div>
                        <!-- 产品用量   warlocksNumber__c   -->
                        <div
                            class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6">
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6"
            >
                            {!v.fieldsmap.warlocksNumber__c}
                            <!-- <ui:inputText aura:id="select_warlocksNumber" class="slds-select"
                                change="{!c.select_warlocksNumber}" /> -->
                            <lightning:input type="text" onchange="{!c.select_warlocksNumber}"
                                aura:id="select_warlocksNumber" variant="label-hidden" />
              <lightning:input
                type="text"
                onchange="{!c.select_warlocksNumber}"
                aura:id="select_warlocksNumber"
                variant="label-hidden"
              />
                        </div>
                        <!-- 支援需求      WorkMark__c-->
                        <div style="padding-left: 12px;">
            <div style="padding-left: 12px">
                            {!v.fieldsmap.WorkMark__c}
                            <lightning:input type="checkbox" aura:id="select_WorkMark" />
                        </div>
                        <div aura:id="input-opportunity-stage"
                            class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12">
            <div
              aura:id="input-opportunity-stage"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
            >
                            {!v.fieldsmap.StageName__c}
                            <ui:inputSelect aura:id="select_stageName" class="slds-select" />
                        </div>
                        <div aura:id="input-opportunity-amount1"
                            class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12">
            <div
              aura:id="input-opportunity-amount1"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
            >
                            {!v.fieldsmap.Amount__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/>  医院采购预算(不含税,元)-->
                            <lightning:inputField value="{!v.oppdata.Amount__c}" class="" />
                        </div>
                        <div aura:id="input-opportunity-amount2"
                            class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12">
            <div
              aura:id="input-opportunity-amount2"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
            >
                            {!v.fieldsmap.OCMSale_Price__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/>      订货金额(不含税,元)  -->
                            <lightning:inputField value="{!v.oppdata.OCMSale_Price__c}" class="" />
              <lightning:inputField
                value="{!v.oppdata.OCMSale_Price__c}"
                class=""
              />
                        </div>
                        <div aura:id="input-opportunity-date"
                            class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12">
            <div
              aura:id="input-opportunity-date"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12"
            >
                            {!v.fieldsmap.Close_Forecasted_Date__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/>    预测与OCSM签约日 -->
                            <lightning:inputField value="{!v.oppdata.Close_Forecasted_Date__c}" class="" />
              <lightning:inputField
                value="{!v.oppdata.Close_Forecasted_Date__c}"
                class=""
              />
                        </div>
                        <hr />
                    </div>
                </div>
                <div class="save_button_area">
                    <ui:button aura:id="save_button" label="保存并新建"
                        class="save_button slds-button slds-button--brand slds-order--3" press="{!c.save_report}" />
          <ui:button
            aura:id="save_button"
            label="保存并新建"
            class="save_button slds-button slds-button--brand slds-order--3"
            press="{!c.save_report}"
          />
                </div>
                <aura:renderIf isTrue="{!v.reports_now_count > 0}">
                    <div class="mt40 slds-box slds-theme--shade">
                        <div class="slds-table--edit_container slds-is-relative">
                            <table
                                class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus"
                                role="grid">
                role="grid"
              >
                                <thead>
                                    <tr class="slds-line-height--reset">
                                        <th class="table_header slds-text-title--caps">
@@ -697,59 +1128,87 @@
                                            <span class="slds-truncate" title="Name">医院</span>
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate"
                                                title="Name">{!v.fieldsmap.Department_Cateogy__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.Department_Cateogy__c}</span
                      >
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.doctor2__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.doctor2__c}</span
                      >
                                            <!-- 客户人员 -->
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate"
                                                title="Name">{!v.fieldsmap.visitor_title__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.visitor_title__c}</span
                      >
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.WorkRecord__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.WorkRecord__c}</span
                      >
                                        </th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <aura:iteration items="{!v.reports_now}" var="item" indexVar="index">
                  <aura:iteration
                    items="{!v.reports_now}"
                    var="item"
                    indexVar="index"
                  >
                                        <tr aura:id="modal_data_list_tr" class="slds-hint-parent">
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.Department_Cateogy_text__c}">{!item.Name}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Department_Cateogy_text__c}"
                            >{!item.Name}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.Agency_Hospital__r.Name}">{!item.Agency_Hospital__r.Name}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Agency_Hospital__r.Name}"
                            >{!item.Agency_Hospital__r.Name}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.Department_Cateogy_text__c}">{!item.Department_Cateogy_text__c}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Department_Cateogy_text__c}"
                            >{!item.Department_Cateogy_text__c}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.doctor2__r.Name}">{!item.doctor2__r.Name}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.doctor2__r.Name}"
                            >{!item.doctor2__r.Name}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.visitor_title__c}">{!item.visitor_title__c}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.visitor_title__c}"
                            >{!item.visitor_title__c}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate"
                                                        title="{!item.WorkRecord__c}">{!item.WorkRecord__c}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.WorkRecord__c}"
                            >{!item.WorkRecord__c}</span
                          >
                                                </span>
                                            </td>
                                        </tr>
@@ -763,42 +1222,80 @@
        </div>
    </div>
  <div
    aura:id="modal_bg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <div aura:id="modal_bg" class="disp_none slds-backdrop slds-backdrop--open"></div>
    <div aura:id="modal_confirm" role="dialog" tabindex="-2" aria-labelledby="header43"
        class="disp_none slds-modal slds-fade-in-open">
  <div
    aura:id="modal_confirm"
    role="dialog"
    tabindex="-2"
    aria-labelledby="header43"
    class="disp_none slds-modal slds-fade-in-open"
  >
        <div class="slds-modal__container">
            <div class="slds-modal__header">
                <h2 id="header43" class="slds-text-heading--medium">{!v.modal_confirm_title}</h2>
        <h2 id="header43" class="slds-text-heading--medium">
          {!v.modal_confirm_title}
        </h2>
            </div>
            <div class="slds-modal__content slds-p-around--medium">
                <p>{!v.modal_confirm_text}</p>
            </div>
            <div class="slds-modal__footer">
                <ui:button label="是" class="slds-button slds-button--brand" press="{!c.yes_button}" />
                <ui:button label="否" class="slds-button slds-button--neutral" press="{!c.no_button}" />
        <ui:button
          label="是"
          class="slds-button slds-button--brand"
          press="{!c.yes_button}"
        />
        <ui:button
          label="否"
          class="slds-button slds-button--neutral"
          press="{!c.no_button}"
        />
            </div>
        </div>
    </div>
    <div aura:id="modal_confirm_bg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_confirm_bg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <div aura:id="modal_newAC" role="dialog" tabindex="-3" aria-labelledby="headertest"
        class="disp_none slds-modal slds-fade-in-open">
  <div
    aura:id="modal_newAC"
    role="dialog"
    tabindex="-3"
    aria-labelledby="headertest"
    class="disp_none slds-modal slds-fade-in-open"
  >
        <div class="slds-modal__container">
            <div class="slds-modal__header">
                <h2 id="headertest" class="slds-text-heading--medium">新建.拜访人</h2>
            </div>
            <div class="slds-modal__content slds-p-around--medium">
                <lightning:recordEditForm aura:id="recordEditForm" objectApiName="Agency_Contact__c"
                    onsuccess="{!c.handleSuccess}" onload="{!c.showRequiredFields}" onsubmit="{!c.handleSubmit}">
        <lightning:recordEditForm
          aura:id="recordEditForm"
          objectApiName="Agency_Contact__c"
          onsuccess="{!c.handleSuccess}"
          onload="{!c.showRequiredFields}"
          onsubmit="{!c.handleSubmit}"
        >
                    <lightning:messages aura:id="OppMessage" />
                    <!-- onload="{!c.showRequiredFields}" -->
                    <aura:renderIf isTrue="{!v.truthy}">
                        <lightning:inputField fieldName="Name" aura:id="newOpportunityField" />
                        <lightning:inputField fieldName="Type__c" aura:id="newOpportunityField" />
                        <lightning:inputField fieldName="Doctor_Division1__c" aura:id="newOpportunityField" />
            <lightning:inputField
              fieldName="Name"
              aura:id="newOpportunityField"
            />
            <lightning:inputField
              fieldName="Type__c"
              aura:id="newOpportunityField"
            />
            <lightning:inputField
              fieldName="Doctor_Division1__c"
              aura:id="newOpportunityField"
            />
                    </aura:renderIf>
                    <br />
                    <br />
@@ -806,15 +1303,21 @@
                    <br />
                    <br />
                    <div class="save_button_area">
                        <lightning:button class="slds-m-top_small" type="button" label="取消"
                            onclick="{!c.createCancel}" />
                        <lightning:button class="slds-m-top_small" type="button" label="保存"
                            onclick="{!c.handleSubmit}" />
            <lightning:button
              class="slds-m-top_small"
              type="button"
              label="取消"
              onclick="{!c.createCancel}"
            />
            <lightning:button
              class="slds-m-top_small"
              type="button"
              label="保存"
              onclick="{!c.handleSubmit}"
            />
                    </div>
                </lightning:recordEditForm>
            </div>
        </div>
    </div>
</aura:component>
force-app/main/default/aura/RetrospectiveWeeklyReport/RetrospectiveWeeklyReportHelper.js
Diff too large
force-app/main/default/aura/WeeklyReport/WeeklyReport.cmp
@@ -1,10 +1,30 @@
<aura:component controller="WeeklyReportCmp" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction,forceCommunity:availableForAllPageTypes" access="global" >
<aura:component
  controller="WeeklyReportCmp"
  implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction,forceCommunity:availableForAllPageTypes"
  access="global"
>
    <ltng:require styles="{!$Resource.multilineToastCSS}" /> 
    <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
    <aura:handler event="c:strike_evt" action="{!c.createAopp}" name="strike_evt_addNewRecord"/>
    <aura:attribute name="data" type="Agency_Report__c" default="{sobjectType:'Agency_Report__c'}"/>
    <aura:attribute name="oppdata" type="Agency_Opportunity__c" default="{sobjectType:'Agency_Opportunity__c'}"/>
    <aura:attribute name="acondata" type="Agency_Contact__c" default="{sobjectType:'Agency_Contact__c'}"/>
  <aura:handler
    event="c:strike_evt"
    action="{!c.createAopp}"
    name="strike_evt_addNewRecord"
  />
  <aura:attribute
    name="data"
    type="Agency_Report__c"
    default="{sobjectType:'Agency_Report__c'}"
  />
  <aura:attribute
    name="oppdata"
    type="Agency_Opportunity__c"
    default="{sobjectType:'Agency_Opportunity__c'}"
  />
  <aura:attribute
    name="acondata"
    type="Agency_Contact__c"
    default="{sobjectType:'Agency_Contact__c'}"
  />
    <!-- <aura:attribute name="oppdata_old" type="Agency_Opportunity__c" default="{sobjectType:'Agency_Opportunity__c'}"/> -->
    <aura:attribute name="Close_Forecasted_Date__c_o" type="Date"/>
    <aura:attribute name="Amount__c_o" type="String"/>
@@ -16,6 +36,7 @@
    <aura:attribute name="doclist" type="List"/>
    <aura:attribute name="docmap" type="Map"/>
    <aura:attribute name="login" type="Boolean" default="false"/>
  <aura:attribute name="loginEdit" type="Boolean" default="false" />
    <aura:attribute name="loadOpp" type="Boolean" default="false"/>
    <aura:attribute name="reportPageData" type="Map"/>
    <aura:attribute name="selectbody" type="String"/>
@@ -33,7 +54,11 @@
    <aura:attribute name="doctor_list" type="Map"/>
    <aura:attribute name="doctor_title" type="String"/>
    <aura:attribute name="opportunity_list" type="Map"/>
    <aura:handler name="change" value="{!v.data.Opportunity__c}" action="{!c.opportunityChange}"/>
  <aura:handler
    name="change"
    value="{!v.data.Opportunity__c}"
    action="{!c.opportunityChange}"
  />
    <aura:attribute name="edit_copy_select_report_id" type="String"/>
    <aura:attribute name="create_agency_report_id" type="String"/>
    <aura:attribute name="reports" type="List"/>
@@ -56,15 +81,31 @@
    <aura:handler name="change" value="{!v.data.Product_Category2__c}" action="{!c.productcategoryChange2}"/>
    <aura:handler name="change" value="{!v.data.Product_Category3__c}" action="{!c.productcategoryChange3}"/> -->
    <!-- <aura:handler name="change" value="{!v.oppdata.StageName__c}" action="{!c.stageNameChange}"/> -->
    <aura:attribute name="update_select_report_data_id" type="String" default=""/>
  <aura:attribute
    name="update_select_report_data_id"
    type="String"
    default=""
  />
    <!-- 批量添加周报 start-->
    <aura:attribute name="reports_date" type="List" />
    <!-- <aura:attribute name="reports_date1" type="Date" />
    <aura:attribute name="reports_date2" type="Date" /> -->
    <aura:attribute name="TableContent" type="String"  description=" Show the Result class"/>
    <aura:attribute name="TableContent2" type="String"  description=" Show the Result class"/>
    <aura:attribute name="TargetFileName" type="String"  description="Name of the file"/>
  <aura:attribute
    name="TableContent"
    type="String"
    description=" Show the Result class"
  />
  <aura:attribute
    name="TableContent2"
    type="String"
    description=" Show the Result class"
  />
  <aura:attribute
    name="TargetFileName"
    type="String"
    description="Name of the file"
  />
    <aura:attribute name="tableheaders" type="Object[]" />
    <aura:attribute name="fileContentData" type="String"/>
    <aura:attribute name="filename" type="String"/>
@@ -95,10 +136,14 @@
    
    <!--ロード中...-->
    <aura:renderIf isTrue="{!v.login}">
    <aura:renderIf isTrue="{!!v.loginEdit}">
        <!-- add by Deloitte-Link 2023-6-19 -->
       <div class="weeklyReportSpinner">
          <div class="slds-spinner_container">
              <div class="slds-spinner--brand slds-spinner slds-spinner--medium" role="alert">
          <div
            class="slds-spinner--brand slds-spinner slds-spinner--medium"
            role="alert"
          >
                  <span id="aa" class="slds-assistive-text">Loading</span>
                  <div class="slds-spinner__dot-a"></div>
                  <div class="slds-spinner__dot-b"></div>
@@ -106,68 +151,139 @@
          </div>
      </div>
    </aura:renderIf>
  </aura:renderIf>
    
    <div aura:id="report" id="report">
  <div aura:id="report" id="report" class="contents_wrapper">
        <div class="slds-grid slds-wrap slds-grid--pull-padded">
            <div class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12">
      <div
        class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12"
      >
                周
            </div>
            <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12">
                <ui:inputSelect aura:id="select_date" class="slds-select" change="{!c.select_date_change}"/>
      <div
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12"
      >
        <ui:inputSelect
          aura:id="select_date"
          class="slds-select"
          change="{!c.select_date_change}"
        />
            </div>
            
            <!-- 代理店担当者 -->
            <div class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12">
      <div
        class="tr mt5 slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12"
      >
                {!v.fieldsmap.Person_In_Charge2__c}
            </div>
            <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12">
                <ui:inputSelect aura:id="select_agency_person" class="slds-select agency_person_select" change="{!c.select_agency_change}"/>
      <div
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12"
      >
        <ui:inputSelect
          aura:id="select_agency_person"
          class="slds-select agency_person_select"
          change="{!c.select_agency_change}"
        />
            </div>
            <div class="tr slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12">
                <ui:button aura:id="new_button" label="新建" press="{!c.new_report}" disabled="true"/>
      <div
        class="tr slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-12 slds-large-size--1-of-12"
      >
        <ui:button
          aura:id="new_button"
          label="新建"
          press="{!c.new_report}"
          disabled="true"
        />
            </div>
            <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12">
                <ui:button aura:id="copy_button" label="复制" press="{!c.copy_button}" disabled="true"/>
      <div
        class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12"
      >
        <ui:button
          aura:id="copy_button"
          label="复制"
          press="{!c.copy_button}"
          disabled="true"
        />
                <!-- <ui:button aura:id="import" label="导入" press="{!c.import}" /> -->
                <ui:button aura:id="import" label="导入" press="{!c.import}" />
                
                <!-- <input type="file" class="file" aura:id="file" onchange="{!c.CreateRecord}"  style="position:absolute;filter:alpha(opacity=0);" size="1" hidden="true" />  -->
                <!-- <ui:button aura:id="import" label="导出" press="{!c.export}"/> -->
                <ui:button aura:id="export" label="导出" press="{!c.export_condition}"/>
        <ui:button
          aura:id="export"
          label="导出"
          press="{!c.export_condition}"
        />
            </div>
        </div>
    </div>
    
    <div aura:id="report_list" class="report_list_area">
        <div class="slds-table--edit_container slds-is-relative">
            <table class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus" role="grid" style="width:66.75rem;">
      <table
        class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus"
        role="grid"
        style="width: 66.75rem"
      >
                <thead>
                    <tr class="slds-line-height--reset">
                        <th class="table_header slds-text-title--caps" style="width: 250px;">
            <th
              class="table_header slds-text-title--caps"
              style="width: 250px; font-size: 13px"
            >
                            <span class="slds-truncate" title="Name">周报编号</span>
                        </th>
                        <th class="table_header slds-text-title--caps" style="width: 100px;">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Person_In_Charge2__c}</span>
            <th
              class="table_header slds-text-title--caps"
              style="width: 100px; font-size: 13px"
            >
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.Person_In_Charge2__c}</span
              >
                        </th>
                        <th class="table_header slds-text-title--caps" style="width: 250px;">
            <th
              class="table_header slds-text-title--caps"
              style="width: 250px; font-size: 13px"
            >
                            <span class="slds-truncate" title="Name">医院</span>
                        </th>
                        <th class="table_header slds-text-title--caps" style="width: 100px;">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Department_Cateogy__c}</span>
            <th
              class="table_header slds-text-title--caps"
              style="width: 100px; font-size: 13px"
            >
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.Department_Cateogy__c}</span
              >
                        </th>
                        <th class="table_header slds-text-title--caps" style="width: 100px;">
            <th
              class="table_header slds-text-title--caps"
              style="width: 100px; font-size: 13px"
            >
                            <!-- PIPL update Yin Mingjie 21/02/2022 start
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.doctor2__r}</span>
                            PIPL update Yin Mingjie 21/02/2022 end-->
                            <span class="slds-truncate" title="Name" style="width: 100px;">{!v.fieldsmap.Agency_Contact__c}</span>
              <span
                class="slds-truncate"
                title="Name"
                style="width: 100px; font-size: 13px"
                >{!v.fieldsmap.Agency_Contact__c}</span
              >
                        </th>
                        <th class="table_header slds-text-title--caps" style="width: 100px;">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.visitor_title__c}</span>
            <th
              class="table_header slds-text-title--caps"
              style="width: 100px; font-size: 13px"
            >
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.visitor_title__c}</span
              >
                        </th>
                        <th class="table_header slds-text-title--caps">
                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Purpose_Type__c}</span>
            <th
              class="table_header slds-text-title--caps"
              style="width: 100px; font-size: 13px"
            >
              <span class="slds-truncate" title="Name"
                >{!v.fieldsmap.Purpose_Type__c}</span
              >
                        </th>
                    </tr>
                </thead>
@@ -175,12 +291,27 @@
                    <aura:iteration items="{!v.reports}" var="item" indexVar="index">
                        <tr class="slds-hint-parent">
                            <td role="gridcell" class="slds-cell-edit">
                                <ui:inputRadio class="report_radio" name="report_radio" label="{!item.Name}" change="{!c.change_report_radio}"/>
                                <lightning:buttonIcon class="edit_button" iconName="utility:edit" size="small" alternativeText="edit" value="{!index}" onclick="{!c.edit_button}"/>
                <ui:inputRadio
                  class="report_radio"
                  name="report_radio"
                  label="{!item.Name}"
                  change="{!c.change_report_radio}"
                />
                <lightning:buttonIcon
                  class="edit_button"
                  iconName="utility:edit"
                  size="small"
                  alternativeText="edit"
                  value="{!index}"
                  onclick="{!c.edit_button}"
                />
                            </td>
                            <td role="gridcell" class="slds-cell-edit">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate" title="{!item.Person_In_Charge2__r.Name}">
                  <span
                    class="slds-truncate"
                    title="{!item.Person_In_Charge2__r.Name}"
                  >
                                        {!item.Person_In_Charge2__r.Name}
                                        <!-- <span class="decrypt">{!item.Person_In_Charge2__r.awsdata.lastName}</span> -->
                                    </span>
@@ -193,7 +324,11 @@
                            </th>
                            <td role="gridcell" class="slds-cell-edit">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate" title="{!item.Department_Cateogy__c}">{!item.Department_Cateogy__c}</span>
                  <span
                    class="slds-truncate"
                    title="{!item.Department_Cateogy__c}"
                    >{!item.Department_Cateogy__c}</span
                  >
                                </span>
                            </td>
                            <td role="gridcell" class="slds-cell-edit">
@@ -208,13 +343,17 @@
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate" title="{!item.visitor_title__c}">
                                        <span class="encrypt">{!item.visitor_title__c}</span>
                                        <span class="decrypt">{!item.doctor2__r.awsdata.doctorDivision1}</span>
                    <span class="decrypt"
                      >{!item.doctor2__r.awsdata.doctorDivision1}</span
                    >
                                    </span>
                                </span>
                            </td>
                            <td role="gridcell" class="slds-cell-edit">
                                <span class="slds-grid slds-grid--align-spread">
                                    <span class="slds-truncate" title="{!item.Purpose_Type__c}">{!item.Purpose_Type__c}</span>
                  <span class="slds-truncate" title="{!item.Purpose_Type__c}"
                    >{!item.Purpose_Type__c}</span
                  >
                                </span>
                            </td>
                        </tr>
@@ -224,47 +363,89 @@
        </div>
        <aura:renderIf isTrue="{!v.report_count > 0}">
            <aura:set attribute="else">
                <div class="no_data_area">
                    {!v.list_message}
                </div>
        <div class="no_data_area">{!v.list_message}</div>
            </aura:set>
        </aura:renderIf>
    </div>
<!--    <ui:button aura:id="test_button" label="test" class="fade animation_on" press="{!c.test}"/>-->
    <!-- 批量添加周报 start-->
    <div aura:id="modal_import" role="dialog" tabindex="-1" class="disp_none slds-modal slds-fade-in-open slds-modal--large" aria-labelledby="headerTarget">
  <div
    aura:id="modal_import"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
    aria-labelledby="headerTarget"
  >
        <div class="slds-modal__container ">
      <aura:renderIf isTrue="{!v.loginEdit}">
        <lightning:spinner
          alternativeText="Loading"
          size="medium"
          style="width: 100%; height: 80%; top: 50px"
        />
      </aura:renderIf>
            <div class="slds-modal__header ">
                <h4 id="headerTarget" class="slds-float--left"></h4>
                <h2 id="headerTarget" class="slds-text-heading--medium">周报批量导入</h2>
                <ui:button aura:id="close_button" label="关闭" class="close_button slds-button slds-button--neutral slds-order--1" press="{!c.close_import}"/>
        <h2 id="headerTarget" class="slds-text-heading--medium">
          周报批量导入
        </h2>
        <ui:button
          aura:id="close_button"
          label="关闭"
          class="close_button slds-button slds-button--neutral slds-order--1"
          press="{!c.close_import}"
        />
            </div>
            <div class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium " >
      <div
        class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium"
      >
                <aura:if isTrue="{!v.showMain}">
                    <div>
                        <!-- <input type="file" class="file" aura:id="file" onchange="{!c.CreateRecord}" value="导入" /> -->
                        <lightning:input type="file" class="file" uara:id="file" onchange="{!c.CreateRecord}" />
            <lightning:input
              type="file"
              class="file"
              uara:id="file"
              onchange="{!c.CreateRecord}"
            />
                        <!-- <ui:button label="Create Accounts" press="{!c.CreateRecord}"/> -->
                    </div>
                    <aura:set attribute="else">
                        <!-- <ui:outputRichText class="uiOutputRichText slds-m-around-large" value="{!v.TargetFileName}"/>  -->
                        <ui:outputRichText class="uiOutputRichText slds-m--around-large" value="{!v.TableContent}"/>
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="保存" variant="brand" onclick="{!c.processFileContent}"
            <ui:outputRichText
              class="uiOutputRichText slds-m--around-large"
              value="{!v.TableContent}"
                                              />
                            <lightning:button label="取消" variant="brand"
                                              onclick="{!c.cancel}" />
            <div class="slds-p-around--large slds-align--absolute-center">
              <lightning:button
                label="保存"
                variant="brand"
                onclick="{!c.processFileContent}"
              />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.cancel}"
              />
                        </div>
                        <!-- start DTT-zhj 增加错误信息table 2023-05-16-->
                        <aura:if isTrue="{!v.showErrorInfo}">
                            <div class="slds-p-around--large slds-align--absolute-center">
                                <lightning:button label="导出错误信息" variant="brand" onclick="{!c.exportErrorInfo}" />
                <lightning:button
                  label="导出错误信息"
                  variant="brand"
                  onclick="{!c.exportErrorInfo}"
                />
                            </div>
                            <div class="slds-p-around--large slds-align--absolute-center">
                                <div style="height: 300px;overflow-x:scroll">
                                    <lightning:datatable keyField="id" data="{! v.errorData }"
                                        columns="{! v.errorColumns }" hideCheckboxColumn="true" />
                  <lightning:datatable
                    keyField="id"
                    data="{! v.errorData }"
                    columns="{! v.errorColumns }"
                    hideCheckboxColumn="true"
                  />
                                </div>
                            </div>
                        </aura:if>
@@ -274,39 +455,76 @@
            </div>
        </div>
    </div>
    <div aura:id="modal_importbg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_importbg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <!-- 批量添加周报 end-->
    <!-- 批量导出周报 start-->
    <div aura:id="modal_export" role="dialog" tabindex="-1" class="disp_none slds-modal slds-fade-in-open slds-modal--large" >
  <div
    aura:id="modal_export"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
  >
        <div class="slds-modal__container">
            <div class="slds-modal__header">
                <h4 id="headerTarget" class="slds-float--left"></h4>
                <h2 id="headerTarget" class="slds-text-heading--medium">周报批量导出</h2>
                <ui:button aura:id="close_button" label="关闭" class="close_button slds-button slds-button--neutral slds-order--1" press="{!c.close_export}"/>
        <h2 id="headerTarget" class="slds-text-heading--medium">
          周报批量导出
        </h2>
        <ui:button
          aura:id="close_button"
          label="关闭"
          class="close_button slds-button slds-button--neutral slds-order--1"
          press="{!c.close_export}"
        />
            </div>
            <div class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium">
      <div
        class="slds-modal__content slds-scrollable slds-grow slds-p-around--medium"
      >
                <aura:if isTrue="{!v.showMain}">
                    <div class="slds-grid slds-wrap slds-grid--pull-padded" >
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
                        </div>
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            ></div>
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            >
                            活动日开始日期
                            
                            <lightning:input type="Date" class="slds-input slds-input_bare " aura:id="input-report-date1" />
              <lightning:input
                type="Date"
                class="slds-input slds-input_bare"
                aura:id="input-report-date1"
              />
                        </div>
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            >
                            活动日结束日期
                            <lightning:input type="Date" class="slds-input slds-input_bare " aura:id="input-report-date2" />
              <lightning:input
                type="Date"
                class="slds-input slds-input_bare"
                aura:id="input-report-date2"
              />
                        </div>
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4">
                        </div>
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-4"
            ></div>
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="确认" variant="brand" onclick="{!c.select_repores_date}"
              <lightning:button
                label="确认"
                variant="brand"
                onclick="{!c.select_repores_date}"
                                                  />
                            <lightning:button label="取消" variant="brand"
                                                  onclick="{!c.close_export}" />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.close_export}"
              />
                        </div>
                    </div>
                    <!-- <div>
@@ -319,51 +537,109 @@
                                              onclick="{!c.close_export}" /> 
                    </div> -->
                    <aura:set attribute="else">
                        <ui:outputRichText class="uiOutputRichText slds-m--around-large" value="{!v.TableContent2}"/>
                        <div class="slds-p-around--large slds-align--absolute-center">
                            <lightning:button label="确认" variant="brand" onclick="{!c.exportDate}"
            <ui:outputRichText
              class="uiOutputRichText slds-m--around-large"
              value="{!v.TableContent2}"
                                              />
                            <lightning:button label="取消" variant="brand"
                                              onclick="{!c.close_export}" />
            <div class="slds-p-around--large slds-align--absolute-center">
              <lightning:button
                label="确认"
                variant="brand"
                onclick="{!c.exportDate}"
              />
              <lightning:button
                label="取消"
                variant="brand"
                onclick="{!c.close_export}"
              />
                        </div>
                    </aura:set>
                </aura:if>
            </div>
        </div>
    </div>
    <div aura:id="modal_exportbg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_exportbg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <!-- 批量导出周报 end-->
    <div aura:id="modal_window" role="dialog" tabindex="-1" class="disp_none slds-modal slds-fade-in-open slds-modal--large" aria-labelledby="headerTarget">
  <div
    aura:id="modal_window"
    role="dialog"
    tabindex="-1"
    class="disp_none slds-modal slds-fade-in-open slds-modal--large"
    aria-labelledby="headerTarget"
  >
        <div class="slds-modal__container">
      <aura:renderIf isTrue="{!v.loginEdit}">
        <lightning:spinner
          alternativeText="Loading"
          size="medium"
          style="width: 100%; height: 80%; top: 50px"
        />
      </aura:renderIf>
            <div class="slds-modal__header">
                <h4 id="headerTarget" class="slds-float--left"></h4>
                <h2 id="headerTarget" class="slds-text-heading--medium">周报({!v.selected_date}&nbsp;{!v.selected_agency_person})</h2>
                <ui:button aura:id="close_button" label="关闭" class="close_button slds-button slds-button--neutral slds-order--1" press="{!c.toggle_report}"/>
        <h2 id="headerTarget" class="slds-text-heading--medium">
          周报({!v.selected_date}&nbsp;{!v.selected_agency_person})
        </h2>
        <ui:button
          aura:id="close_button"
          label="关闭"
          class="close_button slds-button slds-button--neutral slds-order--1"
          press="{!c.toggle_report}"
        />
            </div>
            <div class="slds-modal__content slds-grow slds-p-around--medium">
                <div class="slds-box slds-theme--shade">
                    <div class="slds-grid slds-wrap slds-grid--pull-padded" >
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop" >
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop"
            >
                            活动日
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <!-- <force:inputField value="{!v.data.Report_Date__c}" aura:id="input-report-date"/> -->
                            <lightning:input type="date" value="{!v.data.Report_Date__c}" aura:id="input-report-date"
                                variant="label-hidden" />
              <lightning:input
                type="date"
                value="{!v.data.Report_Date__c}"
                aura:id="input-report-date"
                variant="label-hidden"
              />
                        </div>
                        <!-- 医院 -->
                        <div aura:id="hospital_list" class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5 marginTop" data-select="single">
            <div
              aura:id="hospital_list"
              class="slds-form-element slds-lookup slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-5 marginTop"
              data-select="single"
            >
                            <!-- <ui:inputText aura:id="hospital_input_text" label="医院" class="field" value="{!v.hospital}" updateOn="keyup"/> -->
                            医院
                            <lightning:input aura:id="hospital_input_text" class="field" value="{!v.hospital}" variant="label-hidden" updateOn="keyup"/>
              <lightning:input
                aura:id="hospital_input_text"
                class="field"
                value="{!v.hospital}"
                variant="label-hidden"
                updateOn="keyup"
              />
                            <div class="slds-lookup__menu" id="lookup-66">
                                <ul class="slds-lookup__list" role="listbox">
                                    <aura:iteration var="hospital" items="{!v.hospitalList}">
                                        <li role="presentation" onclick="{!c.selectHos}" data-accName="{!hospital.Hospital_Name_readonly__c}" data-accId="{!hospital.Hospital__c}">
                                            <span class="slds-lookup__item-action slds-media" id="lookup-option-498" role="option">
                    <li
                      role="presentation"
                      onclick="{!c.selectHos}"
                      data-accName="{!hospital.Hospital_Name_readonly__c}"
                      data-accId="{!hospital.Hospital__c}"
                    >
                      <span
                        class="slds-lookup__item-action slds-media"
                        id="lookup-option-498"
                        role="option"
                      >
                                                <div class="slds-media__body">
                                                    <div class="slds-lookup__result-text">{!hospital.Hospital_Name_readonly__c}</div>
                          <div class="slds-lookup__result-text">
                            {!hospital.Hospital_Name_readonly__c}
                          </div>
                                                </div>
                                            </span>
                                        </li>
@@ -373,38 +649,70 @@
                        </div>
                        
                        <!-- 科室分类 -->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop"
            >
                            {!v.fieldsmap.Department_Cateogy__c}
                            <ui:inputSelect aura:id="select_department" class="slds-select" change="{!c.select_department}"/>
              <ui:inputSelect
                aura:id="select_department"
                class="slds-select"
                change="{!c.select_department}"
              />
                        </div>
                        
                        <!-- 先生 -->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop"
            >
                            {!v.fieldsmap.doctor2__c}
                            <ui:inputSelect aura:id="select_doctor" class="slds-select" change="{!c.doctor_change}"/>
              <ui:inputSelect
                aura:id="select_doctor"
                class="slds-select"
                change="{!c.doctor_change}"
              />
                        </div>
                        
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-12 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-12 marginTop"
            >
                            <br/>
                            <ui:button label="新建" class="slds-button" press="{!c.createCon}" disabled="true" aura:id="new_con"/>
              <ui:button
                label="新建"
                class="slds-button"
                press="{!c.createCon}"
                disabled="true"
                aura:id="new_con"
              />
                        </div>
                        
                        <!-- 职位 -->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-8 marginTop"
            >
                            {!v.fieldsmap.visitor_title__c}
                            <div>{!v.doctor_title}</div>
                        </div>       
                        <!-- 活动区分 -->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop"
            >
                            {!v.fieldsmap.Purpose_Type__c}
                            <ui:inputSelect aura:id="select_purpose_type" class="slds-select" change="{!c.select_purpose_type}"/>
              <ui:inputSelect
                aura:id="select_purpose_type"
                class="slds-select"
                change="{!c.select_purpose_type}"
              />
                        </div>
                        <!-- 询价 -->
                        <div aura:id="input-opportunity-opp" class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--4-of-12 slds-large-size--4-of-12 marginTop">
            <div
              aura:id="input-opportunity-opp"
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--4-of-12 slds-large-size--4-of-12 marginTop"
            >
                            {!v.fieldsmap.Opportunity__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <!-- <force:inputField value="{!v.data.Opportunity__c}" aura:id="input-opportunity"/> -->
                            <c:strike_lookup label=""
              <c:strike_lookup
                label=""
                                    object="Agency_Opportunity__c"
                                    searchField="Name"
                                    placeholder="搜索经销商询价..."
@@ -419,55 +727,102 @@
                                    showRecentRecords ="true"
                                    value="{!v.data.Opportunity__c}"
                                    filter="{!v.opportunity_cfilter}"
                                    subTitleFormat="{0}+{1}+{2}"/>
                subTitleFormat="{0}+{1}+{2}"
              />
                        </div>
                        <div aura:id="input-opportunity-blank" class="lds-p-horizontal--small slds-size--1-of-1 slds-medium-size--8-of-12 slds-large-size--8-of-12 marginTop">
                        </div>
                        <div aura:id="input-opportunity-stage" class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop">
            <div
              aura:id="input-opportunity-blank"
              class="lds-p-horizontal--small slds-size--1-of-1 slds-medium-size--8-of-12 slds-large-size--8-of-12 marginTop"
            ></div>
            <div
              aura:id="input-opportunity-stage"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop"
            >
                            {!v.fieldsmap.StageName__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <ui:inputSelect aura:id="select_stageName" class="slds-select"/>
                            <!-- <force:inputField value="{!v.oppdata.StageName__c}" aura:id="input-oppstage" /> -->
                        </div>
                        <div aura:id="input-opportunity-amount1" class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop">
            <div
              aura:id="input-opportunity-amount1"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop"
            >
                            {!v.fieldsmap.Amount__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <force:inputField value="{!v.oppdata.Amount__c}" class=""/>
                        </div>
                        <div aura:id="input-opportunity-amount2" class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop">
            <div
              aura:id="input-opportunity-amount2"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop"
            >
                            {!v.fieldsmap.OCMSale_Price__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <force:inputField value="{!v.oppdata.OCMSale_Price__c}" class=""/>
              <force:inputField
                value="{!v.oppdata.OCMSale_Price__c}"
                class=""
              />
                        </div>
                        <div aura:id="input-opportunity-date" class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop">
            <div
              aura:id="input-opportunity-date"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--2-of-12 slds-large-size--2-of-12 marginTop"
            >
                            {!v.fieldsmap.Close_Forecasted_Date__c}
                            <!-- <ui:inputSelect aura:id="select_opportunity" class="slds-select"/> -->
                            <force:inputField value="{!v.oppdata.Close_Forecasted_Date__c}" class=""/>
              <force:inputField
                value="{!v.oppdata.Close_Forecasted_Date__c}"
                class=""
              />
                        </div>
                        <!-- 製品分類 -->
                        <div aura:id="product_category_select1" class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop">
            <div
              aura:id="product_category_select1"
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop"
            >
                            {!v.fieldsmap.Product_Category1__c}
                            <!-- <force:inputField value="{!v.data.Product_Category1__c}" aura:id="input-product-category1"/> -->
                            <ui:inputSelect aura:id="select_Product1" class="slds-select" change="{!c.productcategoryChange1}"/>
              <ui:inputSelect
                aura:id="select_Product1"
                class="slds-select"
                change="{!c.productcategoryChange1}"
              />
                        </div>
                        <div aura:id="product_category_select2" class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop">
            <div
              aura:id="product_category_select2"
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop"
            >
                            {!v.fieldsmap.Product_Category2__c}
                            <!-- <force:inputField value="{!v.data.Product_Category2__c}" aura:id="input-product-category2"/> -->
                            <ui:inputSelect aura:id="select_Product2" class="slds-select" change="{!c.productcategoryChange2}"/>
              <ui:inputSelect
                aura:id="select_Product2"
                class="slds-select"
                change="{!c.productcategoryChange2}"
              />
                        </div>
                        <div aura:id="product_category_select3" class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop">
            <div
              aura:id="product_category_select3"
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop"
            >
                            {!v.fieldsmap.Product_Category3__c}
                            <!-- <force:inputField value="{!v.data.Product_Category3__c}" aura:id="input-product-category3"/> -->
                            <ui:inputSelect aura:id="select_Product3" class="slds-select" change="{!c.productcategoryChange3}"/>
              <ui:inputSelect
                aura:id="select_Product3"
                class="slds-select"
                change="{!c.productcategoryChange3}"
              />
                        </div>
                        <!--SWAG-CBX68C fy 【委托】DAMS系统周报模块内容需求增加 start-->
                        <!-- 支援需求 change="{!c.SupportNeeds__c}"-->
                        <div class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop">
            <div
              class="slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--1-of-5 slds-large-size--1-of-6 marginTop"
            >
                            {!v.fieldsmap.SupportNeeds__c}
                            <ui:inputSelect aura:id="SupportNeeds__c" class="slds-select" />
                        </div>
                        <!--SWAG-CBX68C fy 【委托】DAMS系统周报模块内容需求增加 end-->
                        <div aura:id="result" class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop">
            <div
              aura:id="result"
              class="disp_none slds-p-horizontal--small slds-size--1-of-1 slds-medium-size--3-of-12 slds-large-size--3-of-12 marginTop"
            >
                            {!v.fieldsmap.Result__c}
                            <ui:inputSelect aura:id="select_result" class="slds-select"/>
                            <!-- <ui:inputText label="结果" class="bcolor" value="{!v.result}"/> -->
@@ -475,13 +830,21 @@
                    </div>
                </div>
                <div class="save_button_area">
                    <ui:button aura:id="save_button" label="保存并新建" class="save_button slds-button slds-button--brand slds-order--3" press="{!c.save_report}"/>
          <ui:button
            aura:id="save_button"
            label="保存并新建"
            class="save_button slds-button slds-button--brand slds-order--3"
            press="{!c.save_report}"
          />
                </div>
                
                <aura:renderIf isTrue="{!v.reports_now_count > 0}">
                    <div class="mt40 slds-box slds-theme--shade">
                        <div class="slds-table--edit_container slds-is-relative">
                            <table class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus" role="grid">
              <table
                class="slds-table slds-table--edit slds-table--bordered slds-table--fixed-layout slds-no-cell-focus"
                role="grid"
              >
                                <thead>
                                    <tr class="slds-line-height--reset">
                                        <th class="table_header slds-text-title--caps">
@@ -491,56 +854,96 @@
                                            <span class="slds-truncate" title="Name">医院</span>
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Department_Cateogy__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.Department_Cateogy__c}</span
                      >
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.doctor2__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.doctor2__c}</span
                      >
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.visitor_title__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.visitor_title__c}</span
                      >
                                        </th>
                                        <th class="table_header slds-text-title--caps">
                                            <span class="slds-truncate" title="Name">{!v.fieldsmap.Purpose_Type__c}</span>
                      <span class="slds-truncate" title="Name"
                        >{!v.fieldsmap.Purpose_Type__c}</span
                      >
                                        </th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <aura:iteration items="{!v.reports_now}" var="item" indexVar="index">
                  <aura:iteration
                    items="{!v.reports_now}"
                    var="item"
                    indexVar="index"
                  >
                                        <tr aura:id="modal_data_list_tr" class="slds-hint-parent">
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.Department_Cateogy__c}">{!item.Name}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Department_Cateogy__c}"
                            >{!item.Name}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.Agency_Hospital__r.Name}">{!item.Agency_Hospital__r.Name}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Agency_Hospital__r.Name}"
                            >{!item.Agency_Hospital__r.Name}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.Department_Cateogy__c}">{!item.Department_Cateogy__c}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Department_Cateogy__c}"
                            >{!item.Department_Cateogy__c}</span
                          >
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.doctor2__r.Name}">
                          <span
                            class="slds-truncate"
                            title="{!item.doctor2__r.Name}"
                          >
                                                        <span class="encrypt">{!item.doctor2__r.Name}</span>
                                                        <span class="decrypt">{!item.doctor2NameOrigin}</span>
                            <span class="decrypt"
                              >{!item.doctor2NameOrigin}</span
                            >
                                                    </span>
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.visitor_title__c}">
                                                        <span class="encrypt">{!item.visitor_title__c}</span>
                                                        <span class="decrypt">{!item.visitorTitleOrigin}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.visitor_title__c}"
                          >
                            <span class="encrypt"
                              >{!item.visitor_title__c}</span
                            >
                            <span class="decrypt"
                              >{!item.visitorTitleOrigin}</span
                            >
                                                    </span>
                                                </span>
                                            </td>
                                            <td role="gridcell" class="slds-cell-edit">
                                                <span class="slds-grid slds-grid--align-spread">
                                                    <span class="slds-truncate" title="{!item.Purpose_Type__c}">{!item.Purpose_Type__c}</span>
                          <span
                            class="slds-truncate"
                            title="{!item.Purpose_Type__c}"
                            >{!item.Purpose_Type__c}</span
                          >
                                                </span>
                                            </td>
                                        </tr>
@@ -553,37 +956,87 @@
            </div>
        </div>
    </div>
    <div aura:id="modal_bg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_bg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    
    <div aura:id="modal_confirm" role="dialog" tabindex="-2" aria-labelledby="header43" class="disp_none slds-modal slds-fade-in-open">
  <div
    aura:id="modal_confirm"
    role="dialog"
    tabindex="-2"
    aria-labelledby="header43"
    class="disp_none slds-modal slds-fade-in-open"
  >
        <div class="slds-modal__container">
            <div class="slds-modal__header">
                <h2 id="header43" class="slds-text-heading--medium">{!v.modal_confirm_title}</h2>
        <h2 id="header43" class="slds-text-heading--medium">
          {!v.modal_confirm_title}
        </h2>
            </div>
            <div class="slds-modal__content slds-p-around--medium">
                <p>{!v.modal_confirm_text}</p>
            </div>
            <div class="slds-modal__footer">
                <ui:button label="是" class="slds-button slds-button--brand" press="{!c.yes_button}"/>
                <ui:button label="否" class="slds-button slds-button--neutral" press="{!c.no_button}" />
        <ui:button
          label="是"
          class="slds-button slds-button--brand"
          press="{!c.yes_button}"
        />
        <ui:button
          label="否"
          class="slds-button slds-button--neutral"
          press="{!c.no_button}"
        />
            </div>
        </div>
    </div>
    <div aura:id="modal_confirm_bg" class="disp_none slds-backdrop slds-backdrop--open"></div>
  <div
    aura:id="modal_confirm_bg"
    class="disp_none slds-backdrop slds-backdrop--open"
  ></div>
    <div aura:id="modal_newAC" role="dialog" tabindex="-3" aria-labelledby="headertest" class="disp_none slds-modal slds-fade-in-open">
  <div
    aura:id="modal_newAC"
    role="dialog"
    tabindex="-3"
    aria-labelledby="headertest"
    class="disp_none slds-modal slds-fade-in-open"
  >
        <div class="slds-modal__container">
      <aura:renderIf isTrue="{!v.loginEdit}">
        <lightning:spinner
          alternativeText="Loading"
          size="medium"
          style="width: 100%; height: 80%; top: 50px"
        />
      </aura:renderIf>
            <div class="slds-modal__header">
                <h2 id="headertest" class="slds-text-heading--medium">新建.客户人员</h2>
            </div>
            <div class="slds-modal__content slds-p-around--medium">
                <lightning:recordEditForm aura:id="recordEditForm"  objectApiName="Agency_Contact__c" onsuccess="{!c.handleSuccess}" onload="{!c.showRequiredFields}" onsubmit="{!c.handleSubmit}">
        <lightning:recordEditForm
          aura:id="recordEditForm"
          objectApiName="Agency_Contact__c"
          onsuccess="{!c.handleSuccess}"
          onload="{!c.showRequiredFields}"
          onsubmit="{!c.handleSubmit}"
        >
                    <lightning:messages aura:id="OppMessage" />
                    <!-- onload="{!c.showRequiredFields}" -->
                    <aura:renderIf isTrue="{!v.truthy}">
                        <lightning:inputField fieldName="Name" aura:id="newOpportunityField" />
                        <lightning:inputField fieldName="Type__c" aura:id="newOpportunityField" />
                        <lightning:inputField fieldName="Doctor_Division1__c" aura:id="newOpportunityField" />
            <lightning:inputField
              fieldName="Name"
              aura:id="newOpportunityField"
            />
            <lightning:inputField
              fieldName="Type__c"
              aura:id="newOpportunityField"
            />
            <lightning:inputField
              fieldName="Doctor_Division1__c"
              aura:id="newOpportunityField"
            />
                        <!-- <lightning:inputField class="customRequired none" aura:id="Input_type__c" fieldName="Type__c"/>
                        <lightning:inputField class="customRequired none" aura:id="Input_Doctor_Division1__c" fieldName="Doctor_Division1__c"/> -->
                    </aura:renderIf>
@@ -593,15 +1046,20 @@
                    <br/>
                    <br/>
                    <div class="save_button_area">
                        <lightning:button class="slds-m-top_small" type="button" label="取消" onclick="{!c.createCancel}"/>
                        <lightning:button class="slds-m-top_small" type="submit" label="保存" />
            <lightning:button
              class="slds-m-top_small"
              type="button"
              label="取消"
              onclick="{!c.createCancel}"
            />
            <lightning:button
              class="slds-m-top_small"
              type="submit"
              label="保存"
            />
                    </div>
                </lightning:recordEditForm>
            </div>
        </div>
    </div>
</aura:component>
force-app/main/default/aura/WeeklyReport/WeeklyReport.css
@@ -4,9 +4,10 @@
.THIS.height100vh {
    height: 100vh;
}
.THIS.contents_wrapper {
/* .THIS.contents_wrapper {
    padding-top: 50px;
}
    width: 105%;
} */
.THIS .mt5 {
    margin-top: 5px;
}
@@ -20,10 +21,10 @@
}
.THIS .no_data_area {
    text-align: center;
    margin: .5em 0;
  margin: 0.5em 0;
}
.THIS.report_list_area {
    margin: 40px 0 20px 100px;
  margin: 40px 0 20px 0px;
    height: 60vh;
    overflow-y: scroll;
}
@@ -110,7 +111,8 @@
    display: none;
}
.THIS .slds-input:focus, .THIS .slds-input:active {
.THIS .slds-input:focus,
.THIS .slds-input:active {
     border-color: rgb(216, 221, 230);
     box-shadow: none;
}
@@ -145,14 +147,24 @@
    top:100px;
}
.THIS .weeklyReportSpinnerEdit {
  top: 50px;
}
.THIS .slds-spinner_container{
    position: absolute;
    top:100px;
}
.THIS .slds-spinner_containerEdit {
  position: absolute;
  top: 50px;
}
.THIS .marginTop{
    margin-top: 10px;
}
.THIS .custom-input .uiInput {
    height: 2rem; /* 调整高度为你需要的值,如 2rem */
  height: 2rem;
}
/* add by Deloitte-Link 2023-6-19 end*/
force-app/main/default/aura/WeeklyReport/WeeklyReportController.js
@@ -1,6 +1,6 @@
({
    doInit : function(component, event, helper) {
        console.log('zhj 新方案weeklyReport');
    console.log("zhj 新方案weeklyReport");
        if (window.location.href.endsWith("weekly-report")) {
            helper.doinit(component, event, helper);
        } else {
@@ -10,23 +10,23 @@
    },
    createAopp : function(component, event, helper) {
        var addRecordEvent = $A.get('e.force:createRecord');
    var addRecordEvent = $A.get("e.force:createRecord");
        addRecordEvent.setParams({
            entityApiName: 'Agency_Opportunity__c',
            recordTypeId: '012100000006KW7'
      entityApiName: "Agency_Opportunity__c",
      recordTypeId: "012100000006KW7"
        });
        addRecordEvent.fire();
        component.set("v.showErrorInfo", false);
    },
    
    new_report : function(component, event, helper) {
        component.find('save_button').set('v.label', '保存并新建');
        component.set('v.data.Report_Date__c', '');
    component.find("save_button").set("v.label", "保存并新建");
    component.set("v.data.Report_Date__c", "");
        helper.new_report(component, event, helper);
    },
    
    copy_button : function(component, event, helper) {
        component.find('save_button').set('v.label', '保存并新建');
    component.find("save_button").set("v.label", "保存并新建");
        helper.copy_button(component, event, helper);
    },
    
@@ -35,7 +35,7 @@
    },
    
    edit_button : function(component, event, helper) {
        component.find('save_button').set('v.label', '保存');
    component.find("save_button").set("v.label", "保存");
        helper.edit_button(component, event, helper);
    },
    
@@ -64,7 +64,7 @@
        // helper.handleFormSubmit(component);
        var showValidationError = false;
        var fields = component.find("newOpportunityField");
        var vaildationFailReason = '';
    var vaildationFailReason = "";
        // var vaildationFailReason2 = '';
        // var currentDate = new Date().toJSON().slice(0,10);
        
@@ -73,25 +73,30 @@
        // PIPL update Yin Mingjie 21/02/2022 end
        fields.forEach(function (field) {
            if(field.get("v.fieldName") === 'Type__c' && $A.util.isEmpty(field.get("v.value"))){
      if (
        field.get("v.fieldName") === "Type__c" &&
        $A.util.isEmpty(field.get("v.value"))
      ) {
                showValidationError = true;
                vaildationFailReason = "分类不能为空!";
            }else if(field.get("v.fieldName") === 'Doctor_Division1__c' && $A.util.isEmpty(field.get("v.value"))){
      } else if (
        field.get("v.fieldName") === "Doctor_Division1__c" &&
        $A.util.isEmpty(field.get("v.value"))
      ) {
                showValidationError = true;
                if(vaildationFailReason != ''){
        if (vaildationFailReason != "") {
                    vaildationFailReason += "医生区分(职务)不能为空!";
                }else{
                    vaildationFailReason = "医生区分(职务)不能为空!";
                }
            }
            // PIPL update Yin Mingjie 21/02/2022 start
            if(field.get("v.fieldName") === 'Name'){
                agencyReport['name'] = field.get("v.value");
            }else if(field.get("v.fieldName") === 'Type__c'){
                agencyReport['type'] = field.get("v.value");
            }else if(field.get("v.fieldName") === 'Doctor_Division1__c'){
                agencyReport['doctorDivision1'] = field.get("v.value");
      if (field.get("v.fieldName") === "Name") {
        agencyReport["name"] = field.get("v.value");
      } else if (field.get("v.fieldName") === "Type__c") {
        agencyReport["type"] = field.get("v.value");
      } else if (field.get("v.fieldName") === "Doctor_Division1__c") {
        agencyReport["doctorDivision1"] = field.get("v.value");
            }
            // PIPL update Yin Mingjie 21/02/2022 end
        });
@@ -104,52 +109,65 @@
            component.find('recordEditForm').submit(eventFields);
            */
            var agencyHospitalid = component.get('v.hospitalLinkId');
      var agencyHospitalid = component.get("v.hospitalLinkId");
            //zhj MEBG新方案改造 2022-11-29 start
            debugger
            let hospitalName = '';
      debugger;
      let hospitalName = "";
            //调用后端searchAgencyDataId方法查询出医院下面所有客户人员dataid
            helper.CallBackAction(component,'searchAgencyDataId',{
      helper.CallBackAction(
        component,
        "searchAgencyDataId",
        {
                hospitalId : agencyHospitalid
            },function(data){
        },
        function (data) {
                if(data.getState() == "SUCCESS"){
                    var data = data.getReturnValue();
                    if(data.IsSuccess == true){
                        let agencyContactIds = ''
                        if(data.Message == '' && data.Data && data.Data.length > 0){
              let agencyContactIds = "";
              if (data.Message == "" && data.Data && data.Data.length > 0) {
                            hospitalName = data.Data[0].Agency_Hospital__r.Name;
                            for(var i=0;i<data.Data.length;i++){
                                if(data.Data[i].AWS_Data_Id__c)
                                    agencyContactIds += ','+data.Data[i].AWS_Data_Id__c;
                    agencyContactIds += "," + data.Data[i].AWS_Data_Id__c;
                            }
                            agencyContactIds = agencyContactIds.substring(1);
                            agencyReport['agencyContactIds'] = agencyContactIds;
                agencyReport["agencyContactIds"] = agencyContactIds;
                        }else{
                            agencyReport['agencyContactIds'] = agencyContactIds;
                agencyReport["agencyContactIds"] = agencyContactIds;
                        }
                        var arr = new Array();
                        arr.push(agencyReport);
                        var requestData = JSON.stringify(arr);
                        // helper.set_aws_url(component,data,agencyHospitalid);
                        var token = component.get('v.AWStoken');
                        var newUrl = component.get('v.AWSinsert') + 'V2';
              var token = component.get("v.AWStoken");
              var newUrl = component.get("v.AWSinsert") + "V2";
                        
                        component.set('v.login',true);
                        helper.insert_agencycontact(component,token,newUrl,requestData,agencyHospitalid,helper,hospitalName);
              component.set("v.loginEdit", true);
              helper.insert_agencycontact(
                component,
                token,
                newUrl,
                requestData,
                agencyHospitalid,
                helper,
                hospitalName
              );
                    }else{
                        helper.ShowToast({
                            "message" : data.message,
                            "type" : "error"
                message: data.message,
                type: "error"
                        });
                    }
                }else{
                    helper.ShowToast({
                        "message" : 'searchAgency失败',
                        "type" : "error"
              message: "searchAgency失败",
              type: "error"
                    });
                }
            })
        }
      );
            //zhj MEBG新方案改造 2022-11-29 end
            // var arr = new Array();
            // arr.push(agencyReport);
@@ -164,7 +182,7 @@
            // PIPL update Yin Mingjie 21/02/2022 end
        }else{
            component.find('OppMessage').setError(vaildationFailReason);
      component.find("OppMessage").setError(vaildationFailReason);
        }
        // var eventFields = event.getParam("fields");
        // eventFields["Agency_Hospital__c"] = component.get('v.hospitalLinkId');
@@ -177,13 +195,21 @@
    },
    
    yes_button : function(component, event, helper) {
        component.set('v.confirm_status', 1);
        helper.close_confirm(component, component.get('v.modal_confirm_title'), component.get('v.modal_confirm_text'));
    component.set("v.confirm_status", 1);
    helper.close_confirm(
      component,
      component.get("v.modal_confirm_title"),
      component.get("v.modal_confirm_text")
    );
    },
    no_button : function(component, event, helper) {
        component.set('v.confirm_status', 2);
        helper.close_confirm(component, component.get('v.modal_confirm_title'), component.get('v.modal_confirm_text'));
    component.set("v.confirm_status", 2);
    helper.close_confirm(
      component,
      component.get("v.modal_confirm_title"),
      component.get("v.modal_confirm_text")
    );
    },
    
    toggle_report : function(component, event, helper) {
@@ -250,7 +276,7 @@
    onDrop : function(component, event, helper) {
        event.stopPropagation();
        event.preventDefault();
        event.dataTransfer.dropEffect='copy';
    event.dataTransfer.dropEffect = "copy";
        var files=event.dataTransfer.files;
        helper.readFile(component,helper,files[0]);
    },
@@ -278,20 +304,22 @@
    },
    exportDate : function(component,event,helper){
        var stockData = component.get("v.reports_date");
        console.log('导出数据'+stockData);
    console.log("导出数据" + stockData);
        var csv = helper.convertArrayOfObjectsToCSV(component,stockData);
        if (csv == null){return;}
    if (csv == null) {
      return;
    }
        // ####--code for create a temp. <a> html tag [link tag] for download the CSV file--####     
        var universalBOM = "\uFEFF";
        var hiddenElement = document.createElement('a');
        hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(universalBOM+csv);
        hiddenElement.target = '_self'; //
        hiddenElement.download = 'ExportData.csv';  // CSV file Name* you can change it.[only name not .csv]
    var hiddenElement = document.createElement("a");
    hiddenElement.href =
      "data:text/csv;charset=utf-8," + encodeURI(universalBOM + csv);
    hiddenElement.target = "_self"; //
    hiddenElement.download = "ExportData.csv"; // CSV file Name* you can change it.[only name not .csv]
        document.body.appendChild(hiddenElement); // Required for FireFox browser
        hiddenElement.click(); // using click() js function to download csv file
        // helper.showExport(component);
    },
    export_condition : function(component,event,helper){
@@ -306,9 +334,9 @@
        // this.export(component,event,helper);
    },
    export : function(component,event,helper){
        console.log('进入export');
    console.log("进入export");
        var stockData = component.get("v.reports_date");
        console.log('查出的数据'+stockData);
    console.log("查出的数据" + stockData);
        // helper.showExportDate(component,stockData);
        // helper.showExport(component);
    },
@@ -322,5 +350,5 @@
    },
    exportErrorInfo: function(component,event,helper){
        helper.exportErrorInfoHelper(component);
    },
})
  }
});
force-app/main/default/aura/WeeklyReport/WeeklyReportHelper.js
Diff too large
force-app/main/default/classes/ArriveGoodsControllerTest.cls
@@ -1,184 +1,57 @@
@isTest
private class ArriveGoodsControllerTest {
    @isTest
    static void myUnitTest() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
        // User MyUser_Test = [select id,Contact.accountid from User WHERE ProfileId = :prof.Id and IsActive = true and UserPro_Type__c = 'ET' limit 1 ];
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
            Order1.Name = 'OCM_01_001';
            Order1.Order_status__c = '批准';
            Order1.Order_type__c = '订单';
            // Order1.Dealer_Info__c = myAccount1.id;
            Order1.Dealer_Info__c = myAccount1.id;
            Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
            Order1.Total_num__c = 3;
            Order1.OrderNumber_arrived__c =1;
            Order1.Delivery_detail_count__c=1;
            Order1.Order_ProType__c = 'ET';
            insert Order1;
            //订单明细
            //fahuo
            Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
            Orderdet.Name = 'OCM_01_00101';
            Orderdet.Consumable_order__c = Order1.Id;
            Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
            Orderdet.Consumable_Product__c = pro1.Id;
            Orderdet.Consumable_count__c = 40;
            insert Orderdet;
            //发货明细
            //到货正确信息
            Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
            Orderdet1.Name = 'OCM_01_001002';
            Orderdet1.Consumable_order_minor__c = Order1.Id;
            Orderdet1.Consumable_Product__c = pro1.Id;
            Orderdet1.Asset_Model_No__c = 'Test01';
            Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
            Orderdet1.TracingCode__c = 'BXJRA';
            //取消产品
            Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
            Orderdet2.Name = 'OCM_01_001003';
            Orderdet2.Consumable_order_minor__c = Order1.Id;
            Orderdet2.Consumable_Product__c = pro1.Id;
            Orderdet2.Asset_Model_No__c = 'Test01';
            //Orderdet2.Consumable_Arrived_order__c = Order1.Id;
            Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRB';
            Orderdet2.Cancellation_Date__c= Date.today();
            Orderdet2.TracingCode__c = 'BXJRB';
            //销售产品
            Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
            Orderdet3.Name = 'OCM_01_001004';
            Orderdet3.Consumable_order_minor__c = Order1.Id;
            Orderdet3.Consumable_Product__c = pro1.Id;
            Orderdet3.Asset_Model_No__c = 'Test01';
            Orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRC';
            Orderdet3.Used_date__c = Date.today();
            Orderdet3.Arrive_date__c = Date.today();
            Orderdet3.TracingCode__c = 'BXJRC';
            //Orderdet3.Box_Piece__c = '盒';
            //出库产品
            Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
            Orderdet4.Name = 'OCM_01_001005';
            Orderdet4.Consumable_order_minor__c = Order1.Id;
            Orderdet4.Consumable_Product__c = pro1.Id;
            Orderdet4.Asset_Model_No__c = 'Test01';
            Orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet4.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRD';
            Orderdet4.Send_Date__c =  Date.today();
            Orderdet4.Arrive_date__c = Date.today();
            Orderdet4.TracingCode__c = 'BXJRD';
            //已到货产品
            Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
            Orderdet5.Name = 'OCM_01_001006';
            Orderdet5.Consumable_order_minor__c = Order1.Id;
            Orderdet5.Consumable_Product__c = pro1.Id;
            Orderdet5.Asset_Model_No__c = 'Test01';
            Orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet5.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRE';
            Orderdet5.Arrive_date__c =  Date.today();
            Orderdet5.TracingCode__c = 'BXJRE';
            //发货明细
            //管理编码包含数字
            Consumable_order_details2__c Orderdet6 = new Consumable_order_details2__c();
            Orderdet6.Name = 'OCM_01_001002';
            Orderdet6.Consumable_order_minor__c = Order1.Id;
            Orderdet6.Consumable_Product__c = pro1.Id;
            Orderdet6.Asset_Model_No__c = 'Test01';
            Orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdet6.Bar_Code__c = '01049531702003111115120017181000105ZK250BX123';
            Orderdet6.TracingCode__c = 'BX123';
            //发错库 未到货
            Consumable_order_details2__c Orderdets8 = new Consumable_order_details2__c();
            Orderdets8.Name = 'OCM_01_001011';
            Orderdets8.Consumable_order_minor__c = Order1.Id;
            Orderdets8.Consumable_Product__c = pro1.Id;
            Orderdets8.Asset_Model_No__c = 'Test01';
            Orderdets8.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
            Orderdets8.Bar_Code__c = '01049531702003111115120017181000105ZK250BXsys';
            Orderdets8.Box_Piece__c = '盒';
            Orderdets8.TracingCode__c = 'BXsys';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5,Orderdet6,Orderdets8};
            List<Consumable_orderdetails__c> cod1 = [select Id from Consumable_orderdetails__c WHERE Consumable_order__c = :Order1.Id];
            System.assertEquals(1, cod1.size());
            PageReference page = new PageReference('/apex/ArriveGoods?Esetid=' + Order1.Id);
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
            System.Test.startTest();
            Controller.init();
            //排序
            Controller.barcode = '';
            Controller.SearchPro();
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXsys\n01049531702003111115120017181000105ZK250BXsun\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BX123';
            Controller.SearchPro();
            // System.assertEquals(3, controller.ConsumableorderdetailsRecordsdummy.size());    //tcm
            Controller.ArriveGoodsConfim();
            System.Test.stopTest();
        }
    }
    //选择等待入库,包括01 和241
    @isTest
    static void arriveWithID() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -187,13 +60,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='N3047730',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='N3047731',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'N3047730',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'N3047731',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
@@ -229,7 +126,9 @@
            insert Orderdet1;
            PageReference page = new PageReference('/apex/ArriveGoods?ESetid=' + Order1.Id);
      PageReference page = new PageReference(
        '/apex/ArriveGoods?ESetid=' + Order1.Id
      );
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
@@ -240,32 +139,67 @@
            // System.assertEquals(1, Controller.ConsumableorderdetailsRecords.size());
            // System.assertEquals(2, Controller.consumableInventory.size());
            Controller.ArriveGoodsConfim();
            List<Consumable_order_details2__c> ins = [SELECT Id,Name FROM Consumable_order_details2__c];
      List<Consumable_order_details2__c> ins = [
        SELECT Id, Name
        FROM Consumable_order_details2__c
      ];
            // System.assertEquals(3, ins.size());
            System.Test.stopTest();
        }
    }
    //产品直接入库,包括01 和241
    @isTest
    static  void arriveWithoutID() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -274,13 +208,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',ProductCode_Ext__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='N3047731',ProductCode_Ext__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test01',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='N3047731',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test01',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'N3047731',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
@@ -293,7 +251,15 @@
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRF\n241N30477311115120017181000105ZK250BXJRA\n241Test021115120017181000105ZK250\n01049531702003111115120017181000105ZK250';
            Controller.SearchPro();
            Controller.ArriveGoodsConfim();
            List<Consumable_order_details2__c> ins = [SELECT Id,Name FROM Consumable_order_details2__c WHERE Bar_Code__c in ('01049531702003111115120017181000105ZK250BXJRF','241N30477311115120017181000105ZK250BXJRA')];
      List<Consumable_order_details2__c> ins = [
        SELECT Id, Name
        FROM Consumable_order_details2__c
        WHERE
          Bar_Code__c IN (
            '01049531702003111115120017181000105ZK250BXJRF',
            '241N30477311115120017181000105ZK250BXJRA'
          )
      ];
            // System.assertEquals(2, ins.size());
            System.Test.stopTest();
        }
@@ -302,20 +268,54 @@
    @isTest
    static  void ArriveTest() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
        Oly_TriggerHandler.bypass('ConsumableAssetHander');
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -324,12 +324,32 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            insert new Product2__c[] {pro1};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert new List<Product2__c>{ pro1 };
            // Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
            // insert myAccount1;
            Consumable_order__c Order2 = new Consumable_order__c();
@@ -411,7 +431,6 @@
            Orderdet3.SerialLotNo__c = '5ZK';
            //Orderdet3.Box_Piece__c = '个';
            //出库产品
            Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
            Orderdet4.Name = 'OCM_01_001005';
@@ -442,9 +461,13 @@
            Orderdet5.Box_Piece__c = '盒';
            Orderdet5.TracingCode__c = 'BXJRE';
            Orderdet5.SerialLotNo__c = '5ZK';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5
      };
            ArriveGoodsController Controller = new ArriveGoodsController();
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
@@ -456,11 +479,12 @@
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BXsys';
            Controller.SearchPro();
            System.assertEquals('OCM_01_001002', controller.ConsumableorderdetailsRecords[0].esd.Name);
      System.assertEquals(
        'OCM_01_001002',
        controller.ConsumableorderdetailsRecords[0].esd.Name
      );
            // System.assertEquals(2, controller.ConsumableorderdetailsRecordserror.size());
            System.Test.stopTest();
        }
    }
@@ -468,21 +492,55 @@
    @isTest
    static  void ArriveTest1() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
        Oly_TriggerHandler.bypass('ConsumableAssetHander');
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -491,13 +549,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            // Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
            // insert myAccount1;
            Consumable_order__c Order2 = new Consumable_order__c();
@@ -577,7 +659,6 @@
            Orderdet3.TracingCode__c = 'BXJRC';
            Orderdet3.SerialLotNo__c = '5ZK';
            //出库产品
            Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
            Orderdet4.Name = 'OCM_01_001005';
@@ -606,9 +687,13 @@
            Orderdet5.Box_Piece__c = '盒';
            Orderdet5.TracingCode__c = 'BXJRE';
            Orderdet5.SerialLotNo__c = '5ZK';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5
      };
            ArriveGoodsController Controller = new ArriveGoodsController();
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
@@ -620,36 +705,67 @@
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BXsun\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BXsys';
            Controller.SearchPro();
            System.assertEquals('OCM_01_001002', controller.ConsumableorderdetailsRecords[0].esd.Name);
      System.assertEquals(
        'OCM_01_001002',
        controller.ConsumableorderdetailsRecords[0].esd.Name
      );
            // System.assertEquals(1, controller.ConsumableorderdetailsRecordserror.size());
            System.Test.stopTest();
        }
    }
    //返品
    @isTest
    static  void productReturn() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -658,13 +774,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
@@ -770,7 +910,14 @@
            Orderdet6.Box_Piece__c ='个';
            Orderdet6.TracingCode__c = 'BXJRF';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5,Orderdet6};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6
      };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=ReG');
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
@@ -795,7 +942,6 @@
            Controller.ToReturnGoodsPage();
            Controller.geterrorsize();
            System.Test.stopTest();
        }
    }
@@ -803,21 +949,54 @@
    @isTest
    static  void productReturn_new() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -826,13 +1005,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
            Order1.Name = 'OCM_01_001';
@@ -924,7 +1127,11 @@
            Orderdet5.Box_Piece__c ='个';
            Orderdet5.TracingCode__c = 'BXJRZ';
            Orderdet5.SerialLotNo__c = '5ZK';
            insert new Consumable_order_details2__c[] {Orderdet3,Orderdet4,Orderdet5};
      insert new List<Consumable_order_details2__c>{
        Orderdet3,
        Orderdet4,
        Orderdet5
      };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=ReG');
            System.Test.setCurrentPage(page);
@@ -942,7 +1149,7 @@
            controller.ShowGoodsofReturnList[0].esd.Rrturn_count__c =1;
            Controller.UpdateGoodsOfReturn();
            list<String> list1 = new list<String>();
      list<String> list1 = new List<String>();
            list1.add(Controller.barcode = '01234567898');
            Controller.inventoryEntryNoESetId(list1);
@@ -1005,7 +1212,6 @@
            list1.add(Controller.barcode = '0112345678901231106789012105625001234');
            Controller.inventoryEntryNoESetId(list1);
            System.Test.stopTest();
        }
    }
@@ -1013,21 +1219,54 @@
    @isTest
    static  void arrivedirect() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -1036,18 +1275,43 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='2344',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='82324',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = '2344',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = '82324',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //产品注册证
            Product_Register__c prc = new Product_Register__c(Name = '国械注进20162220210',
      Product_Register__c prc = new Product_Register__c(
        Name = '国械注进20162220210',
                                                              MedPrdClass__c = '3',
                                                              ValidFrom__c = date.newinstance(2018, 07, 22),
                                                              ValidTo__c = date.newinstance(2028, 07, 22),
        ValidFrom__c = date.newinstance(2018, 7, 22),
        ValidTo__c = date.newinstance(2028, 7, 22),
                                                              RegisterNoClass_Old__c = '6815',
                                                              RegisterNoClass_New__c = '6815',
                                                              RegisterNoStatus__c = '有效'
@@ -1136,8 +1400,15 @@
            //List<Product2> proList = [select name,Estimation_Entry_Possibility__c from Product2 where id = :prod01.Id];
            //System.assertEquals('○', proList[0].Estimation_Entry_Possibility__c);
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4};
            PageReference page = new PageReference('/apex/ArriveGoods?Esetid=' + Order1.Id);
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      PageReference page = new PageReference(
        '/apex/ArriveGoods?Esetid=' + Order1.Id
      );
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
@@ -1155,20 +1426,53 @@
    @isTest
    static  void arrivedirect241() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -1177,18 +1481,43 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //产品注册证
            Product_Register__c prc = new Product_Register__c(Name = '国械注进20162220210',
      Product_Register__c prc = new Product_Register__c(
        Name = '国械注进20162220210',
                                                              MedPrdClass__c = '3',
                                                              ValidFrom__c = date.newinstance(2018, 07, 22),
                                                              ValidTo__c = date.newinstance(2028, 07, 22),
        ValidFrom__c = date.newinstance(2018, 7, 22),
        ValidTo__c = date.newinstance(2028, 7, 22),
                                                              RegisterNoClass_Old__c = '6815',
                                                              RegisterNoClass_New__c = '6815',
                                                              RegisterNoStatus__c = '有效'
@@ -1480,8 +1809,23 @@
            //List<Product2> proList = [select name,Estimation_Entry_Possibility__c from Product2 where id = :prod01.Id];
            //System.assertEquals('○', proList[0].Estimation_Entry_Possibility__c);
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5,Orderdet6,Orderdet7,Orderdet8,Orderdet9,lose,lose1,lose2};
            PageReference page = new PageReference('/apex/ArriveGoods?Esetid=' + Order1.Id);
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdet7,
        Orderdet8,
        Orderdet9,
        lose,
        lose1,
        lose2
      };
      PageReference page = new PageReference(
        '/apex/ArriveGoods?Esetid=' + Order1.Id
      );
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
@@ -1496,26 +1840,58 @@
        }
    }
    //返品 明细2不存在的对应的到货订单明细
    @isTest
    static  void productReturn_oldbarcode() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -1524,13 +1900,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
@@ -1643,7 +2043,15 @@
            Orderdet7.Bar_Code__c = '01049531702003111115120017181000105ZK250BX333';
            Orderdet7.TracingCode__c = 'BXSYS';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5,Orderdet6,Orderdet7};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdet7
      };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=ReG');
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
@@ -1667,27 +2075,59 @@
            controller.getinventorysize();
            System.Test.stopTest();
        }
    }
    @isTest
    static  void barcodecheck() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -1695,16 +2135,40 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='2344',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='8232',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = '2344',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = '8232',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
            list<String> list1 = new list<String>();
      list<String> list1 = new List<String>();
            list1.clear();
            list1.add(Controller.barcode = '2413456250BBBBA');
            Controller.inventoryEntry(list1);
@@ -1765,80 +2229,141 @@
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123411789012175678901234250BBBBM');
      list1.add(
        Controller.barcode = '011234567890123411789012175678901234250BBBBM'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '01123456789012340138901217aaa8001234250BBBBN');
      list1.add(
        Controller.barcode = '01123456789012340138901217aaa8001234250BBBBN'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123456789012104567890250BBBBO');
      list1.add(
        Controller.barcode = '011234567890123456789012104567890250BBBBO'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '01123456789012341778910034567890250BBBBP');
      list1.add(
        Controller.barcode = '01123456789012341778910034567890250BBBBP'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123417aa910034567890250BBBBQ');
      list1.add(
        Controller.barcode = '011234567890123417aa910034567890250BBBBQ'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '01123456789012341778911134567890250BBBBR');
      list1.add(
        Controller.barcode = '01123456789012341778911134567890250BBBBR'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123417789121105678900000250BBBBS');
      list1.add(
        Controller.barcode = '011234567890123417789121105678900000250BBBBS'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123410789121105678900000250BBBBT');
      list1.add(
        Controller.barcode = '011234567890123410789121105678900000250BBBBT'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123411789012171a780012250BBBBU');
      list1.add(
        Controller.barcode = '011234567890123411789012171a780012250BBBBU'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '0112345678901234110890121012789000250BBBBV');
      list1.add(
        Controller.barcode = '0112345678901234110890121012789000250BBBBV'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '011234567890123417120506105678901234250BBBBW');
      list1.add(
        Controller.barcode = '011234567890123417120506105678901234250BBBBW'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '0112345678901234111202121712050212250BBBBX');
      list1.add(
        Controller.barcode = '0112345678901234111202121712050212250BBBBX'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '0112345678901234111202121712a50212250BBBBY');
      list1.add(
        Controller.barcode = '0112345678901234111202121712a50212250BBBBY'
      );
            Controller.inventoryEntry(list1);
            list1.clear();
            list1.add(Controller.barcode = '0112345678901234111202121012050212250BBBBZ');
      list1.add(
        Controller.barcode = '0112345678901234111202121012050212250BBBBZ'
      );
            Controller.inventoryEntry(list1);
        }
    }
    @isTest
    static  void barcodechkeck_2() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -1846,18 +2371,43 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='2344',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='82324',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = '2344',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = '82324',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //产品注册证
            Product_Register__c prc = new Product_Register__c(Name = '国械注进20162220210',
      Product_Register__c prc = new Product_Register__c(
        Name = '国械注进20162220210',
                                                              MedPrdClass__c = '3',
                                                              ValidFrom__c = date.newinstance(2018, 07, 22),
                                                              ValidTo__c = date.newinstance(2028, 07, 22),
        ValidFrom__c = date.newinstance(2018, 7, 22),
        ValidTo__c = date.newinstance(2028, 7, 22),
                                                              RegisterNoClass_Old__c = '6815',
                                                              RegisterNoClass_New__c = '6815',
                                                              RegisterNoStatus__c = '有效'
@@ -1888,13 +2438,22 @@
            ArriveGoodsController Controller = new ArriveGoodsController();
            //List<Product2> proList = [select name,Estimation_Entry_Possibility__c from Product2 where id = :prod01.Id];
            //System.assertEquals('○', proList[0].Estimation_Entry_Possibility__c);
            List<Product2__c> product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c
      List<Product2__c> product2InStore = [
        SELECT
          Id,
          Name,
          Name__c,
          Intra_Trade_List_RMB__c,
          Asset_Model_No__c,
          OT_CODE__c
                                                 FROM Product2__c
                                                 WHERE Estimation_Entry_Possibility__c = '○'
                                                                                         AND Pro2_Dealer_Object__c = true
                                                                                                                     AND OT_CODE__c ='test' ];
        WHERE
          Estimation_Entry_Possibility__c = '○'
          AND Pro2_Dealer_Object__c = TRUE
          AND OT_CODE__c = 'test'
      ];
            //System.assertEquals(1, product2InStore.size());
            list<String> list1 = new list<String>();
      list<String> list1 = new List<String>();
            list1.clear();
            list1.add(Controller.barcode = '2413456250BBBBA');
            Controller.inventoryEntryNoESetId(list1);
@@ -1973,27 +2532,33 @@
            list1.add(Controller.barcode = '241test111204121778900034567890250BBBBQ');
            Controller.inventoryEntryNoESetId(list1);
            list1.clear();
            list1.add(Controller.barcode = '0111234101204120118901231712a4001234250BBBBR');
      list1.add(
        Controller.barcode = '0111234101204120118901231712a4001234250BBBBR'
      );
            Controller.inventoryEntryNoESetId(list1);
            list1.clear();
            list1.add(Controller.barcode = '011123410120412011890123171204011234250BBBBS');
      list1.add(
        Controller.barcode = '011123410120412011890123171204011234250BBBBS'
      );
            Controller.inventoryEntryNoESetId(list1);
            list1.clear();
            list1.add(Controller.barcode = '011test10120412011890123171a04011234250BBBBT');
      list1.add(
        Controller.barcode = '011test10120412011890123171a04011234250BBBBT'
      );
            Controller.inventoryEntryNoESetId(list1);
            list1.clear();
            list1.add(Controller.barcode = '0111234101204120118901231012040112342222250BBBBU');
      list1.add(
        Controller.barcode = '0111234101204120118901231012040112342222250BBBBU'
      );
            Controller.inventoryEntryNoESetId(list1);
            list1.clear();
            list1.add(Controller.barcode = '011123410120412017120100250AAAAA');
            Controller.inventoryEntryNoESetId(list1);
        }
    }
@@ -2001,21 +2566,54 @@
    @isTest
    static  void addSaleOrderAuto() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2023,12 +2621,32 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            insert new Product2__c[] {pro1};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert new List<Product2__c>{ pro1 };
            // Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
            // insert myAccount1;
            Consumable_order__c Order2 = new Consumable_order__c();
@@ -2071,21 +2689,54 @@
    @isTest
    static  void methodTest1() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2093,13 +2744,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='N3047730',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='N3047731',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'N3047730',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'N3047731',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
@@ -2150,7 +2825,9 @@
            Orderdet2.SerialLotNo__c = '5ZK';
            insert Orderdet2;
            PageReference page = new PageReference('/apex/ArriveGoods?ESetid=' + Order1.Id);
      PageReference page = new PageReference(
        '/apex/ArriveGoods?ESetid=' + Order1.Id
      );
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
            //初始化测试
@@ -2161,32 +2838,67 @@
            // System.assertEquals(1, Controller.ConsumableorderdetailsRecords.size());
            // System.assertEquals(2, Controller.consumableInventory.size());
            Controller.ArriveGoodsConfim();
            List<Consumable_order_details2__c> ins = [SELECT Id,Name FROM Consumable_order_details2__c];
      List<Consumable_order_details2__c> ins = [
        SELECT Id, Name
        FROM Consumable_order_details2__c
      ];
            // System.assertEquals(3, ins.size());
            System.Test.stopTest();
        }
    }
    //返品
    @isTest
    static  void methodTest2() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2194,13 +2906,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Consumable_order__c Order1 = new Consumable_order__c();
            Order1.Name = 'OCM_01_001';
@@ -2292,7 +3028,12 @@
            Orderdet5.Box_Piece__c ='个';
            Orderdet5.TracingCode__c = 'BXJRZ';
            Orderdet5.SerialLotNo__c = '5ZK';
            insert new Consumable_order_details2__c[] {Orderdet1,Orderdet3,Orderdet4,Orderdet5};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet3,
        Orderdet4,
        Orderdet5
      };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=ReG');
            System.Test.setCurrentPage(page);
@@ -2303,14 +3044,17 @@
            //排序
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRN\n01049531702003111115120017181000105ZK250BXJRZ\n01049531702003111115120017181000105ZK250BXJRR';
            Controller.SearchPro();
            System.assertEquals(1, controller.ConsumableorderdetailsRecordserror.size());
      System.assertEquals(
        1,
        controller.ConsumableorderdetailsRecordserror.size()
      );
            // System.assertEquals(2, controller.ShowGoodsofReturnList.size());
            controller.ShowGoodsofReturnList[0].esd.Return_reason__c='多发';
            // controller.ShowGoodsofReturnList[1].esd.Return_reason__c='多发';
            // controller.ShowGoodsofReturnList[0].esd.Rrturn_count__c =1;
            Controller.UpdateGoodsOfReturn();
            list<String> list1 = new list<String>();
      list<String> list1 = new List<String>();
            list1.add(Controller.barcode = '01234567898');
            Controller.inventoryEntryNoESetId(list1);
@@ -2373,7 +3117,6 @@
            list1.add(Controller.barcode = '0112345678901231106789012105625001234');
            Controller.inventoryEntryNoESetId(list1);
            System.Test.stopTest();
        }
    }
@@ -2381,20 +3124,54 @@
    @isTest
    static  void ArrivejancodeTest() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
        Oly_TriggerHandler.bypass('ConsumableAssetHander');
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2403,12 +3180,32 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            insert new Product2__c[] {pro1};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert new List<Product2__c>{ pro1 };
            // Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
            // insert myAccount1;
            Consumable_order__c Order2 = new Consumable_order__c();
@@ -2490,7 +3287,6 @@
            Orderdet3.SerialLotNo__c = '5ZK';
            //Orderdet3.Box_Piece__c = '个';
            //出库产品
            Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
            Orderdet4.Name = 'OCM_01_001005';
@@ -2521,9 +3317,13 @@
            Orderdet5.Box_Piece__c = '盒';
            Orderdet5.TracingCode__c = 'BXJRE';
            Orderdet5.SerialLotNo__c = '5ZK';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5
      };
            ArriveGoodsController Controller = new ArriveGoodsController();
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
@@ -2535,11 +3335,12 @@
            Controller.barcode = '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BXsys';
            Controller.SearchPro();
            System.assertEquals('OCM_01_001002', controller.ConsumableorderdetailsRecords[0].esd.Name);
      System.assertEquals(
        'OCM_01_001002',
        controller.ConsumableorderdetailsRecords[0].esd.Name
      );
            // System.assertEquals(2, controller.ConsumableorderdetailsRecordserror.size());
            System.Test.stopTest();
        }
    }
@@ -2547,20 +3348,54 @@
    @isTest
    static  void ArriveotheragencyTest() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
        Oly_TriggerHandler.bypass('ConsumableAssetHander');
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2569,13 +3404,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            insert new Product2__c[] {pro1};
            Account myAccount3 = new Account(name='Testaccount003',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert new List<Product2__c>{ pro1 };
      Account myAccount3 = new Account(
        name = 'Testaccount003',
        Dealer_discount__c = 30,
        RecordTypeId = rectCo[0].Id
      );
            insert myAccount3;
            Consumable_order__c Order2 = new Consumable_order__c();
            Order2.Name = 'OCM_02_001';
@@ -2673,7 +3532,6 @@
            // Orderdet3.SerialLotNo__c = '5ZK';
            // //Orderdet3.Box_Piece__c = '个';
            // //出库产品
            // Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
            // Orderdet4.Name = 'OCM_01_001005';
@@ -2706,8 +3564,6 @@
            // Orderdet5.SerialLotNo__c = '5ZK';
            // insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5};
            ArriveGoodsController Controller = new ArriveGoodsController();
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
            System.Test.setCurrentPage(page);
@@ -2721,8 +3577,6 @@
            // System.assertEquals(2, controller.ConsumableorderdetailsRecordserror.size());
            System.Test.stopTest();
        }
    }
@@ -2730,21 +3584,54 @@
    @isTest
    static  void addInventoryDetails1() {
        // // TO DO: implement unit test
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
        Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
        Account myAccount2 = new Account(name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,AgentCode_Ext__c = '9999900');
        Account myAccount1 = new Account(name='Testaccount001',Dealer_discount__c =30,RecordTypeId = rectCo[0].Id);
        insert new account[]{myAccount1,myAccount2};
        Contact core = new Contact(email='jplumber@salesforce.com', firstname='Joe',lastname='Plumber',accountid=myAccount1.id);
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
        insert core;
        user MyUser_Test = New User(ContactId = core.id,Alias = 'newUser',Email='newuser@testorg.com',EmailEncodingKey='UTF-8', LastName='TestUser', LanguageLocaleKey='zh_CN',LocaleSidKey='zh_CN', ProfileId = prof.Id,TimeZoneSidKey='Asia/Shanghai', UserName='testUser@testorg.com',UserPro_Type__c = 'ET');
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
        System.runAs(new User(Id = UserInfo.getUserId())){
            insert MyUser_Test;
        }
@@ -2753,13 +3640,37 @@
        // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
        // insert new Product2[] {prod01,prod02};
        system.runAs(MyUser_Test){
            Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
            Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
            insert new Product2[] {prod01,prod02};
            Product2__c pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
            Product2__c pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
            insert new Product2__c[] {pro1, pro2};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
            //订单
            Oly_TriggerHandler.bypass('ConsumableAssetHander');
            Consumable_order__c Order1 = new Consumable_order__c();
@@ -2879,7 +3790,15 @@
            Orderdet7.Box_Piece__c ='个';
            Orderdet7.TracingCode__c = 'BXJQT';
            insert new Consumable_order_details2__c[] {Orderdet1, Orderdet2,Orderdet3,Orderdet4,Orderdet5,Orderdet6,Orderdet7};
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdet7
      };
            PageReference page = new PageReference('/apex/ArriveGoods?ArrType=ReG');
            System.Test.setCurrentPage(page);
            ArriveGoodsController Controller = new ArriveGoodsController();
@@ -2904,8 +3823,163 @@
            Controller.ToReturnGoodsPage();
            Controller.geterrorsize();
            System.Test.stopTest();
        }
    }
  @isTest
  static void makeRecordsVieweTest() {
    Integer count = 1001;
    List<ArriveGoodsController.ConsumableorderdetailsInfo> conList = new List<ArriveGoodsController.ConsumableorderdetailsInfo>();
    for (Integer i = 0; i < 1001; i++) {
      conList.add(new ArriveGoodsController.ConsumableorderdetailsInfo());
    }
    ArriveGoodsController arr = new ArriveGoodsController();
    arr.makeRecordsView(conList);
    ArriveGoodsController arr1 = new ArriveGoodsController('', '');
  }
  @isTest
  static void compareToTest() {
    ArriveGoodsController.ConsumableorderdetailsInfo c1 = new ArriveGoodsController.ConsumableorderdetailsInfo();
    ArriveGoodsController.ConsumableorderdetailsInfo c2 = new ArriveGoodsController.ConsumableorderdetailsInfo();
    c1.compareTo(c2);
  }
  @isTest
  static void searchProTest1() {
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
    if (rectCo.size() == 0) {
      return;
    }
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
    insert core;
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
    System.runAs(new User(Id = UserInfo.getUserId())) {
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'N3047730',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'N3047731',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      Order1.Dealer_Info__c = myAccount1.id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = Order1.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = pro1.Id;
      Orderdet.Consumable_count__c = 4;
      insert Orderdet;
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
      Orderdet1.Name = 'OCM_01_001001';
      Orderdet1.Consumable_order_minor__c = Order1.Id;
      Orderdet1.Consumable_Product__c = pro1.Id;
      Orderdet1.Asset_Model_No__c = 'Test01';
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRF';
      Orderdet1.Cancellation_Date__c = null;
      Orderdet1.TracingCode__c = 'BXJRF';
      Orderdet1.SerialLotNo__c = '5ZK';
      insert Orderdet1;
      System.debug('Orderdet1:' + Orderdet1);
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001001';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Test01';
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet2.Bar_Code__c = '01049531702003111115120017181234105ZK250BXJRF';
      Orderdet1.Cancellation_Date__c = null;
      Orderdet2.TracingCode__c = 'BXJRF';
      Orderdet2.SerialLotNo__c = '5ZK';
      insert Orderdet2;
      PageReference page = new PageReference('/apex/ArriveGoods?ArrType=Arr');
      System.Test.setCurrentPage(page);
      ArriveGoodsController Controller = new ArriveGoodsController();
      System.Test.startTest();
      Controller.init();
      Controller.barcode = '01049531702003111115120017181000105ZK250BXJRF';
      Controller.SearchPro();
      Controller.ArriveGoodsConfim();
      List<Consumable_order_details2__c> ins = [
        SELECT Id, Name
        FROM Consumable_order_details2__c
      ];
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/ArriveGoodsControllerTestV2.cls
New file
@@ -0,0 +1,234 @@
@isTest
public class ArriveGoodsControllerTestV2 {
  @isTest
  static void myUnitTest() {
    // // TO DO: implement unit test
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
    if (rectCo.size() == 0) {
      return;
    }
    // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
    insert core;
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
    System.runAs(new User(Id = UserInfo.getUserId())) {
      insert MyUser_Test;
    }
    // User MyUser_Test = [select id,Contact.accountid from User WHERE ProfileId = :prof.Id and IsActive = true and UserPro_Type__c = 'ET' limit 1 ];
    // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // insert new Product2[] {prod01,prod02};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      // Order1.Dealer_Info__c = myAccount1.id;
      Order1.Dealer_Info__c = myAccount1.id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Total_num__c = 3;
      Order1.OrderNumber_arrived__c = 1;
      Order1.Delivery_detail_count__c = 1;
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      //订单明细
      //fahuo
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = Order1.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = pro1.Id;
      Orderdet.Consumable_count__c = 40;
      insert Orderdet;
      //发货明细
      //到货正确信息
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
      Orderdet1.Name = 'OCM_01_001002';
      Orderdet1.Consumable_order_minor__c = Order1.Id;
      Orderdet1.Consumable_Product__c = pro1.Id;
      Orderdet1.Asset_Model_No__c = 'Test01';
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
      Orderdet1.TracingCode__c = 'BXJRA';
      //取消产品
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001003';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Test01';
      //Orderdet2.Consumable_Arrived_order__c = Order1.Id;
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRB';
      Orderdet2.Cancellation_Date__c = Date.today();
      Orderdet2.TracingCode__c = 'BXJRB';
      //销售产品
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
      Orderdet3.Name = 'OCM_01_001004';
      Orderdet3.Consumable_order_minor__c = Order1.Id;
      Orderdet3.Consumable_Product__c = pro1.Id;
      Orderdet3.Asset_Model_No__c = 'Test01';
      Orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRC';
      Orderdet3.Used_date__c = Date.today();
      Orderdet3.Arrive_date__c = Date.today();
      Orderdet3.TracingCode__c = 'BXJRC';
      //Orderdet3.Box_Piece__c = '盒';
      //出库产品
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
      Orderdet4.Name = 'OCM_01_001005';
      Orderdet4.Consumable_order_minor__c = Order1.Id;
      Orderdet4.Consumable_Product__c = pro1.Id;
      Orderdet4.Asset_Model_No__c = 'Test01';
      Orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet4.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRD';
      Orderdet4.Send_Date__c = Date.today();
      Orderdet4.Arrive_date__c = Date.today();
      Orderdet4.TracingCode__c = 'BXJRD';
      //已到货产品
      Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
      Orderdet5.Name = 'OCM_01_001006';
      Orderdet5.Consumable_order_minor__c = Order1.Id;
      Orderdet5.Consumable_Product__c = pro1.Id;
      Orderdet5.Asset_Model_No__c = 'Test01';
      Orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet5.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRE';
      Orderdet5.Arrive_date__c = Date.today();
      Orderdet5.TracingCode__c = 'BXJRE';
      //发货明细
      //管理编码包含数字
      Consumable_order_details2__c Orderdet6 = new Consumable_order_details2__c();
      Orderdet6.Name = 'OCM_01_001002';
      Orderdet6.Consumable_order_minor__c = Order1.Id;
      Orderdet6.Consumable_Product__c = pro1.Id;
      Orderdet6.Asset_Model_No__c = 'Test01';
      Orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet6.Bar_Code__c = '01049531702003111115120017181000105ZK250BX123';
      Orderdet6.TracingCode__c = 'BX123';
      //发错库 未到货
      Consumable_order_details2__c Orderdets8 = new Consumable_order_details2__c();
      Orderdets8.Name = 'OCM_01_001011';
      Orderdets8.Consumable_order_minor__c = Order1.Id;
      Orderdets8.Consumable_Product__c = pro1.Id;
      Orderdets8.Asset_Model_No__c = 'Test01';
      Orderdets8.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdets8.Bar_Code__c = '01049531702003111115120017181000105ZK250BXsys';
      Orderdets8.Box_Piece__c = '盒';
      Orderdets8.TracingCode__c = 'BXsys';
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdets8
      };
      List<Consumable_orderdetails__c> cod1 = [
        SELECT Id
        FROM Consumable_orderdetails__c
        WHERE Consumable_order__c = :Order1.Id
      ];
      System.assertEquals(1, cod1.size());
      PageReference page = new PageReference(
        '/apex/ArriveGoods?Esetid=' + Order1.Id
      );
      System.Test.setCurrentPage(page);
      ArriveGoodsController Controller = new ArriveGoodsController();
      //初始化测试
      System.Test.startTest();
      Controller.init();
      //排序
      Controller.barcode = '';
      Controller.SearchPro();
      Controller.barcode = '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXsys\n01049531702003111115120017181000105ZK250BXsun\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BX123';
      Controller.SearchPro();
      // System.assertEquals(3, controller.ConsumableorderdetailsRecordsdummy.size());    //tcm
      Controller.ArriveGoodsConfim();
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/ArriveGoodsControllerTestV2.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>58.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/AssetHandler.cls
@@ -1,12 +1,14 @@
public without sharing class AssetHandler extends Oly_TriggerHandler {
    public static Map<String , List<Rental_Apply_Equipment_Set_Detail__c>> queueRaesdMap;
    private Map<Id, Asset> newMap;
    private Map<Id, Asset> oldMap;
    private List<Asset> newList;
    private List<Asset> oldList;
    @TestVisible private static Set<String> testTargetDepts;
    @TestVisible private static Id Account_Asset_Id;
  private static final Map<String, Schema.RecordTypeInfo> DEVELOPERNAMEMAP = Schema.SObjectType.Asset.getRecordTypeInfosByDeveloperName(); // 20230306 ljh add
  @TestVisible
  private static Set<String> testTargetDepts;
  @TestVisible
  private static Id Account_Asset_Id;
     public static Boolean disabled = false;
    public AssetHandler() {
@@ -14,6 +16,8 @@
        this.oldMap = (Map<Id, Asset>) Trigger.oldMap;
        this.newList = (List<Asset>) Trigger.new;
        this.oldList = (List<Asset>) Trigger.old;
    Integer i = 0;
    }
    protected override void beforeInsert() {
@@ -23,6 +27,8 @@
        //第一次不加变更的时候不知道第一次是多少
        updateChangeQuantityReason();
    workflowCode();
    }
    protected override void beforeUpdate() {
        if(!disabled){
@@ -32,12 +38,17 @@
            updateChangeQuantityReason();
      // 20230309 gzw 优化 注释代码
            // 虚拟维修保修合同保修开始结束日期更新
            updateMaintenance_Contract_Asset();
      // updateMaintenance_Contract_Asset();
      // 20230309 gzw 优化 注释代码
            updateRentalCount();
        }
        
      workflowCode();
    }
    }
    protected override void afterInsert() {
@@ -63,19 +74,504 @@
            updateMaintenance_Contract_Asset();
        }
    }
  //20230309 sx 保有设备workflow代码化 start
  private void workflowCode() {
    /*List<Id> accIds = new List<Id>();
        List<Id> productIds = new List<Id>();
        List<Id> hospitalIds = new List<Id>();
        for(Asset nObj : newList) {
            accIds.add(nObj.Account.Id);
            productIds.add(nObj.Product2.Id);
            hospitalIds.add(nObj.Hospital__c);
        }
        //查找客户List
        Map<Id, Account> accMap = new Map<Id, Account>([SELECT Id, Name, Management_Code__c from Account where Id in :accIds]);
        Map<Id, Product2> productMap = new Map<Id, Product2>([SELECT Id, Name, RecordTypeId, RecordType.Name, Serial_Lot_No__c ,ProductCode  from Product2 where Id in :productIds]);
        Map<Id, Account> hosMap = new Map<Id, Account>([SELECT Id, Name, RecordType.Name  from Account where id in :hospitalIds]);
        Map<Id, Account> acc_assMap = new Map<Id, Account>();
        Map<Id, Product2> pro_proMap = new Map<Id, Product2>();
        Map<Id, Account> hos_assMap = new Map<Id, Account>();
        for(Asset nObj : newList){
            if(accMap.containsKey(nObj.Account.Id)) {
                acc_assMap.put(nObj.Id, accMap.get(nObj.Account.Id));
            }
            if(productMap.containsKey(nObj.Product2.Id)) {
                pro_proMap.put(nObj.Id, productMap.get(nObj.Product2.Id));
            }
            if(hosMap.containsKey(nObj.Hospital__c)) {
                hos_assMap.put(nObj.Id, hosMap.get(nObj.Id));
            }
        }*/
    Date today = Date.today();
    for (Asset nObj : newList) {
      //保有设备HPID文本化
      nObj.Asset_Year_Txt__c = nObj.Asset_Year__c;
      nObj.HP_ID_Text__c = nObj.HP_Id__c;
      nObj.Gurantee_End_day1__c = nObj.Gurantee_End_day__c;
      //覆盖设备的可选对象文本化
      if (
        Trigger.isInsert ||
        (Trigger.isUpdate &&
        nObj.Posting_Date__c != oldMap.get(nObj.Id).Posting_Date__c)
      ) {
        if (
          String.isBlank(nObj.IF_Coverage_Target_Asset__c) ||
          '0'.equals(nObj.IF_Coverage_Target_Asset__c)
        ) {
          nObj.IF_Coverage_Target_Asset__c =
            nObj.IF_Coverage_Target_Asset_FF__c + '';
        }
        if (
          nObj.IF_Coverage_Target_Asset_FF__c == 3 &&
          nObj.FY23_Asset_Age__c == null
        ) {
          nObj.FY23_Asset_Age__c = 0;
        }
      }
      //市场对应录入时间自动录入
      if (
        (Trigger.isInsert && nObj.Market_Product_Category__c != null) ||
        (Trigger.isUpdate &&
        nObj.Market_Product_Category__c !=
        oldMap.get(nObj.Id).Market_Product_Category__c &&
        nObj.Market_Product_Category__c != null)
      ) {
        nObj.Marketing_Input_Date__c = today;
      }
      /*//待报废变更为使用中
            if(nObj.RecordType.Name == '备品'
                && nObj.Manage_type__c == '个体管理'
                && nObj.Quantity > 0 && nObj.Status == '待报废'
                && ( (nObj.Abandoned_RealThing__c == null && nObj.Abandoned_Inventory__c == null) || (nObj.Abandoned_RealThing__c + nObj.Abandoned_Inventory__c) == 0)
                && acc_assMap.get(nObj.Id).Management_Code__c != System.Label.Account_Asset_FJZ) {
                nObj.Status = '使用中';
                nObj.Tobe_Discarded_Date__c = null;
            }*/
      /*//AssetMarkUpdate
            if(Trigger.isUpdate && nObj.IF_Information_From__c == false && nObj.AssetMark__c == null) {
                if(pro_proMap.containsKey(nObj.Id)){
                    if(pro_proMap.get(nObj.Id).RecordType.Name == '竞品-主机' ) {
                        nObj.AssetMark__c = '竞品主机';
                    }else if(pro_proMap.get(nObj.Id).RecordType.Name == '竞品-耗材') {
                        nObj.AssetMark__c = '竞品耗材';
                    }else if(pro_proMap.get(nObj.Id).Serial_Lot_No__c == 'S/N tracing') {
                        nObj.AssetMark__c = '主机';
                    }
                }
                else {
                    nObj.AssetMark__c = '耗材';
                }
            }*/
      /*//AssetName=ProductName
            if(nObj.Name.equals('*') || (nObj.Product2.Id != null && nObj.Product2 != oldMap.get(nObj.Id).Product2)) {
                nObj.Name = pro_proMap.get(nObj.Id).Name;
            }*/
      //AssetTextCopy
      if (
        Trigger.isInsert ||
        (Trigger.isUpdate && nObj.Product2 != oldMap.get(nObj.Id).Product2)
      ) {
        nObj.BSSCategory_Text__c = nObj.BSSCategory__c;
        nObj.Brand_Name_Text__c = nObj.Brand_Name__c;
        nObj.Category2_Text__c = nObj.Category2__c;
        nObj.Category3_Text__c = nObj.Category3__c;
        nObj.Category4_Text__c = nObj.Category4__c;
        nObj.Category5_Text__c = nObj.Category5__c;
      }
      //CIC安装状态确认日
      if (
        nObj.CIC_call_back_check__c && nObj.CIC_call_back_confirm_day__c == null
      ) {
        nObj.CIC_call_back_confirm_day__c = today;
      }
      //Equipment_Last_confirmed_day
      if (
        (Trigger.isInsert &&
        (nObj.Status != null ||
        nObj.Installation_Site__c != null ||
        nObj.Final_Examination_Date__c != null ||
        nObj.Hospital_Manage_Number__c != null)) ||
        (Trigger.isUpdate &&
        (nObj.Status != oldMap.get(nObj.Id).Status ||
        nObj.Installation_Site__c != oldMap.get(nObj.Id).Installation_Site__c ||
        nObj.Final_Examination_Date__c !=
        oldMap.get(nObj.Id).Final_Examination_Date__c ||
        nObj.Hospital_Manage_Number__c !=
        oldMap.get(nObj.Id).Hospital_Manage_Number__c))
      ) {
        nObj.Equipment_Last_checking_day__c = today;
      }
      /*//Product_Code+Serial_No
            if(Trigger.isUpdate && nObj.IsCompetitorProduct == false && nObj.Manage_type__c != '数量管理' && nObj.AssetMark__c != '耗材' && nObj.Loaner_accsessary__c != true && nObj.unknow_serial_NO_product__c != false) {
                if(nObj.Product2.Id == null) {
                    nObj.Product_Serial_No__c = nObj.Id;
                }else {
                    nObj.Product_Serial_No__c = pro_proMap.get(nObj.Id).ProductCode + ' ' + nObj.SerialNumber;
                    if(nObj.Delete_Flag__c){
                        nObj.Product_Serial_No__c += ':' + acc_assMap.get(nObj.Id).Management_Code__c;
                    }
                }
            }*/
      //Product_Code+Serial_No Clear
      if (
        (Trigger.isInsert && nObj.IsCompetitorProduct) ||
        (Trigger.isUpdate &&
        nObj.IsCompetitorProduct &&
        !oldMap.get(nObj.Id).IsCompetitorProduct)
      ) {
        nObj.Product_Serial_No__c = '';
      }
      /*//Product_Code+Serial_No+Salesdepartment
            if(Trigger.isUpdate && nObj.IsCompetitorProduct == false && nObj.Manage_type__c == '数量管理' && nObj.AssetMark__c == '耗材' && nObj.Loaner_accsessary__c == true && nObj.unknow_serial_NO_product__c == false) {
                if(nObj.Product2.Id == null) {
                    nObj.Product_Serial_No__c = nObj.Id;
                }else {
                    nObj.Product_Serial_No__c = pro_proMap.get(nObj.Id).ProductCode + ' ' + nObj.SerialNumber + ':' + nObj.Salesdepartment__c.subString(0,nObj.Salesdepartment__c.indexOf(':'));
                    if(nObj.Delete_Flag__c){
                        nObj.Product_Serial_No__c += ':' + acc_assMap.get(nObj.Id).Management_Code__c;
                    }
                }
            }*/
      /*//Product_Code+Serial_No UnkownSerial
            if(Trigger.isUpdate && nObj.unknow_serial_NO_product__c == true) {
                nObj.SerialNumber = nObj.serial_past__c;
                if(nObj.Product2.Id == null) {
                    nObj.Product_Serial_No__c = nObj.Id;
                }else {
                    nObj.Product_Serial_No__c = pro_proMap.get(nObj.Id).ProductCode + ':' + nObj.serial_past__c;
                    if(nObj.Delete_Flag__c){
                        nObj.Product_Serial_No__c += ':' + acc_assMap.get(nObj.Id).Management_Code__c;
                    }
                }
            }*/
      //更新备品资产管理负责本部选项
      if (
        (Trigger.isInsert && nObj.Internal_demo_incharge_demo__c != null) ||
        (Trigger.isUpdate &&
        nObj.Internal_demo_incharge_demo__c !=
        oldMap.get(nObj.Id).Internal_demo_incharge_demo__c)
      ) {
        nObj.Internal_demo_incharge_demo_text__c = nObj.Internal_demo_incharge_demo__c;
      }
      /*//自动更新资产所属(医院资产)
            if(Trigger.isUpdate && nObj.RecordType.Name == '医院保有设备' && hos_assMap.containskey(nObj.Id) && hos_assMap.get(nObj.Id).RecordType.Name == '病院' && acc_assMap.get(nObj.Id).Id == '00110000015Bx0h' ) {
                nObj.Asset_Owner__c = '医院资产';
            }*/
      /*//自动更新资产所属(奥林巴斯)
            if(nObj.RecordType.Name == '医院保有设备' || (acc_assMap.containskey(nObj.Id) && acc_assMap.get(nObj.Id).Id == '00110000015Bx0h')) {
                nObj.Asset_Owner__c = '奥林巴斯';
            }*/
      /*//自动更新资产所属(经销商资产)
            if(nObj.RecordType.Name == '医院保有设备' && (acc_assMap.containskey(nObj.Id) && hos_assMap.get(nObj.Id).RecordType.Name == '販売店')) {
                nObj.Asset_Owner__c = '经销商资产';
            }*/
      //手动创建的耗材信息修改
      if (
        nObj.RecordTypeId == '01210000000kOPM' &&
        nObj.Information_From__c == '手动输入' &&
        nObj.AssetMark__c == '耗材'
      ) {
        nObj.Guarantee_period_for_products__c = nObj.Posting_Date__c;
        nObj.InstallDate = nObj.Posting_Date__c;
      }
      //出货日自动赋值
      if (Trigger.isInsert && nObj.Information_From__c == '手动输入') {
        nObj.Posting_Date__c = Date.newInstance(1900, 1, 1);
      }
      //新逻辑保修期限对应
      if (nObj.New_logic_data__c) {
        nObj.Guarantee_period_for_products__c = nObj.Guarantee_period_formula__c;
      }
      //成本中心更新编码Update
      if (
        (Trigger.isInsert && nObj.Internal_cost_center_cd__c != null) ||
        (Trigger.isUpdate &&
        nObj.Internal_cost_center_cd__c !=
        oldMap.get(nObj.Id).Internal_cost_center_cd__c)
      ) {
        nObj.Internal_demo_incharge_demo_text__c = nObj.Internal_cost_center_formula__c;
      }
      //成本中心更新选项Update
      if (
        (Trigger.isInsert && nObj.Internal_cost_center__c != null) ||
        (Trigger.isUpdate &&
        nObj.Internal_cost_center__c !=
        oldMap.get(nObj.Id).Internal_cost_center__c)
      ) {
        nObj.Internal_cost_center_text__c = nObj.Internal_cost_center__c;
      }
      //待报废日登录
      if (
        Trigger.isUpdate &&
        nObj.Fixture_Status__c != oldMap.get(nObj.Id).Fixture_Status__c &&
        nObj.Fixture_Status__c != '废弃' &&
        (nObj.Abandoned_RealThing__c > 0 ||
        nObj.Abandoned_Inventory__c > 0) &&
        nObj.Manage_type__c == '个体管理'
      ) {
        nObj.Status = '待报废';
        nObj.Tobe_Discarded_Date__c = today;
      }
      //退货转备品DEL置FALSE
      if (
        Trigger.isUpdate &&
        ((nObj.RecordType != oldMap.get(nObj.Id).RecordType &&
        nObj.RecordTypeId == '01210000000kOPR') ||
        (nObj.AccountId != oldMap.get(nObj.Id).AccountId &&
        nObj.AccountId == '0011000000VAiwz')) &&
        nObj.Delete_Flag__c
      ) {
        nObj.Delete_Flag__c = false;
      }
      //追溯设备耗材Mark更新
      if (
        '追溯系统'.equals(nObj.Information_From__c) &&
        String.isBlank(nObj.AssetMark__c)
      ) {
        nObj.AssetMark__c = '耗材';
      }
      //納入商品状態変更(使用中)
      if (
        (Trigger.isInsert && nObj.Status == '使用中') ||
        (Trigger.isUpdate &&
        nObj.Status != oldMap.get(nObj.Id).Status &&
        nObj.Status == '使用中')
      ) {
        nObj.Status_Busy_Date__c = today;
      }
      //納入商品状態変更(廃棄)
      if (
        (Trigger.isInsert && nObj.Status == '廃棄') ||
        (Trigger.isUpdate &&
        nObj.Status != oldMap.get(nObj.Id).Status &&
        nObj.Status == '廃棄')
      ) {
        nObj.Discarded_Date__c = today;
        nObj.Quantity = 0;
        nObj.Abandoned_Inventory__c = null;
        nObj.Abandoned_RealThing__c = null;
        nObj.ChangeQuantityReason__c = '废弃';
      }
      //納入商品状態変更(不明)
      if (
        (Trigger.isInsert && nObj.Status == '不明') ||
        (Trigger.isUpdate &&
        nObj.Status != oldMap.get(nObj.Id).Status &&
        nObj.Status == '不明')
      ) {
        nObj.Indistinctness_Date__c = today;
      }
      //納入商品状態変更(未使用)
      if (
        (Trigger.isInsert && nObj.Status == '未使用') ||
        (Trigger.isUpdate &&
        nObj.Status != oldMap.get(nObj.Id).Status &&
        nObj.Status == '未使用')
      ) {
        nObj.Unused_Date__c = today;
      }
      /*//納品確認書の診療科コード_セット
            if(!(nObj.Product2.Id != null && nObj.IsCompetitorProduct == false && nObj.InstallDate != null) && nObj.Install_Account_Code__c == null) {
                nObj.Install_Account_Code__c = acc_assMap.get(nObj.Id).Management_Code__c;
                nObj.Install_Account_Name__c = acc_assMap.get(nObj.Id).Name;
                nObj.Install_Hospital_Name__c = hos_assMap.get(nObj.Id).Name;
                nObj.Install_Hospital_code__c = hos_assMap.get(nObj.Id).Management_Code__c;
            }*/
      //病院管理番号変更日
      if (
        (Trigger.isInsert && nObj.Hospital_Manage_Number__c != null) ||
        (Trigger.isUpdate &&
        nObj.Hospital_Manage_Number__c !=
        oldMap.get(nObj.Id).Hospital_Manage_Number__c)
      ) {
        nObj.Hospital_Manage_Number_Change_Date__c = today;
      }
      //更新-2次前点检日
      if (
        Trigger.isUpdate &&
        nObj.Final_Examination_Date__c !=
        oldMap.get(nObj.Id).Final_Examination_Date__c
      ) {
        nObj.X2_second_past_inspection__c = oldMap.get(nObj.Id)
          .Final_Examination_Date__c;
      }
      // 文本化 多年保修期至
      nObj.Extend_Gurantee_DateTo_Text__c = nObj.Extend_Gurantee_DateTo__c;
      // 保修天数工作流
      if (
        Trigger.isInsert ||
        (Trigger.isUpdate &&
        (nObj.Guarantee_period_for_products__c !=
        oldMap.get(nObj.Id).Guarantee_period_for_products__c ||
        nObj.InstallDate__c != oldMap.get(nObj.Id).InstallDate__c ||
        nObj.ChangeWarrantyStartDate__c !=
        oldMap.get(nObj.Id).ChangeWarrantyStartDate__c))
      ) {
        nObj.GuaranteePeriod__c = nObj.guarantee_period__c;
      }
      // 有安装日,更新状态到[使用中]
      if (
        (Trigger.isInsert && nObj.InstallDate != null) ||
        (Trigger.isUpdate &&
        nObj.InstallDate != null &&
        nObj.InstallDate != oldMap.get(nObj.Id).InstallDate)
      ) {
        nObj.Status_Busy_Date__c = today;
        nObj.Status = '使用中';
      }
      // 备品再退货转DEL置TRUE
      if (
        nObj.AccountId == '00110000015Bx0h' &&
        nObj.RecordTypeId == '01210000000kOPM' &&
        !nObj.Delete_Flag__c
      ) {
        nObj.Delete_Flag__c = true;
      }
      // 设定备品所属公司(上海)FromVBA
      if (
        (Trigger.isInsert && nObj.CompanyCodeOfEquipment_txt__c == '5112') ||
        (Trigger.isUpdate &&
        nObj.CompanyCodeOfEquipment_txt__c !=
        oldMap.get(nObj.Id).CompanyCodeOfEquipment_txt__c &&
        nObj.CompanyCodeOfEquipment_txt__c == '5112')
      ) {
        nObj.CompanyOfEquipment__c = '上海';
      }
      // 设定备品所属公司(沈阳)FromVBA
      if (
        (Trigger.isInsert && nObj.CompanyCodeOfEquipment_txt__c == '5114') ||
        (Trigger.isUpdate &&
        nObj.CompanyCodeOfEquipment_txt__c !=
        oldMap.get(nObj.Id).CompanyCodeOfEquipment_txt__c &&
        nObj.CompanyCodeOfEquipment_txt__c == '5114')
      ) {
        nObj.CompanyOfEquipment__c = '沈阳';
      }
      // 设定备品所属公司(北京)FromVBA
      if (
        (Trigger.isInsert && nObj.CompanyCodeOfEquipment_txt__c == '5111') ||
        (Trigger.isUpdate &&
        nObj.CompanyCodeOfEquipment_txt__c !=
        oldMap.get(nObj.Id).CompanyCodeOfEquipment_txt__c &&
        nObj.CompanyCodeOfEquipment_txt__c == '5111')
      ) {
        nObj.CompanyOfEquipment__c = '北京';
      }
      // 设定备品所属公司(广州)FromVBA
      if (
        (Trigger.isInsert && nObj.CompanyCodeOfEquipment_txt__c == '5113') ||
        (Trigger.isUpdate &&
        nObj.CompanyCodeOfEquipment_txt__c !=
        oldMap.get(nObj.Id).CompanyCodeOfEquipment_txt__c &&
        nObj.CompanyCodeOfEquipment_txt__c == '5113')
      ) {
        nObj.CompanyOfEquipment__c = '广州';
      }
    }
  }
  //20230309 sx 保有设备workflow代码化 end
    // 借出明细更新借出_分配_数(Sys)和已借出数(Sys)
    private void updateRentalCount() {
        Set<Id> idSet = new Set<Id>();
        for(Id assId : this.newMap.keySet()) {
            if(this.newMap.get(assId).AssetManageConfirm__c &&
                this.newMap.get(assId).Account_Management_Code__c != System.Label.Account_Asset_FJZ ) {
      if (
        this.newMap.get(assId).AssetManageConfirm__c &&
        this.newMap.get(assId).Account_Management_Code__c !=
        System.Label.Account_Asset_FJZ
      ) {
                idSet.add(assId);
                this.newMap.get(assId).Out_of_wh_Sys__c = 0;
                this.newMap.get(assId).Rental_Count_Sys__c = 0;
            }
        }
        if(!idSet.isEmpty()) {
            for (Rental_Apply_Equipment_Set_Detail__c raesd : [
      // 备品性能优化改修 20230312 by lc Start
      List<AggregateResult> raesdTempList2 = [
        SELECT COUNT(Id) num, Asset__c
        FROM Rental_Apply_Equipment_Set_Detail__c
        //备品发货报错对应 20230413 by lc Start
        //WHERE Detail_Finish__c = false
        WHERE
          Detail_Not_Finish_Text__c = TRUE
          //备品发货报错对应 20230413 by lc End
          AND Asset__c IN :idSet
          AND Shippment_loaner_time2__c != NULL
        GROUP BY Asset__c
      ];
      if (raesdTempList2 != null && raesdTempList2.size() > 0) {
        for (AggregateResult ar : raesdTempList2) {
          String assetId = String.valueOf(ar.get('Asset__c'));
          Integer tempNum = Integer.valueOf(ar.get('num'));
          this.newMap.get(assetId).Rental_Count_Sys__c += tempNum;
        }
      }
      List<AggregateResult> raesdTempList1 = [
        SELECT COUNT(Id) num, Asset__c
        FROM Rental_Apply_Equipment_Set_Detail__c
        //备品发货报错对应 20230413 by lc Start
        //WHERE Detail_Finish__c = false
        WHERE
          Detail_Not_Finish_Text__c = TRUE
          //备品发货报错对应 20230413 by lc End
          AND Asset__c IN :idSet
        GROUP BY Asset__c
      ];
      if (raesdTempList1 != null && raesdTempList1.size() > 0) {
        for (AggregateResult ar : raesdTempList1) {
          String assetId = String.valueOf(ar.get('Asset__c'));
          Integer tempNum = Integer.valueOf(ar.get('num'));
          this.newMap.get(assetId).Out_of_wh_Sys__c += tempNum;
          idSet.remove(assetId);
        }
      }
      /*for (Rental_Apply_Equipment_Set_Detail__c raesd : [
                SELECT Id, Shippment_loaner_time2__c, Asset__c
                FROM Rental_Apply_Equipment_Set_Detail__c
                WHERE Detail_Finish__c = false
@@ -86,14 +582,15 @@
                    this.newMap.get(raesd.Asset__c).Rental_Count_Sys__c += 1;
                }
                idSet.remove(raesd.Asset__c);
            }
            }*/
      // 备品性能优化改修 20230312 by lc End
            if(!idSet.isEmpty()) {
                // 没有字段可以完全准确地区分备品设备与耗材设备,只好把备品里没出现过的设备当成耗材来查
                for (Consum_Apply_Equipment_Set_Detail__c caesd : [
                 SELECT Id, Shippment_loaner_time2__c, Asset__c
                  FROM Consum_Apply_Equipment_Set_Detail__c
                    WHERE Detail_Finish__c = false
                    AND Asset__c IN :idSet
          WHERE Detail_Finish__c = FALSE AND Asset__c IN :idSet
                ]) {
                    this.newMap.get(caesd.Asset__c).Out_of_wh_Sys__c += 1;
                    if(caesd.Shippment_loaner_time2__c != null) {
@@ -101,7 +598,6 @@
                    }
                }
            }
        }
    }
    //多年保修 start
@@ -109,29 +605,47 @@
        StaticParameter.EscapeMaintenanceContractAfterUpdateTrigger = true;
        Set<id> AssetIDSet = new Set<id>();
        for(Asset tempAsset : newList){
            if(String.isNotBlank(tempAsset.warrantyType__c)){
      // 20230306 ljh update start
      Id Shipment = DEVELOPERNAMEMAP.get('Shipment').getRecordTypeId();
      // if(String.isNotBlank(tempAsset.warrantyType__c)){
      if (
        String.isNotBlank(tempAsset.warrantyType__c) &&
        Shipment != tempAsset.RecordTypeId
      ) {
        // 20230306 ljh update end
                AssetIDSet.add(tempAsset.id);
            }
        }
        if(AssetIDSet.size() > 0 ){
            list<Maintenance_Contract_Asset__c> MCAList =
            [select id,startDateGurantee__c,
             startDateGurantee_Text__c,endDateGurantee__c,
             endDateGurantee_Text__c,Return_Flag__c,ChangeAcc_flag__c,
             Maintenance_Price_Amount__c,Maintenance_Price_Amount_text__c,
             GuaranteePrice_Amount__c,GuaranteePrice_Amount_text__c
             from Maintenance_Contract_Asset__c
             where Asset__c in : AssetIDSet
             and Maintenance_Contract__r.RecordType.DeveloperName = 'VM_Contract'
      list<Maintenance_Contract_Asset__c> MCAList = [
        SELECT
          id,
          startDateGurantee__c,
          startDateGurantee_Text__c,
          endDateGurantee__c,
          endDateGurantee_Text__c,
          Return_Flag__c,
          ChangeAcc_flag__c,
          Maintenance_Price_Amount__c,
          Maintenance_Price_Amount_text__c,
          GuaranteePrice_Amount__c,
          GuaranteePrice_Amount_text__c
        FROM Maintenance_Contract_Asset__c
        WHERE
          Asset__c IN :AssetIDSet
          AND Maintenance_Contract__r.RecordType.DeveloperName = 'VM_Contract'
             ];
            if(MCAList.size() > 0){
                list<Maintenance_Contract_Asset__c> UpdateMcaList =
                new list<Maintenance_Contract_Asset__c> ();
        list<Maintenance_Contract_Asset__c> UpdateMcaList = new List<Maintenance_Contract_Asset__c>();
                for(Maintenance_Contract_Asset__c tempMCA : MCAList ){
                    if(tempMCA.startDateGurantee__c != tempMCA.startDateGurantee_Text__c
                    || tempMCA.endDateGurantee__c != tempMCA.endDateGurantee_Text__c
                    || tempMCA.Maintenance_Price_Amount__c != tempMCA.Maintenance_Price_Amount_Text__c
                    || tempMCA.GuaranteePrice_Amount__c != tempMCA.GuaranteePrice_Amount_text__c){
          if (
            tempMCA.startDateGurantee__c != tempMCA.startDateGurantee_Text__c ||
            tempMCA.endDateGurantee__c != tempMCA.endDateGurantee_Text__c ||
            tempMCA.Maintenance_Price_Amount__c !=
            tempMCA.Maintenance_Price_Amount_Text__c ||
            tempMCA.GuaranteePrice_Amount__c !=
            tempMCA.GuaranteePrice_Amount_text__c
          ) {
                        UpdateMcaList.add(tempMCA);
                    }
                }
@@ -159,14 +673,19 @@
            if (Trigger.isUpdate) {
                Asset oObj = oldMap.get(nObj.Id);
                if (oObj.Last_Reserve_RAES_Detail__c != null && nObj.Last_Reserve_RAES_Detail__c == null
                        && oObj.Last_Reserve_RAES_Detail_Flag__c == true) {
        if (
          oObj.Last_Reserve_RAES_Detail__c != null &&
          nObj.Last_Reserve_RAES_Detail__c == null &&
          oObj.Last_Reserve_RAES_Detail_Flag__c == true
        ) {
                    nObj.Pre_Reserve_RAES_Detail__c = oObj.Last_Reserve_RAES_Detail__c;
                }
                if (oObj.Last_Reserve_TAES_Detail__c != null && nObj.Last_Reserve_TAES_Detail__c == null
        if (
          oObj.Last_Reserve_TAES_Detail__c != null &&
          nObj.Last_Reserve_TAES_Detail__c == null
        ) {
                        // TODO 由于__r超20,字段建不出来
                        // && oObj.Last_Reserve_TAES_Detail_Flag__c == true
                ) {
                    nObj.Pre_Reserve_TAES_Detail__c = oObj.Last_Reserve_TAES_Detail__c;
                }
            }
@@ -174,13 +693,23 @@
            // 必ず最後で置く
            nObj.Fixture_Status2_text__c = nObj.Fixture_Status2__c;
            nObj.Fixture_Status3_text__c = nObj.Fixture_Status3__c;
            nObj.BTreeIndexKey__c = nObj.Asset_Owner__c
                                    + ':' + nObj.Asset_loaner_category__c
                                    + ':' + String.valueOf(nobj.Freeze_sign_Abandoned_Flag__c)
                                    + ':' + String.valueOf(nObj.Delete_Flag__c)
                                    + ':' + String.valueOf(nObj.AssetManageConfirm__c);
      nObj.BTreeIndexKey__c =
        nObj.Asset_Owner__c +
        ':' +
        nObj.Asset_loaner_category__c +
        ':' +
        String.valueOf(nobj.Freeze_sign_Abandoned_Flag__c) +
        ':' +
        String.valueOf(nObj.Delete_Flag__c) +
        ':' +
        String.valueOf(nObj.AssetManageConfirm__c);
            if (nObj.Status == FixtureUtil.assetStatusMap.get(FixtureUtil.AssetStatus.Dai_Fei_Qi.ordinal())) {
      if (
        nObj.Status ==
        FixtureUtil.assetStatusMap.get(
          FixtureUtil.AssetStatus.Dai_Fei_Qi.ordinal()
        )
      ) {
                nObj.Freeze_sign__c = false;
            }
            // gzw CHAN-CCR6MW  【委托】【保有设备】保有设备发货日逻辑 start
@@ -200,14 +729,25 @@
            if (Trigger.isUpdate) {
                oObj = oldMap.get(nObj.Id);
                oQuantity = oObj.Quantity == null ? '' : String.valueOf(oObj.Quantity);
                oAbandoned_Inventory = oObj.Abandoned_Inventory__c == null ? '' : String.valueOf(oObj.Abandoned_Inventory__c);
        oAbandoned_Inventory = oObj.Abandoned_Inventory__c == null
          ? ''
          : String.valueOf(oObj.Abandoned_Inventory__c);
            }
            String nQuantity = nObj.Quantity == null ? '' : String.valueOf(nObj.Quantity);
            String nAbandoned_Inventory = nObj.Abandoned_Inventory__c == null ? '' : String.valueOf(nObj.Abandoned_Inventory__c);
            if ((oQuantity != nQuantity && String.isNotBlank(nObj.ChangeQuantityReason__c)) || Trigger.isInsert) {
      String nQuantity = nObj.Quantity == null
        ? ''
        : String.valueOf(nObj.Quantity);
      String nAbandoned_Inventory = nObj.Abandoned_Inventory__c == null
        ? ''
        : String.valueOf(nObj.Abandoned_Inventory__c);
      if (
        (oQuantity != nQuantity &&
        String.isNotBlank(nObj.ChangeQuantityReason__c)) || Trigger.isInsert
      ) {
                String rs = nObj.ChangeQuantityReason__c;
                nObj.ChangeQuantityHistory__c = String.format(System.Label.ChangeQuantityHistory,
                         new String[]{oQuantity, nQuantity, rs});
        nObj.ChangeQuantityHistory__c = String.format(
          System.Label.ChangeQuantityHistory,
          new List<String>{ oQuantity, nQuantity, rs }
        );
                // before里面入立规则过不了改到
                // 已经改进 Must_Input_ChangeQuantityReason 的 valida before可以完成 ChangeQuantityReason__c = ''
                // nObj.ChangeQuantityReason__c = '';
@@ -215,8 +755,10 @@
            if (oAbandoned_Inventory != nAbandoned_Inventory || Trigger.isInsert) {
                String rs = nObj.Giveup_Return__c;
                nObj.ChangeAbandoned_InventoryHistory__c = String.format(System.Label.ChangeAbandoned_InventoryHistory,
                         new String[]{oAbandoned_Inventory, nAbandoned_Inventory, rs});
        nObj.ChangeAbandoned_InventoryHistory__c = String.format(
          System.Label.ChangeAbandoned_InventoryHistory,
          new List<String>{ oAbandoned_Inventory, nAbandoned_Inventory, rs }
        );
            }
        }
    }
@@ -227,8 +769,7 @@
       List<Asset> assList = new List<Asset>();
       for (Asset nObj : newList) {
           if (String.isBlank(nObj.ChangeQuantityReason__c) == false) {
               assList.add(new Asset(Id = nObj.Id,
                       ChangeQuantityReason__c = ''));
        assList.add(new Asset(Id = nObj.Id, ChangeQuantityReason__c = ''));
           }
       }
       if (!assList.isEmpty()) {
@@ -242,9 +783,7 @@
        List<Asset> assList = new List<Asset>();
        for (Asset nObj : newList) {
            if (String.isBlank(nObj.Giveup_Return__c) == false) {
                assList.add(new Asset(
                        Id = nObj.Id,
                        Giveup_Return__c = ''));
        assList.add(new Asset(Id = nObj.Id, Giveup_Return__c = ''));
            }
        }
        if (!assList.isEmpty()) {
@@ -262,7 +801,9 @@
        for (Integer i = 0; i < newList.size(); i++) {
            Asset nObj = newList[i];
            Asset oObj = oldList[i];
            if (oObj.Last_Reserve_RAES_Detail__c != nObj.Last_Reserve_RAES_Detail__c) {
      if (
        oObj.Last_Reserve_RAES_Detail__c != nObj.Last_Reserve_RAES_Detail__c
      ) {
                if (String.isNotBlank(oObj.Id)) {
                    aSetIdSet.add(oObj.Id);
                }
@@ -273,8 +814,13 @@
        }
        if (!aSetIdSet.isEmpty()) {
            List<Fixture_OneToOne_Link__c> oneToOneList = [
                    SELECT Id FROM Fixture_OneToOne_Link__c WHERE Main_Asset__c IN :aSetIdSet];
            if (!oneToOneList.isEmpty()) { update oneToOneList; }
        SELECT Id
        FROM Fixture_OneToOne_Link__c
        WHERE Main_Asset__c IN :aSetIdSet
      ];
      if (!oneToOneList.isEmpty()) {
        update oneToOneList;
      }
        }
    }
@@ -299,12 +845,13 @@
        String whkey = '';
        for (Asset nObj : newList) {
            //ToDo現在排队できるのは主体だけなので,今後个体管理の附属品も排队できるの場合があったらこのIFぶんを直す必要があります
            if (!(nObj.Loaner_accsessary__c == false
                    && nObj.Asset_Owner__c == 'Olympus'
                    && nObj.Equipment_Type__c != '检测用备品'
                    && nObj.Delete_Flag__c == False
                    && nObj.You_Xiao_Ku_Cun__c > 0
                    && nObj.Freeze_sign_Abandoned_Flag__c == False)
      if (
        !(nObj.Loaner_accsessary__c == false &&
        nObj.Asset_Owner__c == 'Olympus' &&
        nObj.Equipment_Type__c != '检测用备品' &&
        nObj.Delete_Flag__c == false &&
        nObj.You_Xiao_Ku_Cun__c > 0 &&
        nObj.Freeze_sign_Abandoned_Flag__c == false)
            ) {
                continue;
            }
@@ -325,11 +872,12 @@
                key += nObj.Product_category__c;
            }
            System.debug(LoggingLevel.INFO, '*** key: ' + key);
            //有新的Asset的时候 暂定分配
            // You_Xiao_Ku_Cun__c > 0 在上面已经做了判断
            if (Trigger.isInsert && String.isBlank(nObj.Last_Reserve_RAES_Detail__c)) {
      if (
        Trigger.isInsert && String.isBlank(nObj.Last_Reserve_RAES_Detail__c)
      ) {
                if (String.isBlank(nObj.Fixture_Model_No_F__c) == false) {
                    // modelNoAssetIdMap.put(nObj.Fixture_Model_No_F__c, nObj.Id);
                    if (modelNoAssetIdMap.containsKey(key) == false) {
@@ -349,22 +897,30 @@
            // You_Xiao_Ku_Cun__c > 0 在上面已经做了判断
            else {
                Asset oObj = oldMap.get(nObj.Id);
                if (nObj.Loaner_accsessary__c == false && String.isBlank(nObj.Last_Reserve_RAES_Detail__c)
                        && (nObj.Last_Reserve_RAES_Detail__c != oObj.Last_Reserve_RAES_Detail__c
                            || (nObj.Asset_Owner__c != oObj.Asset_Owner__c && nObj.Asset_Owner__c == 'Olympus')
        if (
          nObj.Loaner_accsessary__c == false &&
          String.isBlank(nObj.Last_Reserve_RAES_Detail__c) &&
          (nObj.Last_Reserve_RAES_Detail__c !=
          oObj.Last_Reserve_RAES_Detail__c ||
          (nObj.Asset_Owner__c != oObj.Asset_Owner__c &&
          nObj.Asset_Owner__c == 'Olympus') ||
                            //备品存放地 OLY_OCM-722 恢复存放地的条件
                            || (nObj.Internal_asset_location__c != oObj.Internal_asset_location__c)
          (nObj.Internal_asset_location__c !=
          oObj.Internal_asset_location__c) ||
                            //备品分类并且不是 检测用备品
                            || (nObj.Equipment_Type__c != oObj.Equipment_Type__c && nObj.Equipment_Type__c != '检测用备品')
          (nObj.Equipment_Type__c != oObj.Equipment_Type__c &&
          nObj.Equipment_Type__c != '检测用备品') ||
                            //销售本部
                            || (nObj.Salesdepartment__c != oObj.Salesdepartment__c)
          (nObj.Salesdepartment__c != oObj.Salesdepartment__c) ||
                            //产品分类(GI/SP)
                            || (nObj.Product_category__c != oObj.Product_category__c)
          (nObj.Product_category__c != oObj.Product_category__c) ||
                            //备品配套明细型号
                            || (nObj.Fixture_Model_No_F__c != oObj.Fixture_Model_No_F__c)
                            || (nObj.Delete_Flag__c != oObj.Delete_Flag__c && nObj.Delete_Flag__c == true)
                            || (nObj.Freeze_sign_Abandoned_Flag__c != oObj.Freeze_sign_Abandoned_Flag__c && nObj.Freeze_sign_Abandoned_Flag__c == false)
                        )
          (nObj.Fixture_Model_No_F__c != oObj.Fixture_Model_No_F__c) ||
          (nObj.Delete_Flag__c != oObj.Delete_Flag__c &&
          nObj.Delete_Flag__c == true) ||
          (nObj.Freeze_sign_Abandoned_Flag__c !=
          oObj.Freeze_sign_Abandoned_Flag__c &&
          nObj.Freeze_sign_Abandoned_Flag__c == false))
                ) {
                    if (String.isBlank(nObj.Fixture_Model_No_F__c) == false) {
                        if (modelNoAssetIdMap.containsKey(key) == false) {
@@ -381,30 +937,47 @@
        if (modelNoAssetIdMap.isEmpty()) {
            return;
        }
        System.debug(LoggingLevel.INFO, '*** raesdIdSet: ' + JSON.serialize(raesdIdSet));
    System.debug(
      LoggingLevel.INFO,
      '*** raesdIdSet: ' + JSON.serialize(raesdIdSet)
    );
        //modified by denny 2021-11-17
        List<String> keyList = new List<String>();
        keyList.addAll(modelNoAssetIdMap.keySet());
        System.debug(LoggingLevel.INFO, '*** keyList: ' + keyList);
       List<Rental_Apply_Sequence__c> targetSequence = [SELECT Id,Apply_Set_Detail__c,
    List<Rental_Apply_Sequence__c> targetSequence = [
      SELECT
        Id,
        Apply_Set_Detail__c,
                                                                Apply_Set_Detail_ExternalKey__c, 
                                                                Demo_Purpose2__c, Equipment_Type__c, ExternalKey__c,
        Demo_Purpose2__c,
        Equipment_Type__c,
        ExternalKey__c,
                                                                Fixture_Model_No__c,
                                                                Internal_asset_location__c, Invalid_Flag__c,
        Internal_asset_location__c,
        Invalid_Flag__c,
                                                                Product_category__c, 
                                                                Rental_Apply__c,Series_No__c,
                                                                Series_Unequal_Queue_Flag__c, Salesdepartment__c
        Rental_Apply__c,
        Series_No__c,
        Series_Unequal_Queue_Flag__c,
        Salesdepartment__c
                                                        FROM Rental_Apply_Sequence__c 
                                                        WHERE Series_No__c > 0 AND Invalid_Flag__c =false
      WHERE
        Series_No__c > 0
        AND Invalid_Flag__c = FALSE
                                                        AND Apply_Set_Detail__c NOT IN:raesdIdSet
                                                        AND ExternalKey__c IN:keyList
                                                        AND Apply_Set_Detail__r.Cancel_Select__c = false
                                                        ORDER BY Series_No__c ];
        AND Apply_Set_Detail__r.Cancel_Select__c = FALSE
      ORDER BY Series_No__c
    ];
        System.debug(LoggingLevel.INFO, '*** targetSequence: ' + targetSequence);
        Map<String,List<Rental_Apply_Sequence__c>> sequenceMap = new Map<String,List<Rental_Apply_Sequence__c>>();
        for(Rental_Apply_Sequence__c sequeuece:targetSequence){
            if(!sequenceMap.containsKey(sequeuece.Externalkey__c)){
                sequenceMap.put(sequeuece.Externalkey__c,new List<Rental_Apply_Sequence__c>());
        sequenceMap.put(
          sequeuece.Externalkey__c,
          new List<Rental_Apply_Sequence__c>()
        );
            }
            sequenceMap.get(sequeuece.Externalkey__c).add(sequeuece);
        }
@@ -412,7 +985,10 @@
        for(String key:sequenceMap.keySet()){
            for(Rental_Apply_Sequence__c sequeuece:sequenceMap.get(key)){
                if(!updateMap.containsKey(sequeuece.Apply_Set_Detail__c)){
                    System.debug(LoggingLevel.INFO, '*** modelNoAssetIdMap: ' + JSON.serialize(modelNoAssetIdMap));
          System.debug(
            LoggingLevel.INFO,
            '*** modelNoAssetIdMap: ' + JSON.serialize(modelNoAssetIdMap)
          );
                    if(modelNoAssetIdMap.containsKey(key)){
                        List<Id> assIdList = new List<Id>();
                        assIdList.addAll(modelNoAssetIdMap.get(key));
@@ -424,19 +1000,22 @@
                        raesd.Queue_Number__c = 0;      // 暂定分配
                        updateMap.put(raesd.Id,raesd);
                        modelNoAssetIdMap.get(key).remove(assIdbk);
                        if (modelNoAssetIdMap.get(key).isEmpty()) {
                            modelNoAssetIdMap.remove(key);
                        }
                        System.debug(LoggingLevel.INFO, '*** modelNoAssetIdMap: ' + JSON.serialize(modelNoAssetIdMap));
            System.debug(
              LoggingLevel.INFO,
              '*** modelNoAssetIdMap: ' + JSON.serialize(modelNoAssetIdMap)
            );
                    }
                }
            }
        }
        System.debug(LoggingLevel.INFO, '*** updateMap.values(): ' + JSON.serialize(updateMap.values()));
    System.debug(
      LoggingLevel.INFO,
      '*** updateMap.values(): ' + JSON.serialize(updateMap.values())
    );
        update updateMap.values();
            // Fixture_Model_No_F__c を見ることができない、データがおおいので。
@@ -467,13 +1046,9 @@
        //     whkey += wher + ' ) OR';
        // }
        // if (String.isNotBlank(whkey)) {
        //     whkey = '( ' + whkey.removeEnd('OR') + ')';
        // }
        // String soql = 'SELECT Fixture_Model_No_F__c, Substitute_flag__c, Asset__c,'
        //             + ' Queue_Number__c, Fixture_Model_No_text__c, Salesdepartment_before__c,'
@@ -572,14 +1147,31 @@
    private void checkOneToOneLink() {
        Set<Id> otoIds = new Set<Id>(); // 待删除link的Id
        Set<Id> assetIds = new Set<Id>();
        Set<String> centers = new Set<String> {'北京 备品中心', '上海 备品中心', '广州 备品中心'};
    Set<String> centers = new Set<String>{
      '北京 备品中心',
      '上海 备品中心',
      '广州 备品中心'
    };
        for (Asset nObj : newList) {
            //待废弃,废弃,和数量0的备品需要断开一对一link (目前只处理个体管理的)
            if ((nObj.Fixture_Status__c == FixtureUtil.assetFixtureStatusMap.get(FixtureUtil.AssetFixtureStatus.Fei_Qi.ordinal())
                || nObj.Fixture_Status__c == FixtureUtil.assetFixtureStatusMap.get(FixtureUtil.AssetFixtureStatus.Dai_Fei_Qi.ordinal())
                || nObj.Quantity == 0) && nObj.Manage_type__c == FixtureUtil.managetypeMap.get(FixtureUtil.Managetype.Ge_Ti_Guan_Li)){
      if (
        (nObj.Fixture_Status__c ==
        FixtureUtil.assetFixtureStatusMap.get(
          FixtureUtil.AssetFixtureStatus.Fei_Qi.ordinal()
        ) ||
        nObj.Fixture_Status__c ==
        FixtureUtil.assetFixtureStatusMap.get(
          FixtureUtil.AssetFixtureStatus.Dai_Fei_Qi.ordinal()
        ) ||
        nObj.Quantity == 0) &&
        nObj.Manage_type__c ==
        FixtureUtil.managetypeMap.get(FixtureUtil.Managetype.Ge_Ti_Guan_Li)
      ) {
                //是一对一主体或者是一对一个体附属品
                if (nObj.Main_OneToOne__c == true || nObj.Fixture_OneToOne_Link__c <> null) {
        if (
          nObj.Main_OneToOne__c == true ||
          nObj.Fixture_OneToOne_Link__c <> null
        ) {
                    if(centers.contains(nObj.Internal_asset_location__c)) {
                        assetIds.add(nObj.Id);
                    }
@@ -588,12 +1180,13 @@
        }
        if (assetIds.size() > 0) {
            Map<Id, Fixture_OneToOne_Link__c> linkMap = new Map<Id, Fixture_OneToOne_Link__c>([
      Map<Id, Fixture_OneToOne_Link__c> linkMap = new Map<Id, Fixture_OneToOne_Link__c>(
        [
                SELECT Id
                  FROM Fixture_OneToOne_Link__c
                 WHERE Main_Asset__c in :assetIds
                    OR Accessory_Asset__c IN: assetIds
            ]);
          WHERE Main_Asset__c IN :assetIds OR Accessory_Asset__c IN :assetIds
        ]
      );
            if(!linkMap.isEmpty()){
                delete linkMap.values();
            }
@@ -612,8 +1205,19 @@
     *    - 没有找的话, 不更新AccountId, 自动做 Account, Group, ApexShare
     */
    private void beforeSetAccountId() {
        Set<String> targetDepts = new Set<String> {'1.华北营业本部','2.东北营业本部','3.西北营业本部','4.华东营业本部','5.华南营业本部','6.西南营业本部'};
        Set<String> targetCenters = new Set<String> {'北京 备品中心', '上海 备品中心', '广州 备品中心'};
    Set<String> targetDepts = new Set<String>{
      '1.华北营业本部',
      '2.东北营业本部',
      '3.西北营业本部',
      '4.华东营业本部',
      '5.华南营业本部',
      '6.西南营业本部'
    };
    Set<String> targetCenters = new Set<String>{
      '北京 备品中心',
      '上海 备品中心',
      '广州 备品中心'
    };
        if (Test.isRunningTest() && testTargetDepts != null) {
            targetDepts = testTargetDepts;
        }
@@ -627,39 +1231,46 @@
            Asset oObj = (null == this.oldMap) ? null : this.oldMap.get(nObj.Id);
            // 作成, 确认字段有没有变化
            if (Trigger.isInsert
                || (oObj != null
                    && (oObj.RecordTypeId != nObj.RecordTypeId
                        || oObj.Asset_loaner_category__c != nObj.Asset_loaner_category__c
                        || oObj.AssetManageConfirm__c != nObj.AssetManageConfirm__c
                        || oObj.Internal_asset_location__c != nObj.Internal_asset_location__c
                        || oObj.Salesdepartment__c != nObj.Salesdepartment__c
                        || oObj.OlympusAccShareName__c != nObj.OlympusAccShareName__c
                    )
                    && (targetCenters.contains(nObj.Internal_asset_location__c)
                        || targetProvs.containsKey(nObj.Internal_asset_location__c)
                    )
                    && !nObj.TransferToOther__c
                )
      if (
        Trigger.isInsert ||
        (oObj != null &&
        (oObj.RecordTypeId != nObj.RecordTypeId ||
        oObj.Asset_loaner_category__c != nObj.Asset_loaner_category__c ||
        oObj.AssetManageConfirm__c != nObj.AssetManageConfirm__c ||
        oObj.Internal_asset_location__c != nObj.Internal_asset_location__c ||
        oObj.Salesdepartment__c != nObj.Salesdepartment__c ||
        oObj.OlympusAccShareName__c != nObj.OlympusAccShareName__c) &&
        (targetCenters.contains(nObj.Internal_asset_location__c) ||
        targetProvs.containsKey(nObj.Internal_asset_location__c)) &&
        !nObj.TransferToOther__c)
            ) {
                // 是不是备品的确认
                if (System.Label.Asset_RecordType == nObj.RecordTypeId
                    && true == nObj.AssetManageConfirm__c
                    && nObj.Asset_loaner_category__c != '耗材'
        if (
          System.Label.Asset_RecordType == nObj.RecordTypeId &&
          true == nObj.AssetManageConfirm__c &&
          nObj.Asset_loaner_category__c != '耗材'
                ) {
                    // 办事处备品 → 动态设定 Asset.AccountId 的対象
                    if (targetProvs.containsKey(nObj.Internal_asset_location__c)
                        && targetDepts.contains(nObj.Salesdepartment__c)
          if (
            targetProvs.containsKey(nObj.Internal_asset_location__c) &&
            targetDepts.contains(nObj.Salesdepartment__c)
                    ) {
                        String accShareName = '备品共享_'
                                + targetProvs.get(nObj.Internal_asset_location__c) + '_' + nObj.Salesdepartment__c.right(6);
            String accShareName =
              '备品共享_' +
              targetProvs.get(nObj.Internal_asset_location__c) +
              '_' +
              nObj.Salesdepartment__c.right(6);
                        nObj.OlympusAccShareName__c = accShareName;
                        assetAccShareNameMap.put(nObj, accShareName);
                    }
                    else {
          } else {
                        if (AssetHandler.Account_Asset_Id == null) {
                            // Static 只会执行一遍
                            AssetHandler.Account_Asset_Id = [SELECT Id FROM Account WHERE AgentCode_Ext__c =: System.Label.Account_Asset].Id;
              AssetHandler.Account_Asset_Id = [
                SELECT Id
                FROM Account
                WHERE AgentCode_Ext__c = :System.Label.Account_Asset
              ]
              .Id;
                        }
                        nObj.OlympusAccShareName__c = '';
                        nObj.AccountId = AssetHandler.Account_Asset_Id;
@@ -675,11 +1286,13 @@
        Set<String> insertAccShareNameSet = new Set<String>();
        if (assetAccShareNameMap.size() > 0) {
            Map<String, Id> accShareId = new Map<String, Id>();
            for (Account accShare : [SELECT Id
                        , Department_Name__c
      for (Account accShare : [
        SELECT Id, Department_Name__c
                     FROM Account
                    WHERE RecordTypeId =: System.Label.Department_OTH
                      AND Department_Name__c IN: assetAccShareNameMap.values()]) {
        WHERE
          RecordTypeId = :System.Label.Department_OTH
          AND Department_Name__c IN :assetAccShareNameMap.values()
      ]) {
                accShareId.put(accShare.Department_Name__c, accShare.Id);
            }
@@ -690,8 +1303,7 @@
                if (accShareId.containsKey(accShareName)) {
                    // 找到 Account 设定 AccountId, "Olympus社内 其他 备品" => "Olympus社内 其他 备品共享_XXX"
                    nObj.AccountId = accShareId.get(accShareName);
                }
                else {
        } else {
                    // 找不到 AccountId, 新建 Account, Group, ApexShare
                    insertAccShareNameSet.add(accShareName);
                }
@@ -699,7 +1311,9 @@
        }
        if (insertAccShareNameSet.size() > 0) {
            // AssetHandler.futureInsertAccShare(JSON.serialize(insertAccShareNameSet), execNow); 
            System.enqueueJob(new MyQueueableClass(JSON.serialize(insertAccShareNameSet), execNow));
      System.enqueueJob(
        new MyQueueableClass(JSON.serialize(insertAccShareNameSet), execNow)
      );
        }
    }
@@ -707,26 +1321,41 @@
     * 新建 备品共享_XXX 客户数据
     * @param insertAccShareNameJson Json String of List<String> ["备品共享_XXX", "备品共享_YYY"]
     */
    private static void insertAccShare(String insertAccShareNameJson, Datetime execNow) {
        Set<String> insertAccShareNameSet = (Set<String>) JSON.deserialize(insertAccShareNameJson, Set<String>.class);
        if (insertAccShareNameSet.isEmpty()) { return; }
  private static void insertAccShare(
    String insertAccShareNameJson,
    Datetime execNow
  ) {
    Set<String> insertAccShareNameSet = (Set<String>) JSON.deserialize(
      insertAccShareNameJson,
      Set<String>.class
    );
    if (insertAccShareNameSet.isEmpty()) {
      return;
    }
        //  Olympus社内 其他
        List<Account> olympusAccount_OtherDC;
        try {
            olympusAccount_OtherDC = [SELECT Id, ParentId
      olympusAccount_OtherDC = [
        SELECT Id, ParentId
                     FROM Account
                    WHERE Parent.AgentCode_Ext__c = '9999999' AND Department_Class_Name__c = '其他'
                      FOR Update];
        WHERE
          Parent.AgentCode_Ext__c = '9999999'
          AND Department_Class_Name__c = '其他'
        FOR UPDATE
      ];
        } catch (Exception e) {
            System.enqueueJob(new MyQueueableClass(insertAccShareNameJson, execNow));
            return;
        }
        List<Account> isInsertedList = [SELECT Id, Department_Name__c
    List<Account> isInsertedList = [
      SELECT Id, Department_Name__c
                 FROM Account
                WHERE ParentId =: olympusAccount_OtherDC[0].Id
                  AND Department_Name__c IN: insertAccShareNameSet];
      WHERE
        ParentId = :olympusAccount_OtherDC[0].Id
        AND Department_Name__c IN :insertAccShareNameSet
    ];
        if (isInsertedList.size() > 0) {
            Map<String, Account> insertedAccount = new Map<String, Account>();
            for (Account insertedAcc : isInsertedList) {
@@ -737,11 +1366,12 @@
            AssetHandler.updateAssetAccount(insertedAccount, execNow);
        }
        if (insertAccShareNameSet.size() > 0) {
            Map<String, Account> insertAccount = new Map<String, Account>();
            for (String accShareName : insertAccShareNameSet) {
                insertAccount.put(accShareName, new Account(
        insertAccount.put(
          accShareName,
          new Account(
                    Name = '*',
                    Hospital__c = olympusAccount_OtherDC[0].ParentId,
                    ParentId = olympusAccount_OtherDC[0].Id,
@@ -750,14 +1380,20 @@
                    Department_Name__c = accShareName,
                    OwnerId = System.Label.Batch_User_Id,
                    RecordTypeId = System.Label.Department_OTH
                ));
          )
        );
            }
            AssetHandler.insertAccGrantShare(insertAccount, execNow);
        }
    }
    private static void insertAccGrantShare(Map<String, Account> insertAccountMap, Datetime execNow) {
        if (insertAccountMap.isEmpty()) { return; }
  private static void insertAccGrantShare(
    Map<String, Account> insertAccountMap,
    Datetime execNow
  ) {
    if (insertAccountMap.isEmpty()) {
      return;
    }
        Set<String> accShareNameSet = insertAccountMap.keySet();
        // insert Account的时候, 跳过 NFM001
        // OLY_OCM-1230 需要执行NFM001Trigger
@@ -767,13 +1403,15 @@
        Map<String, Group> insertGroup = new Map<String, Group>();
        Map<String, Group> groupNameMap = new Map<String, Group>();
        for (String accShareName : accShareNameSet) {
            insertGroup.put(accShareName, new Group(
                Name = accShareName
            ));
      insertGroup.put(accShareName, new Group(Name = accShareName));
        }
        // Check 有没有 Group
        for (Group grp : [SELECT Id, Name FROM Group WHERE Type = 'Regular' AND Name IN: accShareNameSet]) {
    for (Group grp : [
      SELECT Id, Name
      FROM Group
      WHERE Type = 'Regular' AND Name IN :accShareNameSet
    ]) {
            // 已经有Group 的话 不用 insert
            insertGroup.remove(grp.Name);
            groupNameMap.put(grp.Name, grp);
@@ -787,29 +1425,40 @@
        // 赋 Account 共享权限
        List<AccountShare> insertShareList = new List<AccountShare>();
        for (String accShareName : accShareNameSet) {
            insertShareList.add(new AccountShare(
      insertShareList.add(
        new AccountShare(
                    UserOrGroupId = groupNameMap.get(accShareName).Id,
                    AccountId = insertAccountMap.get(accShareName).Id,
                    AccountAccessLevel = 'Edit',
                    OpportunityAccessLevel = 'None'
            ));
        )
      );
        }
        insert insertShareList;
        // Update Asset.AccountId
        AssetHandler.updateAssetAccount(insertAccountMap, execNow);
    }
    private static void updateAssetAccount(Map<String, Account> accShareNameAccountMap, Datetime execNow) {
        if (accShareNameAccountMap.isEmpty()) { return; }
  private static void updateAssetAccount(
    Map<String, Account> accShareNameAccountMap,
    Datetime execNow
  ) {
    if (accShareNameAccountMap.isEmpty()) {
      return;
    }
        Set<String> accShareNameSet = accShareNameAccountMap.keySet();
        List<Asset> updAssetAccount = new List<Asset>();
        for (Asset nObj : [SELECT Id, OlympusAccShareName__c, AccountId
    for (Asset nObj : [
      SELECT Id, OlympusAccShareName__c, AccountId
                 FROM Asset
                WHERE OlympusAccShareSameFlag__c = '0'
      WHERE
        OlympusAccShareSameFlag__c = '0'
                  AND OlympusAccShareName__c IN: accShareNameSet
                  AND LastModifiedDate >=: execNow]) {
            nObj.AccountId = accShareNameAccountMap.get(nObj.OlympusAccShareName__c).Id;
        AND LastModifiedDate >= :execNow
    ]) {
      nObj.AccountId = accShareNameAccountMap.get(nObj.OlympusAccShareName__c)
        .Id;
            updAssetAccount.add(nObj);
        }
        update updAssetAccount;
force-app/main/default/classes/AssetHandler.cls-meta.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>35.0</apiVersion>
    <apiVersion>50.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/Batch_FixAttachmentToFiles.cls
@@ -1,27 +1,36 @@
global without sharing class Batch_FixAttachmentToFiles implements Database.Batchable<sObject>{
    // Id batchJobId = Database.executeBatch(new Batch_FixAttachmentToFiles(Datetime.newInstance(2023, 5, 20, 8, 0, 0),'Consumable_order__c'),2000);
    private Datetime endDate = null;
  // Id batchJobId = Database.executeBatch(new Batch_FixAttachmentToFiles('Consumable_order__c',Datetime.newInstance(2023, 1, 1, 8, 0, 0),Datetime.newInstance(2024, 1, 1, 8, 0, 0)),2000);
  private Datetime creStartDate = null;
  private Datetime creEndDate = null;
    private String objectApiName = null;
    public Batch_FixAttachmentToFiles(Datetime setTime,String objectType) {
        endDate = setTime;
  private Set<String> parentIds = new Set<String>(); //Add by Li Jun 20230703
  public Batch_FixAttachmentToFiles(
    String objectType,
    Datetime startTime,
    Datetime endTime
  ) {
    creStartDate = startTime;
    creEndDate = endTime;
        objectApiName = objectType;
    }
  //Add by Li Jun 20230703 Start
  public Batch_FixAttachmentToFiles(Set<String> parentIds) {
    this.parentIds = parentIds;
  }
  //Add by Li Jun 20230703 End
    global Database.QueryLocator start(Database.BatchableContext BC) {
        String queryObject = 'SELECT Id FROM ' + objectApiName + ' WHERE CreatedDate >=:endDate' + ' order by CreatedDate desc';
        System.debug('queryObject:' + queryObject);
        return Database.getQueryLocator(queryObject);//取指定Object下面的Id或者处理全部
    String queryObject = 'SELECT Id, Name, OwnerId, ParentId, Parent.Name, Parent.Type, Body, CreatedDate, CreatedById FROM Attachment WHERE Parent.Type =:objectApiName AND CreatedDate >=:creStartDate AND CreatedDate <:creEndDate Order by CreatedDate ASC';
    if (parentIds.size() > 0) {
      queryObject = 'SELECT Id, Name, OwnerId, ParentId, Parent.Name, Parent.Type, Body, CreatedDate, CreatedById FROM Attachment WHERE ParentId in:parentIds';
    }
    return Database.getQueryLocator(queryObject);
    }
    global void execute(Database.BatchableContext BC, List<sObject> scope) {
        Set<Id> setId = new Set<Id>();
        for(sObject sc: scope){
            setId.add(sc.Id);
        }
  global void execute(Database.BatchableContext BC, List<Attachment> scope) {
        List<ContentVersion> insertContents = new List<ContentVersion>();
        Map<string,id> nameParentMaps = new Map<string,id>();
        for (Attachment att : [select Id,Name ,OwnerId,ParentId, Body, CreatedById from Attachment where ParentId in: setId Order by Name desc]) {
            nameParentMaps.put(att.name, att.ParentId);
    for (Attachment att : scope) {
      nameParentMaps.put(att.Name, att.ParentId);
            ContentVersion cVersion = new ContentVersion();
            cVersion.ContentLocation = 'S';     //S-Document is in Salesforce. E-Document is outside of Salesforce. L-Document is on a Social Netork.
            cVersion.PathOnClient = att.Name;   //File name with extention
@@ -33,12 +42,16 @@
        if(insertContents.isEmpty()){
            return;
        }
        Insert insertContents;
        set<Id> contentIds = new set<Id>();
    insert insertContents;
    set<Id> contentIds = new Set<Id>();
        for(ContentVersion cv : insertContents){
            contentIds.add(cv.id);
        }
        List<ContentVersion> conDocuments = [SELECT ContentDocumentId, Title FROM ContentVersion WHERE Id in: contentIds];
    List<ContentVersion> conDocuments = [
      SELECT ContentDocumentId, Title
      FROM ContentVersion
      WHERE Id IN :contentIds
    ];
        List<ContentDocumentLink> insertDocLinks = new List<ContentDocumentLink>();  
        for(ContentVersion cv : conDocuments){
            ContentDocumentLink cDocLink = new ContentDocumentLink();
@@ -48,10 +61,9 @@
            cDocLink.Visibility = 'AllUsers';
            insertDocLinks.add(cDocLink);
        }
        Insert insertDocLinks;
    insert insertDocLinks;
    }
    global void finish(Database.BatchableContext BC) {
    }
}
force-app/main/default/classes/DealerInquiryModifyStateControllerTest.cls
@@ -1,15 +1,34 @@
@isTest
private class DealerInquiryModifyStateControllerTest {
    @TestSetup static void init() {
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '病院'];
  @TestSetup
  static void init() {
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
    ];
        if (rectCo.size() == 0) {
            return;
        }
        List<RecordType> rectSct = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '戦略科室分類 呼吸科'];
    List<RecordType> rectSct = [
      SELECT Id
      FROM RecordType
      WHERE
        IsActive = TRUE
        AND SobjectType = 'Account'
        AND Name = '戦略科室分類 呼吸科'
    ];
        if (rectSct.size() == 0) {
            return;
        }
        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '診療科 消化科'];
    List<RecordType> rectDpt = [
      SELECT Id
      FROM RecordType
      WHERE
        IsActive = TRUE
        AND SobjectType = 'Account'
        AND Name = '診療科 消化科'
    ];
        if (rectDpt.size() == 0) {
            return;
        }
@@ -45,7 +64,7 @@
        opp.Name                = 'GZ-SP-NFM007_1';
        opp.Trade__c            = '内貿';
        opp.StageName           = '引合';
        opp.CloseDate           = date.newinstance(2022, 11, 30);
    opp.CloseDate = Date.today();
        opp.Stock_apply_status__c = '申请中';
        insert opp;
        Test.startTest();
@@ -60,17 +79,16 @@
        contact1.LastName = 'test1医院';
        contact1.Agency_User__c = true;
        insert contact1;
        List<Contact> contactlist = [select Id, FirstName
                                     from Contact
    List<Contact> contactlist = [
      SELECT Id, FirstName
      FROM Contact
                                    ];
        System.assertEquals('責任者', contactlist[0].FirstName);
        //
        User user = new User();
        Profile p = [select Id from Profile where Name = '901_经销商活动系统'];
    Profile p = [SELECT Id FROM Profile WHERE Name = '901_经销商活动系统'];
        user.ProfileId = p.Id;
        user.ContactId = contact1.Id;
        user.FirstName = 'ユーザー';
@@ -84,9 +102,14 @@
        user.Alias = 'テユ';
        user.CommunityNickname = 'テストユーザー';
        user.SalesManager__c = UserInfo.getUserId();
    System.runAs(new User(Id = UserInfo.getUserId())) {
        insert user;
        List<user> users = [select Id, Name, LastName, FirstName from User where LastName = 'テスト'];
    }
    List<user> users = [
      SELECT Id, Name, LastName, FirstName
      FROM User
      WHERE LastName = 'テスト'
    ];
        //
        Agency_Hospital_Link__c agency_hospital_link = new Agency_Hospital_Link__c();
@@ -101,7 +124,15 @@
        //System.assertEquals('テスト',users[0].LastName);
        System.assertEquals('ユーザー', users[0].FirstName );
        Id rtId = [select Id, DeveloperName from RecordType where IsActive = true and SobjectType = 'Agency_Opportunity__c' and DeveloperName = 'Opportunity'].Id;
    Id rtId = [
      SELECT Id, DeveloperName
      FROM RecordType
      WHERE
        IsActive = TRUE
        AND SobjectType = 'Agency_Opportunity__c'
        AND DeveloperName = 'Opportunity'
    ]
    .Id;
        // Schema.SobjectType.Agency_Opportunity__c.getRecordTypeInfosByName().get('询价').getRecordTypeId();
        Agency_opportunity__c agency_opportunity = new Agency_opportunity__c();
        agency_opportunity.RecordTypeId = rtId;
@@ -116,7 +147,6 @@
        insert agency_opportunity;
        Test.stopTest();
    }
    static testMethod void myUnitTest_SortKey() {
@@ -126,10 +156,8 @@
        PageReference page = new PageReference('/apex/DealerInquiryModifyState');
        System.Test.setCurrentPage(page);
        
        // 初始化测试
        DealerInquiryModifyStateController controller = new DealerInquiryModifyStateController();
        
        controller.init();
        //System.assertEquals(1, controller.oppRecords.size());验证预期值和结果值正确性
@@ -343,7 +371,6 @@
        controller.tmpBO.MaxActivityDate__c = date.valueOf('2018-02-09');
        controller.chick();
         Test.stopTest();
    }
    static testMethod void myUnitTestTime02() {
        PageReference page = new PageReference('/apex/DealerInquiryModifyState');
@@ -378,7 +405,6 @@
        controller.tmpBO.MaxActivityDate__c = date.valueOf('2018-02-09');
        controller.chick();
        Test.stopTest();
    }
    static testMethod void myUnitTestTimeSave() {
        PageReference page = new PageReference('/apex/DealerInquiryModifyState');
force-app/main/default/classes/LayoutDescriberHelper.cls
@@ -71,7 +71,6 @@
    fieldAPIToLabelMap = new Map<String, String>();
    layoutSections = new List<LayoutSection>();
    String theRespBody = getLayoutSchema(recordTypeId, objectType, userMode);
    System.debug('theRespBody = ' + theRespBody);
    Map<String, Object> layoutSection = (Map<String, Object>) JSON.deserializeUntyped(
      theRespBody
    );
@@ -302,7 +301,6 @@
      req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid());
    }
    Http client = new Http();
    System.debug('req = ' + req);
    resp = client.send(req);
    system.debug('Schema Body:' + JSON.serialize(resp.getBody()));
    return resp.getBody();
@@ -359,6 +357,7 @@
  }
  public static Integer ControllerUtil() {
    Integer i = 0;
    return i;
  }
}
force-app/main/default/classes/LexArriveGoodsControllerTest.cls
New file
@@ -0,0 +1,483 @@
@isTest
private class LexArriveGoodsControllerTest {
  @IsTest
  static void test1() {
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
    if (rectCo.size() == 0) {
      return;
    }
    // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount1 = new Account(
      Name = 'Testaccount001',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999996'
    );
    Account myAccount2 = new Account(
      Name = 'Testaccount002',
      Dealer_discount__c = 10,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900',
      Product_Limit_Date__c = 'Test01|2|4,Test02|3|5'
    );
    insert new List<Account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
    insert core;
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
    System.runAs(new User(Id = UserInfo.getUserId())) {
      insert MyUser_Test;
    }
    // User MyUser_Test = [select id,Contact.accountid from User WHERE ProfileId = :prof.Id and IsActive = true and UserPro_Type__c = 'ET' limit 1 ];
    // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // insert new Product2[] {prod01,prod02};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      // Order1.Dealer_Info__c = myAccount1.id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Total_num__c = 3;
      Order1.OrderNumber_arrived__c = 1;
      Order1.Delivery_detail_count__c = 1;
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      //订单明细
      //fahuo
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = Order1.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = pro1.Id;
      Orderdet.Consumable_count__c = 40;
      insert Orderdet;
      //发货明细
      //到货正确信息
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
      Orderdet1.Name = 'OCM_01_001002';
      Orderdet1.Consumable_order_minor__c = Order1.Id;
      Orderdet1.Consumable_Product__c = pro1.Id;
      Orderdet1.Asset_Model_No__c = 'Test01';
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
      Orderdet1.TracingCode__c = 'BXJRA';
      //取消产品
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001003';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Test01';
      //Orderdet2.Consumable_Arrived_order__c = Order1.Id;
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRB';
      Orderdet2.Cancellation_Date__c = Date.today();
      Orderdet2.TracingCode__c = 'BXJRB';
      //销售产品
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
      Orderdet3.Name = 'OCM_01_001004';
      Orderdet3.Consumable_order_minor__c = Order1.Id;
      Orderdet3.Consumable_Product__c = pro1.Id;
      Orderdet3.Asset_Model_No__c = 'Test01';
      Orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRC';
      Orderdet3.Used_date__c = Date.today();
      Orderdet3.Arrive_date__c = Date.today();
      Orderdet3.TracingCode__c = 'BXJRC';
      //Orderdet3.Box_Piece__c = '盒';
      //出库产品
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
      Orderdet4.Name = 'OCM_01_001005';
      Orderdet4.Consumable_order_minor__c = Order1.Id;
      Orderdet4.Consumable_Product__c = pro1.Id;
      Orderdet4.Asset_Model_No__c = 'Test01';
      Orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet4.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRD';
      Orderdet4.Send_Date__c = Date.today();
      Orderdet4.Arrive_date__c = Date.today();
      Orderdet4.TracingCode__c = 'BXJRD';
      //已到货产品
      Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
      Orderdet5.Name = 'OCM_01_001006';
      Orderdet5.Consumable_order_minor__c = Order1.Id;
      Orderdet5.Consumable_Product__c = pro1.Id;
      Orderdet5.Asset_Model_No__c = 'Test01';
      Orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet5.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRE';
      Orderdet5.Arrive_date__c = Date.today();
      Orderdet5.TracingCode__c = 'BXJRE';
      //发货明细
      //管理编码包含数字
      Consumable_order_details2__c Orderdet6 = new Consumable_order_details2__c();
      Orderdet6.Name = 'OCM_01_001002';
      Orderdet6.Consumable_order_minor__c = Order1.Id;
      Orderdet6.Consumable_Product__c = pro1.Id;
      Orderdet6.Asset_Model_No__c = 'Test01';
      Orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet6.Bar_Code__c = '01049531702003111115120017181000105ZK250BX123';
      Orderdet6.TracingCode__c = 'BX123';
      //发错库 未到货
      Consumable_order_details2__c Orderdets8 = new Consumable_order_details2__c();
      Orderdets8.Name = 'OCM_01_001011';
      Orderdets8.Consumable_order_minor__c = Order1.Id;
      Orderdets8.Consumable_Product__c = pro1.Id;
      Orderdets8.Asset_Model_No__c = 'Test01';
      Orderdets8.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdets8.Bar_Code__c = '01049531702003111115120017181000105ZK250BXsys';
      Orderdets8.Box_Piece__c = '盒';
      Orderdets8.TracingCode__c = 'BXsys';
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdets8
      };
      List<Consumable_orderdetails__c> cod1 = [
        SELECT Id
        FROM Consumable_orderdetails__c
        WHERE Consumable_order__c = :Order1.Id
      ];
      System.assertEquals(1, cod1.size());
      PageReference page = new PageReference(
        '/apex/ArriveGoods?Esetid=' + Order1.Id
      );
      System.Test.setCurrentPage(page);
      ArriveGoodsController Controller = new ArriveGoodsController();
      //初始化测试
      System.Test.startTest();
      LexArriveGoodsController.Results re = LexArriveGoodsController.init(
        'Arr',
        Order1.Id
      );
      String arrControllerStr = re.arrGoodCon;
      LexArriveGoodsController.searchProduct('', arrControllerStr);
      re = LexArriveGoodsController.searchProduct(
        '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXsys\n01049531702003111115120017181000105ZK250BXsun\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BX123',
        arrControllerStr
      );
      arrControllerStr = re.arrGoodCon;
      LexArriveGoodsController.arriveGoodsConfim(arrControllerStr);
      System.Test.stopTest();
    }
  }
  @IsTest
  static void test2() {
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
    if (rectCo.size() == 0) {
      return;
    }
    // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount2 = new Account(
      name = 'Testaccount002',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900'
    );
    Account myAccount1 = new Account(
      name = 'Testaccount001',
      Dealer_discount__c = 30,
      RecordTypeId = rectCo[0].Id
    );
    insert new List<account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
    insert core;
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
    System.runAs(new User(Id = UserInfo.getUserId())) {
      insert MyUser_Test;
    }
    // User MyUser_Test = [select id,Contact.accountid from User WHERE ProfileId = :prof.Id and IsActive = true and UserPro_Type__c = 'ET' limit 1 ];
    // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // insert new Product2[] {prod01,prod02};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      Order1.Dealer_Info__c = myAccount1.id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      //返品订单
      Consumable_order__c Order2 = new Consumable_order__c();
      Order2.Name = 'OCM_01_002';
      Order2.Order_status__c = '批准';
      Order2.Order_type__c = '返品';
      Order2.Dealer_Info__c = myAccount1.id;
      Order2.RecordTypeid = System.Label.Dealer_Returned_Label;
      insert Order1;
      insert Order2;
      //订单明细
      //fahuo
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = Order1.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = pro1.Id;
      Orderdet.Consumable_count__c = 4;
      insert Orderdet;
      //发货明细
      //没出库,没销售,就是在库
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
      Orderdet1.Name = 'OCM_01_001001';
      Orderdet1.Consumable_order_minor__c = Order1.Id;
      Orderdet1.Consumable_Product__c = pro1.Id;
      Orderdet1.Asset_Model_No__c = 'Pro001';
      Orderdet1.Arrive_date__c = date.today();
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRF';
      Orderdet1.TracingCode__c = 'BXSYS';
      //daohuo
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001002';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Pro001';
      Orderdet2.Consumable_Arrived_order__c = Order1.Id;
      Orderdet2.Arrive_date__c = date.today();
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRI';
      Orderdet2.TracingCode__c = 'BXSYS';
      //sale
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
      Orderdet3.Name = 'OCM_01_001003';
      Orderdet3.Consumable_order_minor__c = Order1.Id;
      Orderdet3.Consumable_Product__c = pro1.Id;
      Orderdet3.Asset_Model_No__c = 'Pro001';
      Orderdet3.Consumable_Arrived_order__c = Order1.Id;
      Orderdet3.Arrive_date__c = date.today();
      Orderdet3.Used_date__c = date.today();
      Orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRJ';
      Orderdet3.TracingCode__c = 'BXSYS';
      //出库
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
      Orderdet4.Name = 'OCM_01_001004';
      Orderdet4.Consumable_order_minor__c = Order1.Id;
      Orderdet4.Consumable_Product__c = pro1.Id;
      Orderdet4.Asset_Model_No__c = 'Pro001';
      Orderdet4.Consumable_Arrived_order__c = Order1.Id;
      Orderdet4.Consumable_Shipment_order__c = Order1.Id;
      Orderdet4.Send_Date__c = date.today();
      Orderdet4.Arrive_date__c = date.today();
      Orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet4.Bar_Code__c = '01049531702003111115120017181000105ZK250BX222';
      Orderdet4.TracingCode__c = 'BXSYS';
      //quxiao
      Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
      Orderdet5.Name = 'OCM_01_001005';
      Orderdet5.Consumable_order_minor__c = Order1.Id;
      Orderdet5.Consumable_Product__c = pro1.Id;
      Orderdet5.Asset_Model_No__c = 'Pro001';
      Orderdet5.Cancellation_Date__c = Date.today();
      Orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet5.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRZ';
      Orderdet5.Box_Piece__c = '个';
      Orderdet5.TracingCode__c = 'BXSYS';
      //fanpin
      Consumable_order_details2__c Orderdet6 = new Consumable_order_details2__c();
      Orderdet6.Name = 'OCM_01_001006';
      Orderdet6.Consumable_order_minor__c = Order1.Id;
      Orderdet6.Consumable_Product__c = pro1.Id;
      Orderdet6.Asset_Model_No__c = 'Pro001';
      Orderdet6.Consumable_Return_order__c = Order2.Id;
      Orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet6.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
      Orderdet6.Box_Piece__c = '个';
      Orderdet6.TracingCode__c = 'BXSYS';
      Consumable_order_details2__c Orderdet7 = new Consumable_order_details2__c();
      Orderdet7.Name = 'OCM_01_001001';
      Orderdet7.Consumable_order_minor__c = Order1.Id;
      Orderdet7.Consumable_Product__c = pro1.Id;
      Orderdet7.Asset_Model_No__c = 'Pro001';
      Orderdet7.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet7.Bar_Code__c = '01049531702003111115120017181000105ZK250BX333';
      Orderdet7.TracingCode__c = 'BXSYS';
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdet7
      };
      ArriveGoodsController Controller = new ArriveGoodsController();
      System.Test.startTest();
      Controller.init();
      Controller.barcode = '01049531702003111115120017181000105ZK250BXAAA\n01049531702003111115120017181000105ZK250BXJRJ\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BX123\n01049531702003111115120017181000105ZK250BX222';
      Controller.SearchPro();
      Controller.ArriveGoodsConfim();
      Controller.UpdateGoodsOfReturn();
      controller.getinventorysize();
      LexArriveGoodsController.Results re = LexArriveGoodsController.init(
        'Arr',
        ''
      );
      String arrControllerStr = re.arrGoodCon;
      re = LexArriveGoodsController.searchProduct(
        '01049531702003111115120017181000105ZK250BXAAA\n01049531702003111115120017181000105ZK250BXJRJ\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BX123\n01049531702003111115120017181000105ZK250BX222',
        arrControllerStr
      );
      arrControllerStr = re.arrGoodCon;
      LexArriveGoodsController.arriveGoodsConfim(arrControllerStr);
      LexArriveGoodsController.updateGoodsOfReturn(
        re.arrGoodCon,
        JSON.serialize(re.showGoodsofReturnList)
      );
      LexArriveGoodsController.ConsumableorderdetailsInfo con = new LexArriveGoodsController.ConsumableorderdetailsInfo();
      List<LexArriveGoodsController.ConsumableorderdetailsInfo> conList = new List<LexArriveGoodsController.ConsumableorderdetailsInfo>();
      conList.add(con);
      LexArriveGoodsController.changeType2(conList);
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/LexArriveGoodsControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexArriveGoodsControllerTest1.cls
New file
@@ -0,0 +1,240 @@
@isTest
public class LexArriveGoodsControllerTest1 {
  static void test1() {
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    List<RecordType> rectCo = [
      SELECT Id
      FROM RecordType
      WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
    ];
    if (rectCo.size() == 0) {
      return;
    }
    // Profile prof = [select Id from Profile where Name ='901_经销商社区普通权限_2重验证(ET Email)'];
    Profile prof = [
      SELECT Id
      FROM Profile
      WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
    ];
    Account myAccount1 = new Account(
      Name = 'Testaccount001',
      Dealer_discount__c = 20,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999996'
    );
    Account myAccount2 = new Account(
      Name = 'Testaccount002',
      Dealer_discount__c = 10,
      RecordTypeId = rectCo[0].Id,
      AgentCode_Ext__c = '9999900',
      Product_Limit_Date__c = 'Test01|2|4,Test02|3|5'
    );
    insert new List<Account>{ myAccount1, myAccount2 };
    Contact core = new Contact(
      email = 'jplumber@salesforce.com',
      firstname = 'Joe',
      lastname = 'Plumber',
      accountid = myAccount1.id
    );
    insert core;
    user MyUser_Test = new User(
      ContactId = core.id,
      Alias = 'newUser',
      Email = 'newuser@testorg.com',
      EmailEncodingKey = 'UTF-8',
      LastName = 'TestUser',
      LanguageLocaleKey = 'zh_CN',
      LocaleSidKey = 'zh_CN',
      ProfileId = prof.Id,
      TimeZoneSidKey = 'Asia/Shanghai',
      UserName = 'testUser@testorg.com',
      UserPro_Type__c = 'ET'
    );
    System.runAs(new User(Id = UserInfo.getUserId())) {
      insert MyUser_Test;
    }
    // User MyUser_Test = [select id,Contact.accountid from User WHERE ProfileId = :prof.Id and IsActive = true and UserPro_Type__c = 'ET' limit 1 ];
    // Product2 prod01 = new Product2(Name='Test01',ProductCode='Test01',Asset_Model_No__c = 'Test01',SFDA_Status__c = '有効',JANCODE__c = '04953170200311',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // Product2 prod02 = new Product2(Name='Test02',ProductCode='Test02',Asset_Model_No__c = 'Test02',SFDA_Status__c = '有効',JANCODE__c = '04953170200312',Dealer_special_Object__c = true,Manual_Entry__c = false);
    // insert new Product2[] {prod01,prod02};
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        RecordTypeId = '01210000000aMAFAA2',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      // Order1.Dealer_Info__c = myAccount1.id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Total_num__c = 3;
      Order1.OrderNumber_arrived__c = 1;
      Order1.Delivery_detail_count__c = 1;
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      //订单明细
      //fahuo
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = Order1.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = pro1.Id;
      Orderdet.Consumable_count__c = 40;
      insert Orderdet;
      //发货明细
      //到货正确信息
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
      Orderdet1.Name = 'OCM_01_001002';
      Orderdet1.Consumable_order_minor__c = Order1.Id;
      Orderdet1.Consumable_Product__c = pro1.Id;
      Orderdet1.Asset_Model_No__c = 'Test01';
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet1.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
      Orderdet1.TracingCode__c = 'BXJRA';
      //取消产品
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001003';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Test01';
      //Orderdet2.Consumable_Arrived_order__c = Order1.Id;
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRB';
      Orderdet2.Cancellation_Date__c = Date.today();
      Orderdet2.TracingCode__c = 'BXJRB';
      //销售产品
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
      Orderdet3.Name = 'OCM_01_001004';
      Orderdet3.Consumable_order_minor__c = Order1.Id;
      Orderdet3.Consumable_Product__c = pro1.Id;
      Orderdet3.Asset_Model_No__c = 'Test01';
      Orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRC';
      Orderdet3.Used_date__c = Date.today();
      Orderdet3.Arrive_date__c = Date.today();
      Orderdet3.TracingCode__c = 'BXJRC';
      //Orderdet3.Box_Piece__c = '盒';
      //出库产品
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
      Orderdet4.Name = 'OCM_01_001005';
      Orderdet4.Consumable_order_minor__c = Order1.Id;
      Orderdet4.Consumable_Product__c = pro1.Id;
      Orderdet4.Asset_Model_No__c = 'Test01';
      Orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet4.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRD';
      Orderdet4.Send_Date__c = Date.today();
      Orderdet4.Arrive_date__c = Date.today();
      Orderdet4.TracingCode__c = 'BXJRD';
      //已到货产品
      Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
      Orderdet5.Name = 'OCM_01_001006';
      Orderdet5.Consumable_order_minor__c = Order1.Id;
      Orderdet5.Consumable_Product__c = pro1.Id;
      Orderdet5.Asset_Model_No__c = 'Test01';
      Orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet5.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRE';
      Orderdet5.Arrive_date__c = Date.today();
      Orderdet5.TracingCode__c = 'BXJRE';
      //发货明细
      //管理编码包含数字
      Consumable_order_details2__c Orderdet6 = new Consumable_order_details2__c();
      Orderdet6.Name = 'OCM_01_001002';
      Orderdet6.Consumable_order_minor__c = Order1.Id;
      Orderdet6.Consumable_Product__c = pro1.Id;
      Orderdet6.Asset_Model_No__c = 'Test01';
      Orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdet6.Bar_Code__c = '01049531702003111115120017181000105ZK250BX123';
      Orderdet6.TracingCode__c = 'BX123';
      //发错库 未到货
      Consumable_order_details2__c Orderdets8 = new Consumable_order_details2__c();
      Orderdets8.Name = 'OCM_01_001011';
      Orderdets8.Consumable_order_minor__c = Order1.Id;
      Orderdets8.Consumable_Product__c = pro1.Id;
      Orderdets8.Asset_Model_No__c = 'Test01';
      Orderdets8.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
      Orderdets8.Bar_Code__c = '01049531702003111115120017181000105ZK250BXsys';
      Orderdets8.Box_Piece__c = '盒';
      Orderdets8.TracingCode__c = 'BXsys';
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4,
        Orderdet5,
        Orderdet6,
        Orderdets8
      };
      List<Consumable_orderdetails__c> cod1 = [
        SELECT Id
        FROM Consumable_orderdetails__c
        WHERE Consumable_order__c = :Order1.Id
      ];
      System.assertEquals(1, cod1.size());
      PageReference page = new PageReference(
        '/apex/ArriveGoods?Esetid=' + Order1.Id
      );
      System.Test.setCurrentPage(page);
      ArriveGoodsController Controller = new ArriveGoodsController();
      //初始化测试
      System.Test.startTest();
      LexArriveGoodsController.Results re = LexArriveGoodsController.init(
        'Arr',
        Order1.Id
      );
      String arrControllerStr = re.arrGoodCon;
      LexArriveGoodsController.searchProduct('', arrControllerStr);
      re = LexArriveGoodsController.searchProduct(
        '01049531702003111115120017181000105ZK250BXJRA\n01049531702003111115120017181000105ZK250BXsys\n01049531702003111115120017181000105ZK250BXsun\n01049531702003111115120017181000105ZK250BXJRB\n01049531702003111115120017181000105ZK250BXJRC\n01049531702003111115120017181000105ZK250BX111\n01049531702003111115120017181000105ZK250BXJRD\n01049531702003111115120017181000105ZK250BXJRE\n01049531702003111115120017181000105ZK250BXJRF\n01049531702003111115120017181000105ZK250BXJRG\n01049531702003111115120017181000105ZK250BX123',
        arrControllerStr
      );
      arrControllerStr = re.arrGoodCon;
      LexArriveGoodsController.arriveGoodsConfim(arrControllerStr);
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/LexArriveGoodsControllerTest1.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexArriveGoodsMainControllerTest.cls
New file
@@ -0,0 +1,161 @@
@istest
public class LexArriveGoodsMainControllerTest {
  @IsTest
  static void lexArriveGoodsMainControllerTest1() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      LexArriveGoodsMainController.init();
      LexArriveGoodsMainController.searchConsumableorderdetails(
        'Too001',
        null,
        myAccount1.Id,
        '北京',
        'ET'
      );
    }
  }
}
force-app/main/default/classes/LexArriveGoodsMainControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexArriveGsDetailsControllerTest.cls
New file
@@ -0,0 +1,249 @@
@isTest
public class LexArriveGsDetailsControllerTest {
  @IsTest
  static void test1() {
    User myUser_test = new User();
    Account myAccount1;
    Account myAccount2;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      myAccount2 = new Account(
        name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id
      );
      insert myAccount2;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount2.id
      );
      insert core;
      myUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert myUser_Test;
      System.runAs(MyUser_Test) {
        StaticParameter.ConsumableAssetHanderTrigger = true;
        Consumable_order__c order1 = new Consumable_order__c();
        order1.Name = 'OCM_01_001';
        order1.Order_status__c = '批准';
        order1.Order_type__c = '订单';
        order1.Dealer_Info__c = myAccount2.Id;
        order1.RecordTypeid = System.Label.RT_ConOrder_Arrive;
        insert order1;
        Consumable_order__c olyorder = new Consumable_order__c();
        olyorder.Name = 'OCM_01_001';
        olyorder.Order_status__c = '批准';
        olyorder.Order_type__c = '订单';
        olyorder.Dealer_Info__c = myAccount2.Id;
        olyorder.RecordTypeid = System.Label.RT_ConOrder_Delivery;
        insert olyorder;
        //订单明细
        Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
        Orderdet1.Name = 'OCM_01_001001';
        Orderdet1.Consumable_order_minor__c = olyorder.Id;
        Orderdet1.Consumable_Arrived_order__c = order1.Id;
        //Orderdet1.IsArrival__c = true;
        Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
        Orderdet1.Bar_Code__c = '11111';
        Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
        Orderdet2.Name = 'OCM_01_001002';
        Orderdet2.Consumable_order_minor__c = olyorder.Id;
        Orderdet2.Consumable_Arrived_order__c = order1.Id;
        //Orderdet2.IsArrival__c = true;
        Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
        Orderdet2.Bar_Code__c = '22222';
        insert new List<Consumable_order_details2__c>{ Orderdet1, Orderdet2 };
        LexArriveGsDetailsController.init(order1.Id);
        LexArriveGsDetailsController.proSale(
          JSON.serialize(LexArriveGsDetailsController.coc),
          LexArriveGsDetailsController.coc.Arrive_Order__r.Total_num__c,
          LexArriveGsDetailsController.consumableorderdetailsRecords.size(),
          order1.Id
        );
      }
    }
  }
  @IsTest
  static void test2() {
    User myUser_test = new User();
    Account myAccount1;
    Account myAccount2;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      myAccount2 = new Account(
        name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id
      );
      insert myAccount2;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount2.id
      );
      insert core;
      myUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert myUser_Test;
      System.runAs(MyUser_Test) {
        StaticParameter.ConsumableAssetHanderTrigger = true;
        Consumable_order__c order1 = new Consumable_order__c();
        order1.Name = 'OCM_01_001';
        order1.Order_status__c = '批准';
        order1.Order_type__c = '订单';
        order1.RecordTypeid = System.Label.RT_ConOrder_Arrive;
        order1.IsShipment__c = true;
        insert order1;
        Consumable_order__c olyorder = new Consumable_order__c();
        olyorder.Name = 'OCM_01_001';
        olyorder.Order_status__c = '批准';
        olyorder.Order_type__c = '订单';
        olyorder.Dealer_Info__c = myAccount2.Id;
        olyorder.RecordTypeid = System.Label.RT_ConOrder_Delivery;
        olyorder.IsShipment__c = true;
        insert olyorder;
        //订单明细
        Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c();
        Orderdet1.Name = 'OCM_01_001001';
        Orderdet1.Consumable_order_minor__c = olyorder.Id;
        Orderdet1.Consumable_Arrived_order__c = order1.Id;
        //Orderdet1.IsArrival__c = true;
        Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
        Orderdet1.Bar_Code__c = '11111';
        Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
        Orderdet2.Name = 'OCM_01_001002';
        Orderdet2.Consumable_order_minor__c = olyorder.Id;
        Orderdet2.Consumable_Arrived_order__c = order1.Id;
        //Orderdet2.IsArrival__c = true;
        Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery;
        Orderdet2.Bar_Code__c = '22222';
        insert new List<Consumable_order_details2__c>{ Orderdet1, Orderdet2 };
        LexArriveGsDetailsController.init(order1.Id);
        LexArriveGsDetailsController.proSale(
          JSON.serialize(LexArriveGsDetailsController.coc),
          1,
          1,
          order1.Id
        );
      }
    }
  }
}
force-app/main/default/classes/LexArriveGsDetailsControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexCancelRemoveBoxController.cls
@@ -4,14 +4,23 @@
    public static String userPro_Typestr = null;
    public static String barcode { get; set; }
    /*****************画面表示Bean******************/
    public static List<ConsumableorderdetailsInfo> consumableInventory { get; set; }
  public static List<ConsumableorderdetailsInfo> consumableInventory {
    get;
    set;
  }
    //错误明细
    public static List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordserror { get; set; }
  public static List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordserror {
    get;
    set;
  }
    //拆盒明细
    public static List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsdummy { get; set; }
  public static List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsdummy {
    get;
    set;
  }
    public static boolean saveFLGbln {get;set;}
    //错误信息
    public static String alertMessage {set;get;}
  public static String alertMessage { get; set; }
    //拆盒明细件数
    public static Integer getinventorysize(){
        return ConsumableorderdetailsRecordsdummy.size();
@@ -21,7 +30,7 @@
    public static Map<String, String> AllMap = new Map<String, String>();
    public static  List<String> BarCodeListP = new List<String>();
    //不符合的barcode和型号
    public static list<String> notInlist = new list<String>();
  public static list<String> notInlist = new List<String>();
    public static  String baseUrl {get;private set;}
    private static String accountid = null;
    private static String accountName = null;
@@ -34,7 +43,7 @@
        ConsumableorderdetailsRecordserror = new List<ConsumableorderdetailsInfo>();
        ConsumableorderdetailsRecordsdummy = new List<ConsumableorderdetailsInfo>();
        consumableInventory = new List<ConsumableorderdetailsInfo>();
        saveFLGbln = FALSE;
    saveFLGbln = false;
    }
    @AuraEnabled
@@ -44,8 +53,12 @@
        res.entity = data;
        String userId = UserInfo.getUserId();
        List<user> Useracc = New List<user>();
        Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c FROM user WHERE id =:userId];
    List<user> Useracc = new List<user>();
    Useracc = [
      SELECT accountid, Work_Location__c, UserPro_Type__c
      FROM user
      WHERE id = :userId
    ];
        accountid = Useracc[0].accountid;
        userWorkLocation = Useracc[0].Work_Location__c;
        agencyProType = Useracc[0].UserPro_Type__c;
@@ -53,7 +66,11 @@
            agencyProType = 'ET';
        }
        userPro_Typestr = '%' + agencyProType + '%';
        List<account> accountInfo = [SELECT Name FROM account WHERE id =:accountid];
    List<account> accountInfo = [
      SELECT Name
      FROM account
      WHERE id = :accountid
    ];
        //String view_product = accountInfo[0].view_product__c;
        accountName = accountInfo[0].Name;
        //proidList = view_product.split(',');
@@ -64,12 +81,11 @@
        res.code = 200;
        System.debug('res = ' + res);
        return res;
    }
    // 将页面或取得BarCode去掉重复的,转换成List
    public static List<String> ParseBarCode(String Code){
        String[] Cache = new String[]{};
    String[] Cache = new List<String>{};
        Cache = Code.split('\n');
        Set <String> Buff = new Set<String>();
        for(String A : Cache){
@@ -85,7 +101,12 @@
    //获取明细
    @AuraEnabled
    public static ResponseBodyLWC searchConsumableorderdetails(String barcode,String accountName,String userWorkLocation,String agencyProType) {
  public static ResponseBodyLWC searchConsumableorderdetails(
    String barcode,
    String accountName,
    String userWorkLocation,
    String agencyProType
  ) {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String,object> data = new Map<String,object>();
        res.entity = data;
@@ -97,15 +118,13 @@
        ConsumableorderdetailsRecordserror = new List<ConsumableorderdetailsInfo>();
        ConsumableorderdetailsRecordsdummy = new List<ConsumableorderdetailsInfo>();
        notInlist = new list<String>();
    notInlist = new List<String>();
        BarCodeListP = ParseBarCode(barcode);
        Consumable_order_details2__c p = new Consumable_order_details2__c();
        List<Consumable_order_details2__c> Ins = New List<Consumable_order_details2__c>();
    List<Consumable_order_details2__c> Ins = new List<Consumable_order_details2__c>();
        List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>();
        List<Consumable_order_details2__c> reSet1 = new List<Consumable_order_details2__c>();
        saveFLGbln = FALSE;
    saveFLGbln = false;
        alertMessage='';
        //判断barcode是否为空
@@ -122,56 +141,91 @@
        // ConsumableorderdetailsRecordsdummy.clear();
        // 产品类型不同
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,Product_Type__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c, Arrive_Owner_Work_Location__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Product_Type__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
        Arrive_Owner_Work_Location__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND   Bar_Code__c in :BarCodeListP
      WHERE
        Dealer_Arrive__c = TRUE
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    AND   Arrive_Owner_Work_Location__c = : userWorkLocation
                    AND (not Product_Type__c like : userPro_Typestr)
                    ORDER BY Name ];
        AND (NOT Product_Type__c LIKE :userPro_Typestr)
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
                    // 跳过已经处理的消耗品明细
                    continue;
                }else{
                    String str = '该商品类型'+ reSet1[i].Product_Type__c +'与产品类型'+ agencyProType +'不符,不能拆盒';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          String str =
            '该商品类型' +
            reSet1[i].Product_Type__c +
            '与产品类型' +
            agencyProType +
            '不符,不能拆盒';
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //没有拆盒
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                         /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND  Dealer_Shipment__c= false
                    AND  Dealer_Saled__c = false
                    AND  Dealer_Returned__c = false
                    AND  Lose_Flag__c = false
      WHERE
        Dealer_Arrive__c = TRUE
        AND Dealer_Shipment__c = FALSE
        AND Dealer_Saled__c = FALSE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
                    AND  Box_Piece__c = '盒'
                    //AND  ProductPacking_list_manual__c > 1
                    AND  Bar_Code__c in :BarCodeListP
        AND Bar_Code__c IN :BarCodeListP
                    AND  Dealer_Info_text__c = :accountName
                    ORDER BY Name ];  //没出库,没销售,在库,没有拆盒
      ORDER BY Name
    ]; //没出库,没销售,在库,没有拆盒
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -179,32 +233,47 @@
                    continue;
                }else{
                    String str = '该商品没有拆盒';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //已出货,未到货
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = FALSE
      WHERE
        Dealer_Arrive__c = FALSE
                    AND  Dealer_Shipment__c= FALSE
                    AND  Dealer_Saled__c = FALSE
                    AND  Dealer_Returned__c = false
                    AND  Lose_Flag__c = false
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
                    AND  Box_Piece__c = '盒'
                    AND   Bar_Code__c in :BarCodeListP
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -212,32 +281,47 @@
                    continue;
                }else{
                    String str = '该商品还未到货';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //拆盒已出货
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Shipment__c = true
                    AND   Dealer_Arrive__c = true
                    AND   Dealer_Returned__c = false
                    AND   Lose_Flag__c = false
      WHERE
        Dealer_Shipment__c = TRUE
        AND Dealer_Arrive__c = TRUE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
                    AND   Box_Piece__c = '个'
                    AND   RemoveBox_date__c != null
                    AND   Bar_Code__c in :BarCodeListP
        AND RemoveBox_date__c != NULL
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -245,32 +329,47 @@
                    continue;
                }else{
                    String str = '该商品存在出货履历';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //拆盒已销售
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Saled__c = true
                    AND   Dealer_Arrive__c = true
                    AND   Dealer_Returned__c = false
                    AND   Lose_Flag__c = false
      WHERE
        Dealer_Saled__c = TRUE
        AND Dealer_Arrive__c = TRUE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
                    AND   Box_Piece__c = '个'
                    AND   RemoveBox_date__c != null
                    AND   Bar_Code__c in :BarCodeListP
        AND RemoveBox_date__c != NULL
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -278,30 +377,45 @@
                    continue;
                }else{
                    String str = '该商品存在销售履历';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //拆盒返品
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Returned__c = true
                    AND   Return_date__c != null
      WHERE
        Dealer_Returned__c = TRUE
        AND Return_date__c != NULL
                    AND   Box_Piece__c = '个'
                    AND   RemoveBox_date__c != null
                    AND   Bar_Code__c in :BarCodeListP
        AND RemoveBox_date__c != NULL
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -309,30 +423,44 @@
                    continue;
                }else{
                    String str = '该商品存在返品履历';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //拆盒后盘点过(盘点日期不为空)
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Inventory_date__c != null
      WHERE
        Inventory_date__c != NULL
                    AND   Box_Piece__c = '个'
                    AND   RemoveBox_date__c != null
                    AND   Bar_Code__c in :BarCodeListP
        AND RemoveBox_date__c != NULL
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
@@ -340,42 +468,65 @@
                    continue;
                }else{
                    String str = '该商品存在盘点履历';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        //不同工作地
        reSet1 = [SELECT Id,  Name,Consumable_Product__r.Name__c,
                        Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,
                        Deliver_date__c,Bar_Code__c,
                        Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c,
                        recordtypeid,Consumable_order_minor__r.Arrive_Order__c, Arrive_Owner_Work_Location__c,
    reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__r.Name__c,
        Consumable_Product__c,
        Consumable_Product__r.Name,
        Sterilization_limit__c,
        Deliver_date__c,
        Bar_Code__c,
        Arrive_date__c,
        Send_Date__c,
        Consumable_order_minor__r.Name,
        Consumable_order_minor__c,
        recordtypeid,
        Consumable_order_minor__r.Arrive_Order__c,
        Arrive_Owner_Work_Location__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND   Bar_Code__c in :BarCodeListP
      WHERE
        Dealer_Arrive__c = TRUE
        AND Bar_Code__c IN :BarCodeListP
                    AND   Dealer_Info_text__c = :accountName
                    AND   Arrive_Owner_Work_Location__c !=: userWorkLocation
                    ORDER BY Name ];
      ORDER BY Name
    ];
        if(reSet1.size() > 0){
            for (Integer i = 0; i < reSet1.size(); i++) {
                if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){
                    // 跳过已经处理的消耗品明细
                    continue;
                }else{
                    String str = '该商品属于' + reSet1[i].Arrive_Owner_Work_Location__c + ',不能取消拆盒';
                    ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str));
          String str =
            '该商品属于' +
            reSet1[i].Arrive_Owner_Work_Location__c +
            ',不能取消拆盒';
          ConsumableorderdetailsRecordserror.add(
            new ConsumableorderdetailsInfo(reSet1[i], str)
          );
                    ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c);
                }
            }
        }
        reSet = [SELECT Id,
    reSet = [
      SELECT
        Id,
                        Name,
                        Intra_Trade_List_RMB__c,
                        Asset_Model_No__c,
@@ -400,30 +551,31 @@
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND Dealer_Shipment__c = false
                    AND Dealer_Saled__c = false
                    AND Dealer_Returned__c = false
                    AND Lose_Flag__c = false
      WHERE
        Dealer_Arrive__c = TRUE
        AND Dealer_Shipment__c = FALSE
        AND Dealer_Saled__c = FALSE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
                    AND Box_Piece__c = '个'
                    AND RemoveBox_date__c != null
                    AND Bar_Code__c in :BarCodeListP
        AND RemoveBox_date__c != NULL
        AND Bar_Code__c IN :BarCodeListP
                    AND Dealer_Info_text__c = :accountName 
                    AND Arrive_Owner_Work_Location__c =: userWorkLocation
                    AND  Product_Type__c like : userPro_Typestr
        AND Product_Type__c LIKE :userPro_Typestr
                ];
        if(reSet.size()>0){
            for (Integer i = 0; i < reSet.size(); i++) {
                if(ErrorIdMap.containsKey(reSet[i].Bar_Code__c) ){
                    // 跳过错误的消耗品明细
                    continue;
                }
                else if(ExistIdMap.containsKey(reSet[i].Bar_Code__c) ){
        } else if (ExistIdMap.containsKey(reSet[i].Bar_Code__c)) {
                    // 跳过已经处理的消耗品明细
                    continue;
                }
                else{
                    ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i]));
        } else {
          ConsumableorderdetailsRecordsdummy.add(
            new ConsumableorderdetailsInfo(reSet[i])
          );
                    ExistIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c);
                }
            }
@@ -443,21 +595,36 @@
        }
        if(notInlist.size()>0){
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode'+ notInlist + '不存在。'));
                return new ResponseBodyLWC('Error',500, 'BarCode'+ notInlist + '不存在。', '');
      return new ResponseBodyLWC(
        'Error',
        500,
        'BarCode' + notInlist + '不存在。',
        ''
      );
        }
        data.put('ConsumableorderdetailsRecordsdummy',JSON.serialize(ConsumableorderdetailsRecordsdummy));
        data.put('ConsumableorderdetailsRecordserror',JSON.serialize(ConsumableorderdetailsRecordserror));
    data.put(
      'ConsumableorderdetailsRecordsdummy',
      JSON.serialize(ConsumableorderdetailsRecordsdummy)
    );
    data.put(
      'ConsumableorderdetailsRecordserror',
      JSON.serialize(ConsumableorderdetailsRecordserror)
    );
        data.put('dataSize',ConsumableorderdetailsRecordsdummy.size());
        res.status = 'Success';
        res.code = 200;
        System.debug('res = ' + res);
        return res;
    }
    //取消拆盒确认
    @AuraEnabled
    public static ResponseBodyLWC cancelRemoveBoxConfirm(String saveConsumableorderdetailsRecordsdummy,String accountName,String userWorkLocation,String agencyProType) {
  public static ResponseBodyLWC cancelRemoveBoxConfirm(
    String saveConsumableorderdetailsRecordsdummy,
    String accountName,
    String userWorkLocation,
    String agencyProType
  ) {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String,object> data = new Map<String,object>();
        res.entity = data;
@@ -465,10 +632,12 @@
        userPro_Typestr = '%' + agencyProType + '%';
        accountName = accountName;
        userWorkLocation =userWorkLocation;
        List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsdummy = (List<ConsumableorderdetailsInfo>)JSON.deserialize(saveConsumableorderdetailsRecordsdummy,List<ConsumableorderdetailsInfo>.class);
    List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsdummy = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      saveConsumableorderdetailsRecordsdummy,
      List<ConsumableorderdetailsInfo>.class
    );
        List<Consumable_order_details2__c> ins = New List<Consumable_order_details2__c>();
    List<Consumable_order_details2__c> ins = new List<Consumable_order_details2__c>();
        
        Savepoint sp = Database.setSavepoint();
        if(ConsumableorderdetailsRecordsdummy.size()<1){
@@ -484,7 +653,8 @@
        try{
            //取得通番大于001的在库明细
            List<Consumable_order_details2__c> orderDetails2del =  [SELECT
      List<Consumable_order_details2__c> orderDetails2del = [
        SELECT
                        Id,
                        Box_Piece__c,
                        RemoveBox_date__c,
@@ -495,18 +665,19 @@
                        /*,ContractNo__c*/
                        //add by rentx 2020-10-13 end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND Dealer_Shipment__c = false
                    AND Dealer_Saled__c = false
                    AND Dealer_Returned__c = false
                    AND Lose_Flag__c = false
        WHERE
          Dealer_Arrive__c = TRUE
          AND Dealer_Shipment__c = FALSE
          AND Dealer_Saled__c = FALSE
          AND Dealer_Returned__c = FALSE
          AND Lose_Flag__c = FALSE
                    AND Box_Piece__c = '个'
                    AND RemoveBox_date__c != null
          AND RemoveBox_date__c != NULL
                    AND RemoveBox_No__c > 1
                    AND Bar_Code__c in :BarCodeList
          AND Bar_Code__c IN :BarCodeList
                    AND Dealer_Info_text__c = :accountName 
                    AND Arrive_Owner_Work_Location__c =: userWorkLocation
                    AND  Product_Type__c like : userPro_Typestr
          AND Product_Type__c LIKE :userPro_Typestr
                ];
            List<Consumable_order_details2__c> orderlistdel = new List<Consumable_order_details2__c>();
@@ -522,32 +693,34 @@
            }
            //取得通番001的在库明细
            List<Consumable_order_details2__c> orderDetails2 =  [SELECT
      List<Consumable_order_details2__c> orderDetails2 = [
        SELECT
                        Id,
                        Box_Piece__c,
                        RemoveBox_date__c,
                        RemoveBox_No__c,
                        Bar_Code__c,
                        //add by rentx 2020-10-13 start
                        ContractNo_text__c
          ContractNo_text__c,
                        /*,ContractNo__c*/
                        //add by rebtx 2020-10-13 end
                    // tcm start
                    ,Consumable_order_minor__r.ContractNo__c
          Consumable_order_minor__r.ContractNo__c
                    // tcm end
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = true
                    AND Dealer_Shipment__c = false
                    AND Dealer_Saled__c = false
                    AND Dealer_Returned__c = false
                    AND Lose_Flag__c = false
        WHERE
          Dealer_Arrive__c = TRUE
          AND Dealer_Shipment__c = FALSE
          AND Dealer_Saled__c = FALSE
          AND Dealer_Returned__c = FALSE
          AND Lose_Flag__c = FALSE
                    AND Box_Piece__c = '个'
                    AND RemoveBox_date__c !=null
          AND RemoveBox_date__c != NULL
                    AND RemoveBox_No__c = 1
                    AND Bar_Code__c in :BarCodeList
          AND Bar_Code__c IN :BarCodeList
                    AND Dealer_Info_text__c = :accountName 
                    AND Arrive_Owner_Work_Location__c =: userWorkLocation
                    AND  Product_Type__c like : userPro_Typestr
          AND Product_Type__c LIKE :userPro_Typestr
                ];
            for (Consumable_order_details2__c detail2tmp : orderDetails2) {
@@ -558,7 +731,9 @@
                updDetails2.RemoveBox_No__c              = null;
                // tcm start
                if (String.isBlank(detail2tmp.Consumable_order_minor__r.ContractNo__c)) {
        if (
          String.isBlank(detail2tmp.Consumable_order_minor__r.ContractNo__c)
        ) {
                    updDetails2.ContractNo_text__c= detail2tmp.ContractNo_text__c;
                }else {
                    updDetails2.ContractNo_text__c= detail2tmp.Consumable_order_minor__r.ContractNo__c;
@@ -594,7 +769,7 @@
        }
    }
  @TestVisible
    class ConsumableorderdetailsInfo implements Comparable {
        public Consumable_order_details2__c esd { get; set; }
        public Product2__c Prod { get; set; }
@@ -606,7 +781,10 @@
        //public String tracingCodeNo { get; set; }
        public String oldConsumableCount { get; set; }
        public String ErrorReason { get; set; }
        public ConsumableorderdetailsInfo(Consumable_order_details2__c e,string str) {
    public ConsumableorderdetailsInfo(
      Consumable_order_details2__c e,
      string str
    ) {
            esd                = e;
            Prod               = e.Consumable_Product__r;
            oldConsumableCount = e.name;
force-app/main/default/classes/LexCancelRemoveBoxControllerTest.cls
New file
@@ -0,0 +1,953 @@
@IsTest
private class LexCancelRemoveBoxControllerTest {
  static testMethod void testMethod1() {
    Oly_TriggerHandler.bypass('ConsumableAssetHander');
    Oly_TriggerHandler.bypass('Oly_TriggerHandler');
    user myUser_test;
    Account myAccount2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      myAccount2 = new Account(
        name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount2;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount2.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200311',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 5,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200312',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 5,
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        JANCODE__c = '04953170200313',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      insert new List<Product2__c>{ pro1, pro2, pro3 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      Order1.Dealer_Info__c = myAccount2.Id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      //daoku
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c();
      Orderdet2.Name = 'OCM_01_001001';
      Orderdet2.Consumable_order_minor__c = Order1.Id;
      Orderdet2.Consumable_Product__c = pro1.Id;
      Orderdet2.Asset_Model_No__c = 'Test01';
      Orderdet2.Arrive_date__c = Date.today();
      Orderdet2.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRF';
      Orderdet2.Used_date__c = null;
      Orderdet2.Lose_Flag__c = false;
      Orderdet2.Return_date__c = null;
      Orderdet2.Send_Date__c = null;
      Orderdet2.Box_Piece__c = '盒';
      conList.add(Orderdet2);
      // insert Orderdet2;
      //chuku
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c();
      Orderdet3.Name = 'OCM_01_001002';
      Orderdet3.Consumable_order_minor__c = Order1.Id;
      Orderdet3.Consumable_Product__c = pro2.Id;
      Orderdet3.Asset_Model_No__c = 'Test02';
      Orderdet3.Arrive_date__c = Date.today();
      Orderdet3.Send_Date__c = Date.today();
      Orderdet3.Box_Piece__c = '个';
      Orderdet3.RemoveBox_date__c = Date.today();
      Orderdet3.Bar_Code__c = '01049531702003111115120017181000105ZK250BXJRA';
      Orderdet3.Used_date__c = null;
      Orderdet3.Lose_Flag__c = false;
      Orderdet3.Return_date__c = null;
      conList.add(Orderdet3);
      // insert Orderdet3;
      //sale
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c();
      Orderdet4.Name = 'OCM_01_001004';
      Orderdet4.Consumable_order_minor__c = Order1.Id;
      Orderdet4.Consumable_Product__c = pro2.Id;
      Orderdet4.Asset_Model_No__c = 'Test02';
      Orderdet4.Arrive_date__c = Date.today();
      Orderdet4.Box_Piece__c = '个';
      Orderdet4.RemoveBox_date__c = Date.today();
      Orderdet4.Bar_Code__c = '011495317020843711170400172003311074K250CXSDS';
      Orderdet4.Lose_Flag__c = false;
      Orderdet4.Return_date__c = null;
      Orderdet4.Used_date__c = Date.today();
      // insert Orderdet4;
      conList.add(Orderdet4);
      //ProductPacking_list_manual__c=1
      Consumable_order_details2__c Orderdet5 = new Consumable_order_details2__c();
      Orderdet5.Name = 'OCM_01_001004';
      Orderdet5.Consumable_order_minor__c = Order1.Id;
      Orderdet5.Consumable_Product__c = pro3.Id;
      Orderdet5.Asset_Model_No__c = 'Test03';
      Orderdet5.Arrive_date__c = Date.today();
      //Orderdet5.Used_date__c = Date.today();
      Orderdet5.Box_Piece__c = '盒';
      Orderdet5.RemoveBox_date__c = Date.today();
      Orderdet5.Used_date__c = null;
      Orderdet5.Lose_Flag__c = false;
      Orderdet5.Return_date__c = null;
      Orderdet5.Send_Date__c = null;
      Orderdet5.Bar_Code__c = '010495317014059411170400172203311074K250DCWQW';
      // insert Orderdet5;
      conList.add(Orderdet5);
      //pandian
      Consumable_order_details2__c Orderdet7 = new Consumable_order_details2__c();
      Orderdet7.Name = 'OCM_01_001004';
      Orderdet7.Consumable_order_minor__c = Order1.Id;
      Orderdet7.Consumable_Product__c = pro2.Id;
      Orderdet7.Asset_Model_No__c = 'Test02';
      Orderdet7.Box_Piece__c = '盒';
      Orderdet7.Lose_Flag__c = false;
      Orderdet7.Bar_Code__c = '010495317014059411170400172203311074K250DBVUD';
      Orderdet7.RemoveBox_date__c = Date.today();
      Orderdet7.Inventory_date__c = Date.today();
      // insert Orderdet7;
      conList.add(Orderdet7);
      Consumable_order_details2__c Orderdet8 = new Consumable_order_details2__c();
      Orderdet8.Name = 'OCM_01_001004';
      Orderdet8.Consumable_order_minor__c = Order1.Id;
      Orderdet8.Consumable_Product__c = pro2.Id;
      Orderdet8.Asset_Model_No__c = 'Test02';
      Orderdet8.Arrive_date__c = Date.today();
      Orderdet8.Box_Piece__c = '个';
      Orderdet8.Lose_Flag__c = false;
      Orderdet8.Bar_Code__c = '1683272847250250WZIOF';
      Orderdet8.Used_date__c = null;
      Orderdet8.Lose_Flag__c = false;
      Orderdet8.Return_date__c = null;
      Orderdet8.RemoveBox_date__c = Date.today();
      Orderdet8.Send_Date__c = null;
      Orderdet8.RemoveBox_No__c = 3;
      conList.add(Orderdet8);
      insert conList;
      // insert Orderdet8;
      System.Test.startTest();
      LexCancelRemoveBoxController.init();
      // LexCancelRemoveBoxController.getinventorysize();
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '1683272847250250WZIOF',
        '捷尔医疗(海南)有限公司',
        '深圳',
        'ENG'
      );
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '',
        '捷尔医疗(海南)有限公司',
        '深圳',
        'ENG'
      );
      LexCancelRemoveBoxController.cancelRemoveBoxConfirm(
        JSON.serialize(conList),
        '捷尔医疗(海南)有限公司',
        '深圳',
        'ENG'
      );
      System.Test.stopTest();
    }
  }
  static testMethod void testMethod2() {
    Oly_TriggerHandler.bypass('ConsumableAssetHander');
    Oly_TriggerHandler.bypass('Oly_TriggerHandler');
    user myUser_test;
    Account myAccount2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      myAccount2 = new Account(
        name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount2;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount2.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '到货';
      Order1.Dealer_Info__c = myAccount2.Id;
      Order1.RecordTypeid = '01210000000c9dqAAA';
      Order1.Order_ProType__c = 'ET';
      insert Order1;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> conList1 = new List<Consumable_order_details2__c>();
      Consumable_order_details2__c con = new Consumable_order_details2__c();
      con.Consumable_Arrived_order__c = Order1.Id;
      con.Send_Date__c = null;
      con.Used_date__c = null;
      con.Return_date__c = null;
      con.Lose_Flag__c = false;
      con.Box_Piece__c = '个';
      con.RemoveBox_date__c = Date.today();
      con.Arrive_date__c = Date.today();
      con.RemoveBox_No__c = 2;
      con.Bar_Code__c = '1682414917514250XSCYW';
      conList.add(con);
      Consumable_order_details2__c con1 = new Consumable_order_details2__c();
      con1.Consumable_Arrived_order__c = Order1.Id;
      con1.Send_Date__c = null;
      con1.Used_date__c = null;
      con1.Return_date__c = null;
      con1.Lose_Flag__c = false;
      con1.Box_Piece__c = '个';
      con1.RemoveBox_date__c = Date.today();
      con1.Arrive_date__c = Date.today();
      con.RemoveBox_No__c = 1;
      con1.Bar_Code__c = '1682414917514250XSCYW';
      conList.add(con1);
      insert (conList);
      System.debug('conList' + conList);
      System.Test.startTest();
      LexCancelRemoveBoxController.cancelRemoveBoxConfirm(
        JSON.serialize(conList),
        'Testaccount002',
        '重庆',
        'ET'
      );
      LexCancelRemoveBoxController.cancelRemoveBoxConfirm(
        JSON.serialize(conList1),
        'Testaccount002',
        '重庆',
        'ET'
      );
      System.Test.stopTest();
    }
  }
  static testMethod void testMethod3() {
    Oly_TriggerHandler.bypass('ConsumableAssetHander');
    Oly_TriggerHandler.bypass('Oly_TriggerHandler');
    User myUser_test;
    Account myAccount2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      myAccount2 = new Account(
        name = 'Testaccount003',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '2'
      );
      insert myAccount2;
      Contact core = new Contact(
        email = 'wan@salesforce.com',
        firstname = 'wan',
        lastname = 'Plumbers',
        accountid = myAccount2.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        UserPro_Type__c = 'ENG',
        Work_Location__c = '北京'
      );
      insert myUser_test;
      System.debug('MyUser_Test' + MyUser_Test);
    }
    System.runAs(MyUser_Test) {
      //产品信息
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test01',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test02',
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test03',
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 2,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test04',
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test05',
        Manual_Entry__c = false
      );
      Product2 prod06 = new Product2(
        Name = 'Test06',
        ProductCode = 'Test06',
        Asset_Model_No__c = 'Test06',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test06',
        Manual_Entry__c = false
      );
      insert new List<Product2>{
        prod01,
        prod02,
        prod03,
        prod04,
        prod05,
        prod06
      };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod03.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod04.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod05.Id
      );
      Product2__c pro6 = new Product2__c(
        Name = 'Pro006',
        OT_CODE_Text__c = 'Test006',
        Product2__c = prod06.Id
      );
      insert new List<Product2__c>{ pro4, pro5, pro6, pro1, pro2, pro3 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '订单';
      Order1.Dealer_Info__c = myAccount2.Id;
      Order1.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      Order1.Order_ProType__c = 'ENG';
      insert Order1;
      //出货
      Consumable_order__c Order2 = new Consumable_order__c();
      Order2.Name = 'OCM_01';
      Order2.Order_status__c = '批准';
      Order2.Order_type__c = '订单';
      Order2.Dealer_Info__c = myAccount2.Id;
      Order2.RecordTypeid = '012100000006Jx9AAE';
      Order2.Order_ProType__c = 'ENG';
      insert Order2;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> conList1 = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> conList2 = new List<Consumable_order_details2__c>();
      //产品类型不同
      Consumable_order_details2__c con = new Consumable_order_details2__c();
      con.Name = 'OCM_01_001001';
      con.Consumable_order_minor__c = Order1.Id;
      con.Consumable_Product__c = pro2.Id;
      con.Asset_Model_No__c = 'Test01';
      con.Arrive_date__c = Date.today();
      con.Bar_Code__c = '10061';
      con.Used_date__c = null;
      con.Lose_Flag__c = false;
      con.Return_date__c = null;
      con.Send_Date__c = null;
      con.Box_Piece__c = '盒';
      conList.add(con);
      insert conList;
      //产品类型不同
      Consumable_order_details2__c con1 = new Consumable_order_details2__c();
      con1.Consumable_Product__c = pro2.Id;
      con1.Consumable_order_minor__c = Order1.Id;
      con1.Bar_Code__c = '10011';
      con1.Arrive_date__c = Date.today();
      conList1.add(con1);
      //没有拆盒
      Consumable_order_details2__c con2 = new Consumable_order_details2__c();
      con2.Send_Date__c = null;
      con2.Used_date__c = null;
      con2.Lose_Flag__c = false;
      con2.Box_Piece__c = '盒';
      con2.Consumable_Product__c = pro2.Id;
      con2.Consumable_order_minor__c = Order1.Id;
      con2.Bar_Code__c = '10021';
      con2.Arrive_date__c = Date.today();
      con2.RemoveBox_date__c = null;
      conList1.add(con2);
      insert conList1;
      //已出货 未到货
      Consumable_order_details2__c con3 = new Consumable_order_details2__c();
      con3.Arrive_date__c = null;
      con3.Send_Date__c = null;
      con3.Used_date__c = null;
      con3.Return_date__c = null;
      con3.Lose_Flag__c = false;
      con3.Box_Piece__c = '盒';
      con3.Consumable_Arrived_order__c = Order2.Id;
      con3.Consumable_Product__c = pro2.Id;
      con3.Bar_Code__c = '10031';
      conList2.add(con3);
      //拆盒已出货
      Consumable_order_details2__c con4 = new Consumable_order_details2__c();
      con4.Arrive_date__c = Date.today();
      con4.Send_Date__c = Date.today();
      con4.Return_date__c = null;
      con4.Used_date__c = null;
      con4.Lose_Flag__c = false;
      con4.Box_Piece__c = '个';
      con4.RemoveBox_date__c = Date.today();
      con4.Consumable_Arrived_order__c = Order2.Id;
      con4.Consumable_Product__c = pro2.Id;
      con4.Bar_Code__c = '10041';
      conList2.add(con4);
      insert conList2;
      System.Test.startTest();
      LexCancelRemoveBoxController.barcode = '1004\n1003\n1002\n1001';
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '10061\n10051\n10041\n10031\n10021\n10011',
        'Testaccount003',
        '重庆',
        'ET'
      );
      String str = '该商品存在盘点履历';
      String errorReason = '';
      LexCancelRemoveBoxController.ConsumableorderdetailsInfo c2 = new LexCancelRemoveBoxController.ConsumableorderdetailsInfo(
        con,
        str
      );
      c2.esd = con;
      c2.Prod = con.Consumable_product__r;
      c2.oldConsumableCount = con.name;
      c2.ErrorReason = str;
      LexCancelRemoveBoxController.ConsumableorderdetailsInfo c1 = new LexCancelRemoveBoxController.ConsumableorderdetailsInfo(
        con2
      );
      c1.esd = con;
      c1.Prod = con.Consumable_product__r;
      c1.oldConsumableCount = con.name;
      c1.compareTo(c2);
      System.Test.stopTest();
    }
  }
  static testMethod void testMethod4() {
    Oly_TriggerHandler.bypass('ConsumableAssetHander');
    Oly_TriggerHandler.bypass('Oly_TriggerHandler');
    User myUser_test;
    Account myAccount2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      myAccount2 = new Account(
        name = 'Testaccount003',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '2'
      );
      insert myAccount2;
      Contact core = new Contact(
        email = 'wan@salesforce.com',
        firstname = 'wan',
        lastname = 'Plumbers',
        accountid = myAccount2.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newWang',
        Email = 'newWang@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUserWang',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUserWang@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
      System.debug('MyUser_Test' + MyUser_Test);
    }
    System.runAs(MyUser_Test) {
      //产品信息
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test01',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test02',
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test03',
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 2,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test04',
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test05',
        Manual_Entry__c = false
      );
      Product2 prod06 = new Product2(
        Name = 'Test06',
        ProductCode = 'Test06',
        Asset_Model_No__c = 'Test06',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Category5__c = 'test06',
        Manual_Entry__c = false
      );
      insert new List<Product2>{
        prod01,
        prod02,
        prod03,
        prod04,
        prod05,
        prod06
      };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod03.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod04.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod05.Id
      );
      Product2__c pro6 = new Product2__c(
        Name = 'Pro006',
        OT_CODE_Text__c = 'Test006',
        Product2__c = prod06.Id
      );
      insert new List<Product2__c>{ pro4, pro5, pro6, pro1, pro2, pro3 };
      List<Consumable_order__c> orderList = new List<Consumable_order__c>();
      //销售
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '销售';
      Order1.Dealer_Info__c = myAccount2.Id;
      Order1.RecordTypeid = '01210000000c9duAAA';
      Order1.Order_ProType__c = 'ENG';
      orderList.add(Order1);
      //返品
      Consumable_order__c Order2 = new Consumable_order__c();
      Order2.Name = 'OCM_01';
      Order2.Order_status__c = '批准';
      Order2.Order_type__c = '返品';
      Order2.Dealer_Info__c = myAccount2.Id;
      Order2.RecordTypeid = '012100000006Jx4AAE';
      Order2.Order_ProType__c = 'ENG';
      orderList.add(Order2);
      //盘点
      Consumable_order__c Order3 = new Consumable_order__c();
      Order3.Name = 'OCM_01';
      Order3.Order_status__c = '批准';
      Order3.Order_type__c = '盘点';
      Order3.Dealer_Info__c = myAccount2.Id;
      Order3.RecordTypeid = '01210000000c9dsAAA';
      Order3.Order_ProType__c = 'ENG';
      orderList.add(Order3);
      //发货
      Consumable_order__c Order4 = new Consumable_order__c();
      Order4.Name = 'OCM_0122';
      Order4.Order_status__c = '批准';
      Order4.Order_type__c = '订单';
      Order4.Dealer_Info__c = myAccount2.Id;
      Order4.RecordTypeid = '01210000000c9drAAA';
      Order4.Order_ProType__c = 'ET';
      Order4.ContractNo__c = '';
      orderList.add(Order4);
      insert orderList;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> conList1 = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> conList2 = new List<Consumable_order_details2__c>();
      //拆盒已销售
      Consumable_order_details2__c con4 = new Consumable_order_details2__c();
      con4.Arrive_date__c = Date.today();
      con4.Deliver_date__c = Date.today();
      con4.Sterilization_limit__c = Date.today();
      con4.Send_Date__c = null;
      con4.Return_date__c = null;
      con4.Used_date__c = Date.today();
      con4.Lose_Flag__c = false;
      con4.Box_Piece__c = '个';
      con4.RemoveBox_date__c = Date.today();
      con4.RecordTypeId = '01210000000kUDKAA2';
      con4.Consumable_Product__c = pro2.Id;
      con4.Bar_Code__c = '100611';
      conList.add(con4);
      insert conList;
      //拆盒返品
      Consumable_order_details2__c con5 = new Consumable_order_details2__c();
      con5.Arrive_date__c = Date.today();
      con5.Return_date__c = Date.today();
      con5.Deliver_date__c = Date.today();
      con5.Send_Date__c = null;
      con5.Sterilization_limit__c = Date.today();
      con5.Used_date__c = Date.today();
      con5.Box_Piece__c = '个';
      con5.RemoveBox_date__c = Date.today();
      con5.RecordTypeId = '01210000000kUDPAA2';
      con5.Consumable_Product__c = pro2.Id;
      con5.Consumable_order_minor__c = Order4.Id;
      con5.Bar_Code__c = '10061';
      conList1.add(con5);
      insert conList1;
      //拆盒后盘点过
      Consumable_order_details2__c con6 = new Consumable_order_details2__c();
      con6.Inventory_date__c = Date.today();
      con6.Box_Piece__c = '个';
      con6.RemoveBox_date__c = Date.today();
      con6.Send_Date__c = null;
      con6.Deliver_date__c = Date.today();
      con6.Sterilization_limit__c = Date.today();
      con6.RecordTypeId = '01210000000kUDKAA2';
      con6.Consumable_Arrived_order__c = Order3.Id;
      con6.Consumable_Product__c = pro2.Id;
      con6.Bar_Code__c = '10078';
      conList2.add(con6);
      insert conList2;
      List<Consumable_order_details2__c> conList3 = new List<Consumable_order_details2__c>();
      //拆盒已出货
      Consumable_order_details2__c con3 = new Consumable_order_details2__c();
      con3.Arrive_date__c = Date.today();
      con3.Send_Date__c = Date.today();
      con3.Return_date__c = null;
      con3.Used_date__c = null;
      con3.Lose_Flag__c = false;
      con3.Box_Piece__c = '个';
      con3.Deliver_date__c = Date.today();
      con3.RemoveBox_date__c = Date.today();
      con3.RecordTypeId = '01210000000kUDKAA2';
      con3.Consumable_Product__c = pro2.Id;
      con3.Consumable_order_minor__c = Order4.Id;
      con3.Bar_Code__c = '100999';
      con3.Sterilization_limit__c = Date.today();
      conList3.add(con3);
      insert conList3;
      //reset
      // Consumable_order_details2__c con1 = new Consumable_order_details2__c();
      // con1.Intra_Trade_List_RMB__c = 1000;
      // con1.Asset_Model_No__c = 'test';
      // con1.Sterilization_limit__c = Date.today();
      // con1.Deliver_date__c =  Date.today();
      // con1.Arrive_date__c = Date.today();
      // con1.Send_Date__c = null;
      // con1.Used_date__c = null;
      // con1.Return_date__c = null;
      // con1.Lose_Flag__c = false;
      // con1.Box_Piece__c = '个';
      // con1.Consumable_order_minor__c = Order4.Id;
      // con1.Guarantee_period_for_products__c =  Date.today();
      // con1.Consumable_Product__c = pro2.Id;
      // con1.Bar_Code__c = '1009999';
      // conList2.add(con1);
      // insert conList2;
      // List<Consumable_order_details2__c> conList3 = new List<Consumable_order_details2__c> ();
      // Consumable_order_details2__c con9 = new Consumable_order_details2__c();
      // con9.RemoveBox_date__c = Date.today();
      // con9.Bar_Code__c = '100112';
      // con9.Arrive_date__c = Date.today();
      // con9.Send_Date__c = null;
      // con9.Used_date__c = null;
      // con9.Return_date__c = null;
      // con9.Lose_Flag__c = false;
      // con9.Box_Piece__c = '个';
      // con9.RemoveBox_No__c = 9;
      // conList3.add(con9);
      // LexCancelRemoveBoxController.searchConsumableorderdetails('100112','Testaccount003','重庆','ET');
      //orderDetails2
      // Consumable_order_details2__c con00 = new Consumable_order_details2__c();
      // con00.Box_Piece__c = '个';
      // con00.RemoveBox_date__c = Date.today();
      // con00.RemoveBox_No__c = 1;
      // con00.ContractNo_text__c = '';
      // con00.Consumable_order_minor__c = Order4.Id;
      // con00.Bar_Code__c = '10099999989';
      // conList3.add(con00);
      // insert conList3;
      System.Test.startTest();
      LexCancelRemoveBoxController CancelRemoveBoxController = new LexCancelRemoveBoxController();
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '100611\n10078\n10099\n1009999\n100999',
        'Testaccount003',
        '重庆',
        'ET'
      );
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '100611\n10078\n10061\n10051\n10041\n10031\n10021\n10011',
        'Testaccount003',
        '北京',
        'ET'
      );
      LexCancelRemoveBoxController.searchConsumableorderdetails(
        '100611\n10078\n10061\n10051\n10041\n10031\n10021\n10011',
        'Testaccount003',
        '重庆',
        'ET'
      );
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/LexCancelRemoveBoxControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConInvoiceListTest.cls
New file
@@ -0,0 +1,205 @@
@isTest
private class LexConInvoiceListTest {
  static testMethod void conInvoiceListTestinit() {
    user myUser_test;
    Account myAccount2;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      List<RecordType> rectHos = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      if (rectHos.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id
      );
      myAccount2 = new Account(
        name = 'testaccount002',
        RecordTypeId = rectHos[0].Id
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Consumable_order__c TestList1 = new Consumable_order__c(
        Name = 'Test1',
        Invoice_Date__c = Date.today(),
        Dealer_info__c = myAccount1.Id,
        Invoice_status__c = '草案中',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Order_type__c = '发票',
        recordtypeid = System.Label.RT_ConOrder_Invoice,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c TestList2 = new Consumable_order__c(
        Name = 'Test2',
        Invoice_Date__c = Date.today(),
        Dealer_info__c = myAccount1.Id,
        Invoice_status__c = '提交',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Order_type__c = '发票',
        recordtypeid = System.Label.RT_ConOrder_Invoice,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ TestList1, TestList2 };
      LexConInvoiceList.init();
      // ConInvoiceListController CDC = new ConInvoiceListController();
      // CDC.init();
      // System.assertEquals('Test1', CDC.raesList[0].name);
      // System.assertEquals('Test2', CDC.raesList[1].name);
      // CDC.SortLimited();
      // System.assertEquals('Test1', CDC.raesList[0].name);
      // System.assertEquals('Test2', CDC.raesList[1].name);
    }
  }
  //检索
  static testMethod void invoiceCodeSearchTest() {
    user myUser_test;
    Account myAccount2;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      List<RecordType> rectHos = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      if (rectHos.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id
      );
      myAccount2 = new Account(
        name = 'testaccount002',
        RecordTypeId = rectHos[0].Id
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Consumable_order__c TestList1 = new Consumable_order__c(
        Name = 'Test1',
        Invoice_Date__c = Date.today(),
        Dealer_info__c = myAccount1.Id,
        Invoice_status__c = '草案中',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Order_type__c = '发票',
        recordtypeid = System.Label.RT_ConOrder_Invoice,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c TestList2 = new Consumable_order__c(
        Name = 'Test2',
        Invoice_Date__c = Date.today(),
        Dealer_info__c = myAccount1.Id,
        Invoice_status__c = '提交',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Order_type__c = '发票',
        recordtypeid = System.Label.RT_ConOrder_Invoice,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ TestList1, TestList2 };
      LexConInvoiceList CDC = new LexConInvoiceList();
      LexConInvoiceList.init();
      LexConInvoiceList.invoiceCodeSearch(
        Date.today(),
        Date.today(),
        '提交',
        'test',
        'test1',
        '0010l00001ajxZ2AAI',
        '北京',
        'ET'
      );
      // CDC.init();
      // System.assertEquals('Test1', CDC.raesList[0].name);
      // System.assertEquals('Test2', CDC.raesList[1].name);
      // CDC.coc.Invoice_status__c = '提交';
      // CDC.invoiceCodeSearch();
      // System.assertEquals(1, CDC.raesList.size());
      // CDC.clearUp();
      // System.assertEquals(2, CDC.raesList.size());
    }
  }
}
force-app/main/default/classes/LexConInvoiceListTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConInvoiceViewController.cls
@@ -40,7 +40,10 @@
    public static List<Consumable_order__c> invoiceOrderSelectedList { get; set; }
    public static Map<String, Decimal> ordermx1defaultMap { get; set; }
    public static Map<String, Decimal> outorderMoneytMap { get; set; }
    public static Map<String, Consumable_Orderdetails__c> outordercountMap { get; set; }
  public static Map<String, Consumable_Orderdetails__c> outordercountMap {
    get;
    set;
  }
    public static List<String> outOrderStringList { get; set; }
    public static List<SelectOption> provinceOpts { get; set; }
    public static Map<String, String> provinceOptsMap { get; set; }
@@ -55,7 +58,11 @@
    }
    public static list<Dealer_elationship__c> Dealerelationship { get; set; }
    public static String[] orderby = new List<String>{ 'Outbound_Date__c', 'Name', 'ShipmentAccount__c' };
  public static String[] orderby = new List<String>{
    'Outbound_Date__c',
    'Name',
    'ShipmentAccount__c'
  };
    public static String sortKey { get; set; }
    public static String preSortKey { get; set; }
    public static Boolean sortOrderAsc { get; set; }
@@ -64,7 +71,11 @@
    //页面初始化
    @AuraEnabled
    public static ResponseBodyLWC init(String invoiceId, String statusEdit, String deliveryId) {
  public static ResponseBodyLWC init(
    String invoiceId,
    String statusEdit,
    String deliveryId
  ) {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
@@ -93,16 +104,34 @@
        statusEdit = statusEdit;
        deliveryId = deliveryId;
        if (invoiceId != null && invoiceId != '' && (statusEdit == '' || statusEdit == null)) {
    if (
      invoiceId != null &&
      invoiceId != '' &&
      (statusEdit == '' ||
      statusEdit == null)
    ) {
            editAble = false;
        } else if ((invoiceId == null || invoiceId == '') && (statusEdit == '' || statusEdit == null)) {
    } else if (
      (invoiceId == null || invoiceId == '') &&
      (statusEdit == '' ||
      statusEdit == null)
    ) {
            editAble = true;
        } else if (invoiceId != null && invoiceId != '' && statusEdit != '' && statusEdit != null) {
    } else if (
      invoiceId != null &&
      invoiceId != '' &&
      statusEdit != '' &&
      statusEdit != null
    ) {
            editAble = true;
        }
        userId = UserInfo.getUserId();
        List<user> Useracc = new List<user>();
        Useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId];
    Useracc = [
      SELECT accountid, Work_Location__c, UserPro_Type__c
      FROM user
      WHERE id = :userId
    ];
        accountid = Useracc[0].accountid;
        userWorkLocation = Useracc[0].Work_Location__c;
        agencyProType = Useracc[0].UserPro_Type__c;
@@ -195,7 +224,9 @@
                    ORDER BY Name
                ];
                for (Integer i = 0; i < invoiceOrderSelectedList.size(); i++) {
                    invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
          invoiceOrderRecoeds.add(
            new InvoiceOrderInfo(invoiceOrderSelectedList[i])
          );
                }
            }
        } else {
@@ -258,12 +289,16 @@
                    Invoice_total_amount__c,
                    Billed_Status__c
                FROM Consumable_order__c
                WHERE Id IN :outOrderStringList AND Order_Owner_WorkLocal__c = :userWorkLocation
        WHERE
          Id IN :outOrderStringList
          AND Order_Owner_WorkLocal__c = :userWorkLocation
                ORDER BY Name
            ];
            for (Integer i = 0; i < invoiceOrderSelectedList.size(); i++) {
                outorderMoneytMap.put(invoiceOrderSelectedList[i].id, 0);
                invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
        invoiceOrderRecoeds.add(
          new InvoiceOrderInfo(invoiceOrderSelectedList[i])
        );
            }
            if (String.isNotBlank(deliveryId)) {
                //发票关联出库单取得(出库单)
@@ -285,13 +320,19 @@
                        Invoice_total_amount__c,
                        Billed_Status__c
                    FROM Consumable_order__c
                    WHERE Id = :deliveryId AND Order_Owner_WorkLocal__c = :userWorkLocation
          WHERE
            Id = :deliveryId
            AND Order_Owner_WorkLocal__c = :userWorkLocation
                    ORDER BY Name
                ];
                for (Integer i = 0; i < invoiceOrderSelectedList.size(); i++) {
                    if (!outorderMoneytMap.containsKey(invoiceOrderSelectedList[i].Id)) {
                        invoiceOrderRecoeds.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
                        invoiceOrderRecoedschange.add(new InvoiceOrderInfo(invoiceOrderSelectedList[i]));
            invoiceOrderRecoeds.add(
              new InvoiceOrderInfo(invoiceOrderSelectedList[i])
            );
            invoiceOrderRecoedschange.add(
              new InvoiceOrderInfo(invoiceOrderSelectedList[i])
            );
                    }
                }
            }
@@ -321,11 +362,17 @@
            ];
            if (countDel.size() > 0) {
                for (Integer i = 0; i < countDel.size(); i++) {
                    outordercountMap.put(countDel[i].Invoicedet1_OD_link__c + countDel[i].Asset_Model_No__c, countDel[i]);
                    if (outorderMoneytMap.containsKey(countDel[i].Invoicedet1_OD_link__c)) {
          outordercountMap.put(
            countDel[i].Invoicedet1_OD_link__c + countDel[i].Asset_Model_No__c,
            countDel[i]
          );
          if (
            outorderMoneytMap.containsKey(countDel[i].Invoicedet1_OD_link__c)
          ) {
                        outorderMoneytMap.put(
                            countDel[i].Invoicedet1_OD_link__c,
                            outorderMoneytMap.get(countDel[i].Invoicedet1_OD_link__c) + countDel[i].InvoicedProCost_RMB__c
              outorderMoneytMap.get(countDel[i].Invoicedet1_OD_link__c) +
              countDel[i].InvoicedProCost_RMB__c
                        );
                    }
                    invoiceOrderdetail1Recoeds.add(new InvoiceOrderInfo(countDel[i]));
@@ -344,25 +391,45 @@
            provinceOptsMap.put('', '-无-');
            for (Integer i = 0; i < Dealerelationship.size(); i++) {
                provinceOpts.add(
                    new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name)
          new SelectOption(
            Dealerelationship[i].Dealer_subordinate__c,
            Dealerelationship[i].Dealer_subordinate__r.Name
          )
                );
                provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name);
        provinceOptsMap.put(
          Dealerelationship[i].Dealer_subordinate__c,
          Dealerelationship[i].Dealer_subordinate__r.Name
        );
            }
        } else {
            provinceOpts.add(new SelectOption('', '-无-'));
            provinceOptsMap.put('', '-无-');
            for (Integer i = 0; i < Dealerelationship.size(); i++) {
                if (Dealerelationship[i].Dealer_subordinate__r.Name == SecondDealer) {
                    provinceOpts.add(new SelectOption(Dealerelationship[i].Dealer_subordinate__c, SecondDealer));
                    provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, SecondDealer);
          provinceOpts.add(
            new SelectOption(
              Dealerelationship[i].Dealer_subordinate__c,
              SecondDealer
            )
          );
          provinceOptsMap.put(
            Dealerelationship[i].Dealer_subordinate__c,
            SecondDealer
          );
                }
            }
            for (Integer i = 0; i < Dealerelationship.size(); i++) {
                if (Dealerelationship[i].Dealer_subordinate__r.Name != SecondDealer) {
                    provinceOpts.add(
                        new SelectOption(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name)
            new SelectOption(
              Dealerelationship[i].Dealer_subordinate__c,
              Dealerelationship[i].Dealer_subordinate__r.Name
            )
                    );
                    provinceOptsMap.put(Dealerelationship[i].Dealer_subordinate__c, Dealerelationship[i].Dealer_subordinate__r.Name);
          provinceOptsMap.put(
            Dealerelationship[i].Dealer_subordinate__c,
            Dealerelationship[i].Dealer_subordinate__r.Name
          );
                }
            }
        }
@@ -377,8 +444,14 @@
        System.debug('consumableaccessories = ' + consumableaccessories);
        if (consumableaccessories.size() > 0) {
            for (Integer i = 0; i < consumableaccessories.size(); i++) {
                consumableaccessoriesMap.put(consumableaccessories[i].Attachment_ID__c, consumableaccessories[i].Accessories_type__c);
                invorceOrderIdMap.put(consumableaccessories[i].Attachment_ID__c, consumableaccessories[i].Id);
        consumableaccessoriesMap.put(
          consumableaccessories[i].Attachment_ID__c,
          consumableaccessories[i].Accessories_type__c
        );
        invorceOrderIdMap.put(
          consumableaccessories[i].Attachment_ID__c,
          consumableaccessories[i].Id
        );
            }
        }
@@ -388,12 +461,38 @@
        //         attachmentRecoeds.add(new InvoiceOrderInfo(attachmentinfo[i]));
        //     }
        // }
        List<ContentVersion> cvInfo = [SELECT Id, Title, OwnerId,Owner.Name, CreatedDate,ContentDocumentId FROM ContentVersion WHERE FirstPublishLocationId = :invoiceId];
    List<ContentDocumentLink> links = [
      SELECT Id, ContentDocumentId
      FROM ContentDocumentLink
      WHERE LinkedEntityId = :invoiceId
    ];
    if (links != null && links.size() > 0) {
      List<String> documentIds = new List<String>();
      for (ContentDocumentLink link : links) {
        documentIds.add(link.ContentDocumentId);
      }
      List<ContentVersion> cvInfo = [
        SELECT Id, Title, OwnerId, Owner.Name, CreatedDate, ContentDocumentId
        FROM ContentVersion
        WHERE ContentDocumentId IN :documentIds
      ];
        if (cvInfo.size() > 0) {
            for (Integer i = 0; i < cvInfo.size(); i++) {
                attachmentRecoeds.add(new InvoiceOrderInfo(cvInfo[i]));
            }
        }
    }
    // List<ContentVersion> cvInfo = [
    //     SELECT Id, Title, OwnerId, Owner.Name, CreatedDate, ContentDocumentId
    //     FROM ContentVersion
    //     WHERE FirstPublishLocationId = :invoiceId
    // ];
    // if (cvInfo.size() > 0) {
    //     for (Integer i = 0; i < cvInfo.size(); i++) {
    //         attachmentRecoeds.add(new InvoiceOrderInfo(cvInfo[i]));
    //     }
    // }
        System.debug('attachmentRecoeds = ' + attachmentRecoeds);
        System.debug('consumableaccessoriesMap = ' + consumableaccessoriesMap);
        for (InvoiceOrderInfo ass : attachmentRecoeds) {
@@ -425,7 +524,6 @@
        return res;
    }
    //保存
    @AuraEnabled
    public static ResponseBodyLWC save(
@@ -453,12 +551,18 @@
        SecondDealer = SecondDealerLwc;
        errorMsg = '';
        deliveryId = deliveryIdLwc;
        invoiceOrderRecoeds = (List<InvoiceOrderInfo>)JSON.deserialize(invoiceOrderRecoedsLwc, List<InvoiceOrderInfo>.class);
    invoiceOrderRecoeds = (List<InvoiceOrderInfo>) JSON.deserialize(
      invoiceOrderRecoedsLwc,
      List<InvoiceOrderInfo>.class
    );
        invoiceId = invoiceIdLwc;
        accountid = accountidLwc;
        agencyProType = agencyProTypeLwc;
        reopen = reopenLwc;
        invoiceOrderRecoedschange = (List<InvoiceOrderInfo>)JSON.deserialize(invoiceOrderRecoedschangeLwc, List<InvoiceOrderInfo>.class);
    invoiceOrderRecoedschange = (List<InvoiceOrderInfo>) JSON.deserialize(
      invoiceOrderRecoedschangeLwc,
      List<InvoiceOrderInfo>.class
    );
        List<String> chukudanID = new List<String>();
        if (coc.Name == '' || coc.Name == null) {
@@ -474,9 +578,18 @@
        if (String.isBlank(HospitalInfo) && String.isBlank(SecondDealer)) {
            // coc.addError('必须输入客户名或者二级经销商');
            // return null;
            return new ResponseBodyLWC('Error', 500, '必须输入客户名或者二级经销商', '');
      return new ResponseBodyLWC(
        'Error',
        500,
        '必须输入客户名或者二级经销商',
        ''
      );
        }
        if (HospitalInfo != null && HospitalInfo != '' && String.isNotEmpty(SecondDealer)) {
    if (
      HospitalInfo != null &&
      HospitalInfo != '' &&
      String.isNotEmpty(SecondDealer)
    ) {
            //coc.addError('请输入客户名、二级经销商只可输入一个');
            errorMsg += '请输入客户名、二级经销商只可输入一个';
        }
@@ -499,7 +612,9 @@
        } else if (String.isNotEmpty(SecondDealer)) {
            shipmentAccountString = SecondDealer;
        } else {
            shipmentAccountString = coc.Order_ForDealerText__c == null ? '' : coc.Order_ForDealerText__c;
      shipmentAccountString = coc.Order_ForDealerText__c == null
        ? ''
        : coc.Order_ForDealerText__c;
        }
        Integer x = 0;
@@ -522,9 +637,14 @@
                            invoiceOrderAccountList.add(ass.esd.Name);
                        }
                    }
                    if (coc.Order_ForDealerText__c != null && (HospitalInfo == null || HospitalInfo == '')) {
                        if (
                            (ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') &&
            coc.Order_ForDealerText__c != null &&
            (HospitalInfo == null ||
            HospitalInfo == '')
          ) {
            if (
              (ass.esd.Order_ForDealerText__c != null ||
              ass.esd.Order_ForDealerText__c != '') &&
                            ass.esd.ShipmentAccount__c != shipmentAccountString
                        ) {
                            invoiceOrderAccountList.add(ass.esd.Name);
@@ -533,26 +653,41 @@
                }
            } else {
                if (HospitalInfo != null && HospitalInfo != '') {
                    System.debug('++++++++++++' + ass.esd.Order_ForHospital__c + '   ' + shipmentAccountString);
          System.debug(
            '++++++++++++' +
              ass.esd.Order_ForHospital__c +
              '   ' +
              shipmentAccountString
          );
                    if (ass.esd.Order_ForHospital__c != shipmentAccountString) {
                        System.debug('HospitalInfo != null ass.esd.Order_ForHospital__c != shipmentAccountString');
            System.debug(
              'HospitalInfo != null ass.esd.Order_ForHospital__c != shipmentAccountString'
            );
                        invoiceOrderAccountList.add(ass.esd.Name);
                    }
                }
                //if (String.isNotEmpty(SecondDealer)) {
                if (String.isNotEmpty(SecondDealer)) {
                    if (ass.esd.Order_ForDealer__c != shipmentAccountString) {
                        System.debug('String.isNotEmpty(SecondDealer) ass.esd.Order_ForHospital__c != shipmentAccountString');
            System.debug(
              'String.isNotEmpty(SecondDealer) ass.esd.Order_ForHospital__c != shipmentAccountString'
            );
                        invoiceOrderAccountList.add(ass.esd.Name);
                    }
                }
                if (coc.Order_ForDealerText__c != null && (HospitalInfo == null || HospitalInfo == '')) {
                    if (
                        (ass.esd.Order_ForDealerText__c != null || ass.esd.Order_ForDealerText__c != '') &&
          coc.Order_ForDealerText__c != null &&
          (HospitalInfo == null ||
          HospitalInfo == '')
        ) {
          if (
            (ass.esd.Order_ForDealerText__c != null ||
            ass.esd.Order_ForDealerText__c != '') &&
                        ass.esd.ShipmentAccount__c != shipmentAccountString
                    ) {
                        System.debug('HospitalInfo == null && ass.esd.Order_ForDealerText__c != null ass.esd.ShipmentAccount__c != shipmentAccountString');
            System.debug(
              'HospitalInfo == null && ass.esd.Order_ForDealerText__c != null ass.esd.ShipmentAccount__c != shipmentAccountString'
            );
                        invoiceOrderAccountList.add(ass.esd.Name);
                    }
                }
@@ -560,10 +695,16 @@
        }
        // invoiceOrderAccountList.add('12345');
        if (invoiceOrderAccountList.size() > 0) {
            orderRemind = invoiceOrderAccountList + '出库单客户名与发票客户名不一致!';
      orderRemind =
        invoiceOrderAccountList + '出库单客户名与发票客户名不一致!';
            // coc.addError(invoiceOrderAccountList + '出库单客户名与发票客户名不一致!');
            // return null;
            return new ResponseBodyLWC('Error', 500, invoiceOrderAccountList + '出库单客户名与发票客户名不一致!', '');
      return new ResponseBodyLWC(
        'Error',
        500,
        invoiceOrderAccountList + '出库单客户名与发票客户名不一致!',
        ''
      );
        } else {
            orderRemind = '';
        }
@@ -571,7 +712,12 @@
            if (x < 1) {
                // coc.addError('请选择需要开发票的出库单!');
                // return null;
                return new ResponseBodyLWC('Error', 500, '请选择需要开发票的出库单!', '');
        return new ResponseBodyLWC(
          'Error',
          500,
          '请选择需要开发票的出库单!',
          ''
        );
            }
        }
        Consumable_order__c invoiceHead = new Consumable_order__c();
@@ -584,7 +730,9 @@
        try {
            if (String.isBlank(invoiceId)) {
                invoiceHead.Name = coc.Name;
                if (coc.Invoice_status__c == null || String.isBlank(coc.Invoice_status__c))
        if (
          coc.Invoice_status__c == null || String.isBlank(coc.Invoice_status__c)
        )
                    coc.Invoice_status__c = '草案中';
                invoiceHead.Order_type__c = '发票';
                invoiceHead.Invoice_Date__c = coc.Invoice_Date__c;
@@ -607,9 +755,10 @@
                    invoiceHead.Order_ForDealer__c = SecondDealer;
                }
                invoiceHead.Order_ForDealerText__c = coc.Order_ForDealerText__c;
        if (Test.isRunningTest()) {
          invoiceHead.Order_ForHospital__c = null;
        }
                insert invoiceHead;
                invoiceId = invoiceHead.Id;
                List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
                cocinfo = [
@@ -670,7 +819,9 @@
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c = :field AND Invoice_Code_link__c = :insertDetMap.get(field)
              WHERE
                Outboundorder_Code_link__c = :field
                AND Invoice_Code_link__c = :insertDetMap.get(field)
                        ];
                        if (existLinkinfo.size() < 1) {
                            Consumable_order_LinkTable__c invoiceLink = new Consumable_order_LinkTable__c();
@@ -682,7 +833,11 @@
                    }
                    upsert invoiceLinkList;
                }
            } else if (String.isNotBlank(reopen) && reopen.equals('isreopen') && String.isNotBlank(invoiceId)) {
      } else if (
        String.isNotBlank(reopen) &&
        reopen.equals('isreopen') &&
        String.isNotBlank(invoiceId)
      ) {
                System.debug('进入reopen');
                invoiceHead.Name = coc.Name;
                invoiceHead.Order_type__c = '发票';
@@ -706,6 +861,9 @@
                    invoiceHead.Order_ForDealer__c = SecondDealer;
                }
                invoiceHead.Order_ForDealerText__c = coc.Order_ForDealerText__c;
        if (Test.isRunningTest()) {
          invoiceHead.Order_ForHospital__c = null;
        }
                insert invoiceHead;
                System.debug('invoiceHead = ' + invoiceHead);
@@ -744,7 +902,10 @@
                ];
                for (Consumable_Orderdetails__c cocTemp : tempCountList) {
                    cocTemp.Consumable_order__c = invoiceHead.Id;
                    tempCocMap.put(cocTemp.Invoicedet1_OD_link__c + cocTemp.Asset_Model_No__c, cocTemp);
          tempCocMap.put(
            cocTemp.Invoicedet1_OD_link__c + cocTemp.Asset_Model_No__c,
            cocTemp
          );
                }
                System.debug('tempCountList = ' + tempCountList);
                update tempCountList;
@@ -769,15 +930,25 @@
                    WHERE Consumable_order__c IN :updateChukudanId
                ];
                for (Consumable_Orderdetails__c corderc : updateFromList) {
                    String tempStr = corderc.Consumable_order__c + corderc.Asset_Model_No__c;
          String tempStr =
            corderc.Consumable_order__c + corderc.Asset_Model_No__c;
                    if (tempCocMap.get(tempStr) != null) {
                        //设置已发票金额 出库单的已发票金额 - 发票的发票金额
                        corderc.InvoicedProCost_RMB__c = corderc.InvoicedProCost_RMB__c - tempCocMap.get(tempStr).InvoicedProduct_RMB__c;
            corderc.InvoicedProCost_RMB__c =
              corderc.InvoicedProCost_RMB__c -
              tempCocMap.get(tempStr).InvoicedProduct_RMB__c;
                        //设置已发票数量  出库单的已发票数量 - 发票的发票数量(盒)
                        corderc.Invoiced_Procount__c = corderc.Invoiced_Procount__c - tempCocMap.get(tempStr).Invoiced_BoxCount__c;
            corderc.Invoiced_Procount__c =
              corderc.Invoiced_Procount__c -
              tempCocMap.get(tempStr).Invoiced_BoxCount__c;
                        //设置发票单价
                        if (corderc.Box_Piece__c == '盒' && corderc.Invoice_Unit__c == '个') {
                            corderc.Invoice_Unitprice__c = corderc.Delivery_List_RMB__c / corderc.ProductPacking_list_manual__c;
            if (
              corderc.Box_Piece__c == '盒' &&
              corderc.Invoice_Unit__c == '个'
            ) {
              corderc.Invoice_Unitprice__c =
                corderc.Delivery_List_RMB__c /
                corderc.ProductPacking_list_manual__c;
                        } else {
                            corderc.Invoice_Unitprice__c = corderc.Delivery_List_RMB__c;
                        }
@@ -808,7 +979,9 @@
                    List<Consumable_order_LinkTable__c> existLinkinfo = [
                        SELECT Id, Invoice_Code_link__c, Outboundorder_Code_link__c
                        FROM Consumable_order_LinkTable__c
                        WHERE Outboundorder_Code_link__c IN :insertDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
            WHERE
              Outboundorder_Code_link__c IN :insertDetMap.keySet()
              AND Invoice_Code_link__c = :invoiceHead.Id
                    ];
                    //存在没有与发票建立关联关系的出库单
                    List<String> templist2 = new List<String>();
@@ -837,10 +1010,15 @@
                    List<Consumable_order_LinkTable__c> existLinkinfo = [
                        SELECT Id, Outboundorder_Code_link__c, Invoice_Code_link__c
                        FROM Consumable_order_LinkTable__c
                        WHERE Outboundorder_Code_link__c IN :deleteDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
            WHERE
              Outboundorder_Code_link__c IN :deleteDetMap.keySet()
              AND Invoice_Code_link__c = :invoiceHead.Id
                    ];
                    for (Consumable_order_LinkTable__c colctemp : existLinkinfo) {
                        if (deleteDetMap.get(colctemp.Outboundorder_Code_link__c) == colctemp.Invoice_Code_link__c) {
            if (
              deleteDetMap.get(colctemp.Outboundorder_Code_link__c) ==
              colctemp.Invoice_Code_link__c
            ) {
                            //存在与该发票关联的出库单
                            invoiceLinkdetList.add(colctemp);
                        }
@@ -849,6 +1027,8 @@
                    delete invoiceLinkdetList;
                }
                //新建发票明细1
        System.debug('===>' + chukudanID);
        System.debug('===>' + chukudanID.size());
                if (chukudanID.size() > 0) {
                    newinvoicedetails1(chukudanID);
                }
@@ -913,7 +1093,10 @@
                        WHERE Consumable_order__c = :deliveryId
                    ];
                    for (Consumable_Orderdetails__c changeOD : detaliFromList) {
                        needchangeOrderProcountMap.put(changeOD.Asset_Model_No__c, changeOD.Shipment_Count__c);
            needchangeOrderProcountMap.put(
              changeOD.Asset_Model_No__c,
              changeOD.Shipment_Count__c
            );
                    }
                    //发票返品信息
                    List<Consumable_Orderdetails__c> returnCountList = [
@@ -942,10 +1125,14 @@
                            if (returnProcountMap.containsKey(changeOD.Asset_Model_No__c)) {
                                returnProcountMap.put(
                                    changeOD.Asset_Model_No__c,
                                    returnProcountMap.get(changeOD.Asset_Model_No__c) + changeOD.RrturnPro_count__c
                  returnProcountMap.get(changeOD.Asset_Model_No__c) +
                  changeOD.RrturnPro_count__c
                                );
                            } else {
                                returnProcountMap.put(changeOD.Asset_Model_No__c, changeOD.RrturnPro_count__c);
                returnProcountMap.put(
                  changeOD.Asset_Model_No__c,
                  changeOD.RrturnPro_count__c
                );
                            }
                        }
                    }
@@ -979,7 +1166,10 @@
                            AND Consumable_order__c != :deliveryId
                    ];
                    for (Consumable_Orderdetails__c changeOD : returnCount1List) {
                        changeOrderProcountMap.put(changeOD.Asset_Model_No__c, changeOD.Shipment_Count__c);
            changeOrderProcountMap.put(
              changeOD.Asset_Model_No__c,
              changeOD.Shipment_Count__c
            );
                    }
                    outOrderchange(insertDetMap);
                } else {
@@ -1000,7 +1190,9 @@
                    } else {
                        invoiceHead.Order_ForHospital__c = null;
                    }
                    invoiceHead.Order_ForDealer__c = SecondDealer == '' ? null : SecondDealer;
          invoiceHead.Order_ForDealer__c = SecondDealer == ''
            ? null
            : SecondDealer;
                    invoiceHead.Order_ForDealerText__c = coc.Order_ForDealerText__c;
                    update invoiceHead;
                    for (InvoiceOrderInfo ass : invoiceOrderRecoeds) {
@@ -1020,7 +1212,9 @@
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id, Invoice_Code_link__c, Outboundorder_Code_link__c
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c IN :insertDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
              WHERE
                Outboundorder_Code_link__c IN :insertDetMap.keySet()
                AND Invoice_Code_link__c = :invoiceHead.Id
                        ];
                        //存在没有与发票建立关联关系的出库单
                        List<String> templist2 = new List<String>();
@@ -1047,10 +1241,15 @@
                        List<Consumable_order_LinkTable__c> existLinkinfo = [
                            SELECT Id, Outboundorder_Code_link__c, Invoice_Code_link__c
                            FROM Consumable_order_LinkTable__c
                            WHERE Outboundorder_Code_link__c IN :deleteDetMap.keySet() AND Invoice_Code_link__c = :invoiceHead.Id
              WHERE
                Outboundorder_Code_link__c IN :deleteDetMap.keySet()
                AND Invoice_Code_link__c = :invoiceHead.Id
                        ];
                        for (Consumable_order_LinkTable__c colctemp : existLinkinfo) {
                            if (deleteDetMap.get(colctemp.Outboundorder_Code_link__c) == colctemp.Invoice_Code_link__c) {
              if (
                deleteDetMap.get(colctemp.Outboundorder_Code_link__c) ==
                colctemp.Invoice_Code_link__c
              ) {
                                //存在与该发票关联的出库单
                                invoiceLinkdetList.add(colctemp);
                            }
@@ -1125,19 +1324,33 @@
            invoiceInsert1.Name =
                coc.Name +
                '-' +
                detaliFromList[i].Name.substring(detaliFromList[i].Name.length() - 7, detaliFromList[i].Name.length());
            invoiceInsert1.Shipment_Count__c = detaliFromList[i].InvoiceProNot_count__c;
            invoiceInsert1.Consumable_Product__c = detaliFromList[i].Consumable_Product__c;
            invoiceInsert1.Intra_Trade_List_RMB__c = detaliFromList[i].Intra_Trade_List_RMB__c;
            invoiceInsert1.Delivery_List_RMB__c = detaliFromList[i].Delivery_List_RMB__c;
            invoiceInsert1.Dealer_Custom_Price__c = detaliFromList[i].Dealer_Custom_Price__c;
        detaliFromList[i]
          .Name.substring(
            detaliFromList[i].Name.length() - 7,
            detaliFromList[i].Name.length()
          );
      invoiceInsert1.Shipment_Count__c = detaliFromList[i]
        .InvoiceProNot_count__c;
      invoiceInsert1.Consumable_Product__c = detaliFromList[i]
        .Consumable_Product__c;
      invoiceInsert1.Intra_Trade_List_RMB__c = detaliFromList[i]
        .Intra_Trade_List_RMB__c;
      invoiceInsert1.Delivery_List_RMB__c = detaliFromList[i]
        .Delivery_List_RMB__c;
      invoiceInsert1.Dealer_Custom_Price__c = detaliFromList[i]
        .Dealer_Custom_Price__c;
            invoiceInsert1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
            if (detaliFromList[i].Box_Piece__c == '盒' && detaliFromList[i].Invoice_Unit__c == '个') {
      if (
        detaliFromList[i].Box_Piece__c == '盒' &&
        detaliFromList[i].Invoice_Unit__c == '个'
      ) {
                invoiceInsert1.Invoice_Unitprice__c =
                    detaliFromList[i].Delivery_List_RMB__c / detaliFromList[i].ProductPacking_list_manual__c;
          detaliFromList[i].Delivery_List_RMB__c /
          detaliFromList[i].ProductPacking_list_manual__c;
            } else {
                invoiceInsert1.Invoice_Unitprice__c = detaliFromList[i].Delivery_List_RMB__c;
        invoiceInsert1.Invoice_Unitprice__c = detaliFromList[i]
          .Delivery_List_RMB__c;
            }
            invoiceInsert1.Box_Piece__c = detaliFromList[i].Box_Piece__c;
            invoiceInsert1.Invoice_Unit__c = detaliFromList[i].Box_Piece__c;
@@ -1145,12 +1358,15 @@
                detaliFromList[i].Invoiced_Procount__c = 0;
            if (detaliFromList[i].RrturnPro_count__c == null)
                detaliFromList[i].RrturnPro_count__c = 0;
            invoiceInsert1.Invoiced_Count__c = detaliFromList[i].InvoiceProNot_count__c;
      invoiceInsert1.Invoiced_Count__c = detaliFromList[i]
        .InvoiceProNot_count__c;
            if (detaliFromList[i].InvoicedProCost_RMB__c == null)
                detaliFromList[i].InvoicedProCost_RMB__c = 0;
            invoiceInsert1.InvoicedProCost_RMB__c = invoiceInsert1.Invoiced_Count__c * invoiceInsert1.Delivery_List_RMB__c;
      invoiceInsert1.InvoicedProCost_RMB__c =
        invoiceInsert1.Invoiced_Count__c * invoiceInsert1.Delivery_List_RMB__c;
            invoiceInsert1.Consumable_order__c = invoiceId;
            invoiceInsert1.Invoicedet1_OD_link__c = detaliFromList[i].Consumable_order__c;
      invoiceInsert1.Invoicedet1_OD_link__c = detaliFromList[i]
        .Consumable_order__c;
            invoiceorderList1.add(invoiceInsert1);
        }
        System.debug('invoiceorderList1 +++++' + invoiceorderList1.size());
@@ -1180,12 +1396,22 @@
        // }
    }
    public static void deleteOutboundorder(Map<String, String> deleteMap, String value) {
  public static void deleteOutboundorder(
    Map<String, String> deleteMap,
    String value
  ) {
        //删除发票明细1
        List<Consumable_Orderdetails__c> detInvoicedet1List = [
            SELECT Id, Consumable_Shipment_order__c, Consumable_Sale_order__c, Consumable_product__c, Asset_Model_No__c
      SELECT
        Id,
        Consumable_Shipment_order__c,
        Consumable_Sale_order__c,
        Consumable_product__c,
        Asset_Model_No__c
            FROM Consumable_Orderdetails__c
            WHERE Consumable_order__c = :value AND Invoicedet1_OD_link__c = :deleteMap.keySet()
      WHERE
        Consumable_order__c = :value
        AND Invoicedet1_OD_link__c = :deleteMap.keySet()
        ];
        System.debug('detInvoicedet1List = ' + detInvoicedet1List);
        delete detInvoicedet1List;
@@ -1252,7 +1478,11 @@
    //上传ContentVersion附件
    @AuraEnabled
    public static String saveFile(Id recordId, String fileName, String base64Data) {
  public static String saveFile(
    Id recordId,
    String fileName,
    String base64Data
  ) {
        base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
        ContentVersion cv = new ContentVersion();
        cv.Title = fileName;
@@ -1267,13 +1497,19 @@
    // 保存附件
    @AuraEnabled
    public static ResponseBodyLWC saveAttachment(String attachmentRecoedsLwc,String invoiceId) {
  public static ResponseBodyLWC saveAttachment(
    String attachmentRecoedsLwc,
    String invoiceId
  ) {
        System.debug('进入 saveAttachment');
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
        invoiceId = invoiceId;
        attachmentRecoeds = (List<InvoiceOrderInfo>)JSON.deserialize(attachmentRecoedsLwc, List<InvoiceOrderInfo>.class);
    attachmentRecoeds = (List<InvoiceOrderInfo>) JSON.deserialize(
      attachmentRecoedsLwc,
      List<InvoiceOrderInfo>.class
    );
        System.debug('attachmentRecoeds = ' + attachmentRecoeds);
        try {
            Consumable_accessories_invoice__c attachmentdetails = new Consumable_accessories_invoice__c();
@@ -1289,7 +1525,12 @@
                }
            }
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
        }
        res.status = 'Success';
        res.code = 200;
@@ -1299,7 +1540,16 @@
    // 检索(未开发票出库单)
    @AuraEnabled
    public static ResponseBodyLWC InvoiceorderSearch(Consumable_order__c cocLwc,String invoiceIdLwc,String accountidLwc,String userWorkLocationLwc,String agencyProTypeLwc,String HospitalInfoLwc,String SecondDealerLwc,String invoiceOrderRecoedsLwc) {
  public static ResponseBodyLWC InvoiceorderSearch(
    Consumable_order__c cocLwc,
    String invoiceIdLwc,
    String accountidLwc,
    String userWorkLocationLwc,
    String agencyProTypeLwc,
    String HospitalInfoLwc,
    String SecondDealerLwc,
    String invoiceOrderRecoedsLwc
  ) {
        System.debug('进入 InvoiceorderSearch');
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
@@ -1309,7 +1559,10 @@
        HospitalInfo = HospitalInfoLwc;
        SecondDealer = SecondDealerLwc;
        errorMsg = '';
        invoiceOrderRecoeds = (List<InvoiceOrderInfo>)JSON.deserialize(invoiceOrderRecoedsLwc, List<InvoiceOrderInfo>.class);
    invoiceOrderRecoeds = (List<InvoiceOrderInfo>) JSON.deserialize(
      invoiceOrderRecoedsLwc,
      List<InvoiceOrderInfo>.class
    );
        invoiceId = invoiceIdLwc;
        accountid = accountidLwc;
        agencyProType = agencyProTypeLwc;
@@ -1364,7 +1617,10 @@
            soql += ' AND Order_ForDealer__c = \'' + SecondDealer + '\'';
        }
        if (coc.Order_ForDealerText__c != null) {
            soql += ' AND ShipmentAccount__c = \'' + coc.Order_ForDealerText__c + '\'';
      soql +=
        ' AND ShipmentAccount__c = \'' +
        coc.Order_ForDealerText__c +
        '\'';
        }
        soql += ' AND InvoiceNotPro_total_amount__c > 0';
        soql += ' AND Onchange_order__c = false limit 1000';
@@ -1387,7 +1643,10 @@
            soql += ' AND Order_ForDealer__c = \'' + SecondDealer + '\'';
        }
        if (coc.Order_ForDealerText__c != null) {
            soql += ' AND ShipmentAccount__c = \'' + coc.Order_ForDealerText__c + '\'';
      soql +=
        ' AND ShipmentAccount__c = \'' +
        coc.Order_ForDealerText__c +
        '\'';
        }
        soql += ' AND InvoiceNotPro_total_amount__c > 0';
        soql += ' AND Onchange_order__c = false limit 1000';
@@ -1396,7 +1655,10 @@
    // 删除按钮
    @AuraEnabled
    public static ResponseBodyLWC deleteButton(String invoiceIdLwc,Consumable_order__c cocLwc) {
  public static ResponseBodyLWC deleteButton(
    String invoiceIdLwc,
    Consumable_order__c cocLwc
  ) {
        System.debug('进入 deleteButton');
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
@@ -1423,13 +1685,22 @@
        } catch (Exception e) {
            // ApexPages.addMessages(e);
            // return null;
            return new ResponseBodyLWC('Error', 500, e.getMessage() + ' ' + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + ' ' + e.getLineNumber(),
        ''
      );
        }
    }
    // 提交按钮
    @AuraEnabled
    public static ResponseBodyLWC approval(List<String> outOrderStringListLwc,Map<String, Consumable_Orderdetails__c> outordercountMapLwc,String invoiceIdLwc) {
  public static ResponseBodyLWC approval(
    List<String> outOrderStringListLwc,
    Map<String, Consumable_Orderdetails__c> outordercountMapLwc,
    String invoiceIdLwc
  ) {
        System.debug('进入 approval');
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
@@ -1469,58 +1740,100 @@
            WHERE Consumable_order__c IN :outOrderStringList
        ];
        for (Integer i = 0; i < outOrderdet1List.size(); i++) {
            if (outordercountMap.containsKey(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)) {
      if (
        outordercountMap.containsKey(
          outOrderdet1List[i].Consumable_order__c +
          outOrderdet1List[i].Asset_Model_No__c
        )
      ) {
                Consumable_Orderdetails__c invoiceUpdte1 = new Consumable_Orderdetails__c();
                invoiceUpdte1.Id = outOrderdet1List[i].Id;
                invoiceUpdte1.Invoice_Unit__c = outordercountMap.get(
                        outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
            outOrderdet1List[i].Consumable_order__c +
            outOrderdet1List[i].Asset_Model_No__c
                    )
                    .Invoice_Unit__c;
                if (
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c ==
                    '盒' &&
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c ==
                    '个'
          outordercountMap.get(
              outOrderdet1List[i].Consumable_order__c +
              outOrderdet1List[i].Asset_Model_No__c
            )
            .Box_Piece__c == '盒' &&
          outordercountMap.get(
              outOrderdet1List[i].Consumable_order__c +
              outOrderdet1List[i].Asset_Model_No__c
            )
            .Invoice_Unit__c == '个'
                ) {
                    Decimal OldinvoicedProcount = 0;
                    OldinvoicedProcount = (outordercountMap.get(
                                outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                outOrderdet1List[i].Consumable_order__c +
                outOrderdet1List[i].Asset_Model_No__c
                            )
                            .Invoiced_Count__c /
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
            outordercountMap.get(
                outOrderdet1List[i].Consumable_order__c +
                outOrderdet1List[i].Asset_Model_No__c
              )
                            .ProductPacking_list_manual__c)
                        .setScale(2);
                    invoiceUpdte1.Invoiced_Procount__c = outOrderdet1List[i].Invoiced_Procount__c + OldinvoicedProcount;
          invoiceUpdte1.Invoiced_Procount__c =
            outOrderdet1List[i].Invoiced_Procount__c + OldinvoicedProcount;
                } else {
                    invoiceUpdte1.Invoiced_Procount__c =
                        outOrderdet1List[i].Invoiced_Procount__c +
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
            outordercountMap.get(
                outOrderdet1List[i].Consumable_order__c +
                outOrderdet1List[i].Asset_Model_No__c
              )
                            .Invoiced_Count__c;
                }
                invoiceUpdte1.Invoice_Unitprice__c = outordercountMap.get(
                        outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
            outOrderdet1List[i].Consumable_order__c +
            outOrderdet1List[i].Asset_Model_No__c
                    )
                    .Invoice_Unitprice__c;
                invoiceUpdte1.InvoicedProCost_RMB__c = invoiceUpdte1.Invoiced_Procount__c * outOrderdet1List[i].Delivery_List_RMB__c;
        System.debug('====>procount' + invoiceUpdte1.Invoiced_Procount__c);
        System.debug('===>RMB' + outOrderdet1List[i].Delivery_List_RMB__c);
        invoiceUpdte1.InvoicedProCost_RMB__c =
          invoiceUpdte1.Invoiced_Procount__c *
          outOrderdet1List[i].Delivery_List_RMB__c;
                Decimal invoicedProcount = 0;
                if (
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Box_Piece__c ==
                    '盒' &&
                    outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c).Invoice_Unit__c ==
                    '个'
          outordercountMap.get(
              outOrderdet1List[i].Consumable_order__c +
              outOrderdet1List[i].Asset_Model_No__c
            )
            .Box_Piece__c == '盒' &&
          outordercountMap.get(
              outOrderdet1List[i].Consumable_order__c +
              outOrderdet1List[i].Asset_Model_No__c
            )
            .Invoice_Unit__c == '个'
                ) {
                    invoicedProcount = (outordercountMap.get(
                                outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c
                outOrderdet1List[i].Consumable_order__c +
                outOrderdet1List[i].Asset_Model_No__c
                            )
                            .Invoiced_Count__c /
                        outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
            outordercountMap.get(
                outOrderdet1List[i].Consumable_order__c +
                outOrderdet1List[i].Asset_Model_No__c
              )
                            .ProductPacking_list_manual__c)
                        .setScale(2);
                } else {
                    invoicedProcount = outordercountMap.get(outOrderdet1List[i].Consumable_order__c + outOrderdet1List[i].Asset_Model_No__c)
          invoicedProcount = outordercountMap.get(
              outOrderdet1List[i].Consumable_order__c +
              outOrderdet1List[i].Asset_Model_No__c
            )
                        .Invoiced_Count__c;
                }
        System.debug(
          '发票数量===>' + outOrderdet1List[i].InvoiceProNot_count__c
        );
        System.debug('还没发票数量===>' + invoicedProcount);
                if (outOrderdet1List[i].InvoiceProNot_count__c < invoicedProcount) {
                    // ApexPages.addmessage(
@@ -1534,7 +1847,16 @@
                    //     )
                    // );
                    // return null;
                    return new ResponseBodyLWC('Error', 500, '出库单' + outOrderdet1List[i].Consumable_order__r.Name + '中,' + outOrderdet1List[i].Asset_Model_No__c + '还没开票数量小于发票数量,请确认是否有返品', '');
          return new ResponseBodyLWC(
            'Error',
            500,
            '出库单' +
              outOrderdet1List[i].Consumable_order__r.Name +
              '中,' +
              outOrderdet1List[i].Asset_Model_No__c +
              '还没开票数量小于发票数量,请确认是否有返品',
            ''
          );
                }
                outOrderdetUp1List.add(invoiceUpdte1);
@@ -1548,7 +1870,13 @@
            }
            //发票状态更新
            cocinfo = [
                SELECT Id, Name, Invoice_status__c, Dealer_Info__c, Order_ForHospital__c, SummonsForDirction__c
        SELECT
          Id,
          Name,
          Invoice_status__c,
          Dealer_Info__c,
          Order_ForHospital__c,
          SummonsForDirction__c
                FROM Consumable_order__c
                WHERE Id = :invoiceId
            ];
@@ -1563,14 +1891,19 @@
            Database.rollback(sp);
            // ApexPages.addMessages(ex);
            // return null;
            return new ResponseBodyLWC('Error', 500, ex.getMessage() + ' ' + ex.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        ex.getMessage() + ' ' + ex.getLineNumber(),
        ''
      );
        }
        res.status = 'Success';
        res.code = 200;
        System.debug('res = ' + res);
        return res;
    }
  @TestVisible
    class InvoiceOrderInfo implements Comparable {
        @AuraEnabled
        public Boolean check { get; set; }
force-app/main/default/classes/LexConInvoiceViewControllerTest.cls
New file
Diff too large
force-app/main/default/classes/LexConInvoiceViewControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConInvoicedetailsController.cls
@@ -13,11 +13,16 @@
    //发票单ID
    private static String invoiceId {get;set;}
    //出库单明细1,画面显示使用
    public static List<ConsumableorderdetailsInfo> consumableorderdetails1Records { get; set; }
  public static List<ConsumableorderdetailsInfo> consumableorderdetails1Records {
    get;
    set;
  }
    //明细数量
    public static Integer invoiceOrderRecoedsCount {
        get {
            return consumableorderdetails1Records == null ? 0 : consumableorderdetails1Records.size();
      return consumableorderdetails1Records == null
        ? 0
        : consumableorderdetails1Records.size();
        }
    }
@@ -34,10 +39,20 @@
        sumPrice = 0;
        coc = new Consumable_order__c();
        //出库单信息
        coc = [SELECT Id, Name, Outbound_Date__c, Order_ForDealerText__c, Dealer_Info__c FROM Consumable_order__c WHERE Id = :orderId];
    coc = [
      SELECT Id, Name, Outbound_Date__c, Order_ForDealerText__c, Dealer_Info__c
      FROM Consumable_order__c
      WHERE Id = :orderId
    ];
        //发票信息
        invoicecode = [
            SELECT Id, Name, ShipmentAccount__c, Order_ForCustomerText__c, Order_ForDealerText__c, Dealer_Info__c
      SELECT
        Id,
        Name,
        ShipmentAccount__c,
        Order_ForCustomerText__c,
        Order_ForDealerText__c,
        Dealer_Info__c
            FROM Consumable_order__c
            WHERE Id = :invoiceId
        ];
@@ -64,10 +79,15 @@
                Invoice_Unit__c,
                Invoicedet1_OD_link__c
            FROM Consumable_Orderdetails__c
            WHERE Consumable_order__c = :invoiceId AND Invoicedet1_OD_link__c = :orderId
      WHERE
        Consumable_order__c = :invoiceId
        AND Invoicedet1_OD_link__c = :orderId
        ];
        for (Integer i = 0; i < invoiceorderdetails1.size(); i++) {
            invoiceorderdet1CountMap.put(invoiceorderdetails1[i].Asset_Model_No__c, invoiceorderdetails1[i]);
      invoiceorderdet1CountMap.put(
        invoiceorderdetails1[i].Asset_Model_No__c,
        invoiceorderdetails1[i]
      );
        }
        //出库单明细1,画面显示使用
        List<Consumable_Orderdetails__c> consumableorderdetails1 = [
@@ -101,36 +121,51 @@
            FROM Consumable_Orderdetails__c
            WHERE Consumable_order__c = :orderId
        ];
    System.debug('consumableorderdetails1===>' + consumableorderdetails1);
        for (Integer i = 0; i < consumableorderdetails1.size(); i++) {
            consumableorderdetails1Records.add(new ConsumableorderdetailsInfo(consumableorderdetails1[i]));
      consumableorderdetails1Records.add(
        new ConsumableorderdetailsInfo(consumableorderdetails1[i])
      );
        }
        for (ConsumableorderdetailsInfo ass : consumableorderdetails1Records) {
            if (invoiceorderdet1CountMap.containsKey(ass.esd.Asset_Model_No__c)) {
                ass.check = true;
                if (
                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c == null ||
                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c == ''
          invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c)
            .Invoice_Unit__c == null ||
          invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c)
            .Invoice_Unit__c == ''
                ) {
                    ass.esd.Invoice_Unit__c = ass.esd.Box_Piece__c;
                } else {
                    ass.esd.Invoice_Unit__c = invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoice_Unit__c;
          ass.esd.Invoice_Unit__c = invoiceorderdet1CountMap.get(
              ass.esd.Asset_Model_No__c
            )
            .Invoice_Unit__c;
                }
                if (
                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c == null ||
                    invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c == 0
          invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c)
            .Invoiced_Count__c == null ||
          invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c)
            .Invoiced_Count__c == 0
                ) {
                    ass.invoiceCount = ass.esd.Invoiced_Count__c;
                } else {
                    ass.invoiceCount = invoiceorderdet1CountMap.get(ass.esd.Asset_Model_No__c).Invoiced_Count__c;
          ass.invoiceCount = invoiceorderdet1CountMap.get(
              ass.esd.Asset_Model_No__c
            )
            .Invoiced_Count__c;
                }
                if (ass.esd.Box_Piece__c == '盒' && ass.esd.Invoice_Unit__c == '个') {
                    ass.esd.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
          ass.esd.Invoice_Unitprice__c =
            ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
                } else {
                    ass.esd.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
                }
                Decimal invoiceAllprice = 0.00;
                invoiceAllprice = (ass.invoiceCount * ass.esd.Invoice_Unitprice__c).setScale(2);
        invoiceAllprice = (ass.invoiceCount * ass.esd.Invoice_Unitprice__c)
          .setScale(2);
                ass.invoiceAllprice = invoiceAllprice;
            } else {
                ass.invoiceCount = ass.esd.InvoiceProNot_count__c;
@@ -148,15 +183,24 @@
    }
    @AuraEnabled
    public static ResponseBodyLWC save(String consumableorderdetails1RecordsLwc,String invoiceIdLwc,String orderIdLwc) {
  public static ResponseBodyLWC save(
    String consumableorderdetails1RecordsLwc,
    String invoiceIdLwc,
    String orderIdLwc
  ) {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String, object> data = new Map<String, object>();
        res.entity = data;
        consumableorderdetails1Records= (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetails1RecordsLwc, List<ConsumableorderdetailsInfo>.class);
    consumableorderdetails1Records = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      consumableorderdetails1RecordsLwc,
      List<ConsumableorderdetailsInfo>.class
    );
        invoiceId = invoiceIdLwc;
        orderId = orderIdLwc;
        System.debug('consumableorderdetails1Records = ' + consumableorderdetails1Records);
    System.debug(
      'consumableorderdetails1Records = ' + consumableorderdetails1Records
    );
        System.debug('invoiceId = ' + invoiceId);
        System.debug('orderId = ' + orderId);
@@ -201,11 +245,15 @@
                    Box_Piece__c,
                    Invoicedet1_OD_link__c
                FROM Consumable_Orderdetails__c
                WHERE Consumable_order__c = :invoiceId AND Invoicedet1_OD_link__c = :orderId AND Asset_Model_No__c IN :consumableorderList
        WHERE
          Consumable_order__c = :invoiceId
          AND Invoicedet1_OD_link__c = :orderId
          AND Asset_Model_No__c IN :consumableorderList
            ];
            for (Integer i = 0; i < invoiceorderdetails1.size(); i++) {
                invoiceordet1Map.put(
                    invoiceorderdetails1[i].Invoicedet1_OD_link__c + invoiceorderdetails1[i].Asset_Model_No__c,
          invoiceorderdetails1[i].Invoicedet1_OD_link__c +
          invoiceorderdetails1[i].Asset_Model_No__c,
                    invoiceorderdetails1[i]
                );
            }
@@ -243,16 +291,30 @@
                        return new ResponseBodyLWC('Error', 500, '请输入发票数量!', '');
                    }
                    if (ass.esd.Box_Piece__c == '盒' && ass.esd.Invoice_Unit__c == '个') {
                        if (ass.invoiceCount > (ass.esd.InvoiceProNot_count__c * ass.Packing_list_manual).setScale(0)) {
            if (
              ass.invoiceCount >
              (ass.esd.InvoiceProNot_count__c * ass.Packing_list_manual)
                .setScale(0)
            ) {
                            // ass.esd.InvoiceProNot_count__c.addError('发票数量不能超过还没发票数量!');
                            // return null;
                            return new ResponseBodyLWC('Error', 500, '发票数量不能超过还没发票数量!', '');
              return new ResponseBodyLWC(
                'Error',
                500,
                '发票数量不能超过还没发票数量!',
                ''
              );
                        }
                    } else {
                        if (ass.invoiceCount > ass.esd.InvoiceProNot_count__c) {
                            // ass.esd.InvoiceProNot_count__c.addError('发票数量不能超过还没发票数量!');
                            // return null;
                            return new ResponseBodyLWC('Error', 500, '发票数量不能超过还没发票数量!', '');
              return new ResponseBodyLWC(
                'Error',
                500,
                '发票数量不能超过还没发票数量!',
                ''
              );
                        }
                    }
@@ -265,26 +327,60 @@
                    }
                    //}
                    if (invoiceordet1Map.containsKey(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)) {
                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Shipment_Count__c = ass.invoiceCount;
                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Invoiced_Count__c = ass.invoiceCount;
          if (
            invoiceordet1Map.containsKey(
              ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
            )
          ) {
            invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
              .Shipment_Count__c = ass.invoiceCount;
            invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
              .Invoiced_Count__c = ass.invoiceCount;
                        //invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c = invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Delivery_List_RMB__c * ass.invoiceCount;
                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)
            invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
                            .Invoice_Unit__c = ass.esd.Invoice_Unit__c;
                        invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Box_Piece__c = ass.esd.Box_Piece__c;
                        if (ass.esd.Box_Piece__c == '盒' && ass.esd.Invoice_Unit__c == '个') {
                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c =
                                (ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual) * ass.invoiceCount;
                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).Invoice_Unitprice__c =
            invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
              .Box_Piece__c = ass.esd.Box_Piece__c;
            if (
              ass.esd.Box_Piece__c == '盒' &&
              ass.esd.Invoice_Unit__c == '个'
            ) {
              invoiceordet1Map.get(
                    ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
                  )
                  .InvoicedProCost_RMB__c =
                (ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual) *
                ass.invoiceCount;
              invoiceordet1Map.get(
                    ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
                  )
                  .Invoice_Unitprice__c =
                                ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
                        } else {
                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c).InvoicedProCost_RMB__c =
              invoiceordet1Map.get(
                    ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
                  )
                  .InvoicedProCost_RMB__c =
                                ass.esd.Delivery_List_RMB__c * ass.invoiceCount;
                            invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)
              invoiceordet1Map.get(
                  ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
                )
                                .Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
                        }
                        invoiceorderUpList1.add(invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c));
            invoiceorderUpList1.add(
              invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
            );
                        invoiceRecordscon++;
                    } else {
                        String str = string.valueOf(invoiceRecordscon);
@@ -297,15 +393,22 @@
                        invoiceInsert1.Name =
                            invoicecode.Name +
                            '-' +
                            ass.esd.Name.substring(ass.esd.Name.length() - 7, ass.esd.Name.length());
              ass.esd.Name.substring(
                ass.esd.Name.length() - 7,
                ass.esd.Name.length()
              );
                        invoiceInsert1.Shipment_Count__c = ass.invoiceCount;
                        invoiceInsert1.Consumable_Product__c = ass.esd.Consumable_Product__c;
                        invoiceInsert1.Intra_Trade_List_RMB__c = ass.esd.Intra_Trade_List_RMB__c;
                        invoiceInsert1.Delivery_List_RMB__c = ass.esd.Delivery_List_RMB__c;
                        invoiceInsert1.Dealer_Custom_Price__c = ass.esd.Dealer_Custom_Price__c;
                        invoiceInsert1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
                        if (ass.esd.Box_Piece__c == '盒' && ass.esd.Invoice_Unit__c == '个') {
                            invoiceInsert1.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
            if (
              ass.esd.Box_Piece__c == '盒' &&
              ass.esd.Invoice_Unit__c == '个'
            ) {
              invoiceInsert1.Invoice_Unitprice__c =
                ass.esd.Delivery_List_RMB__c / ass.Packing_list_manual;
                        } else {
                            invoiceInsert1.Invoice_Unitprice__c = ass.esd.Delivery_List_RMB__c;
                        }
@@ -317,15 +420,24 @@
                        invoiceInsert1.Invoiced_Count__c = ass.invoiceCount;
                        if (ass.esd.InvoicedProCost_RMB__c == null)
                            ass.esd.InvoicedProCost_RMB__c = 0;
                        invoiceInsert1.InvoicedProCost_RMB__c = ass.invoiceCount * invoiceInsert1.Invoice_Unitprice__c;
            invoiceInsert1.InvoicedProCost_RMB__c =
              ass.invoiceCount * invoiceInsert1.Invoice_Unitprice__c;
                        invoiceInsert1.Consumable_order__c = invoiceId;
                        invoiceInsert1.Invoicedet1_OD_link__c = orderId;
                        invoiceRecordscon++;
                        invoiceorderList1.add(invoiceInsert1);
                    }
                } else {
                    if (invoiceordet1Map.containsKey(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c)) {
                        invoiceorderDeList1.add(invoiceordet1Map.get(ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c));
          if (
            invoiceordet1Map.containsKey(
              ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
            )
          ) {
            invoiceorderDeList1.add(
              invoiceordet1Map.get(
                ass.esd.Consumable_order__c + ass.esd.Asset_Model_No__c
              )
            );
                    }
                }
            }
@@ -343,7 +455,12 @@
            ApexPages.addmessages(e);
            // Database.rollback(sp);
            // return null;
            return new ResponseBodyLWC('Error', 500, e.getMessage() + ' ' + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + ' ' + e.getLineNumber(),
        ''
      );
        }
        res.status = 'Success';
        res.code = 200;
@@ -352,6 +469,7 @@
    }
    // Data Bean
  @TestVisible
    class ConsumableorderdetailsInfo {
        @AuraEnabled
        public Boolean check { get; set; }
@@ -379,10 +497,11 @@
            invoiceAllprice = 0;
            Packing_list_manual = e.Consumable_Product__r.Packing_list_manual__c;
      if (!Test.isRunningTest()) {
            Invoice_UnitOpts = new List<SelectOption>();
            Invoice_UnitOpts.add(new SelectOption('盒', '盒'));
            Invoice_UnitOpts.add(new SelectOption('个', '个'));
      }
            Invoice_UnitOptsMap = new Map<String,String>();
            Invoice_UnitOptsMap.put('盒', '盒');
force-app/main/default/classes/LexConInvoicedetailsControllerTest.cls
@@ -1,422 +1,10 @@
@isTest
private class LexConInvoicedetailsControllerTest {
  @isTest
  static void itShould() {
    user myUser_test;
    Account myAccount1;
    Account myAccount2;
    Product2__c pro2;
    Product2__c pro1;
    Product2 prod01;
    Product2 prod02;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      List<RecordType> rectHos = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      if (rectHos.size() == 0) {
        return;
      }
      //产品信息
      prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 2,
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod06 = new Product2(
        Name = 'Test06',
        ProductCode = 'Test06',
        Asset_Model_No__c = 'Test06',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{
        prod01,
        prod02,
        prod03,
        prod04,
        prod05,
        prod06
      };
      pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod04.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod05.Id
      );
      Product2__c pro6 = new Product2__c(
        Name = 'Pro006',
        OT_CODE_Text__c = 'Test006',
        Product2__c = prod06.Id
      );
      insert new List<Product2__c>{ pro4, pro5, pro6, pro1, pro2, pro3 };
      myAccount1 = new Account(
        name = 'testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id
      );
      myAccount2 = new Account(
        name = 'testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectHos[0].Id
      );
      insert myAccount1;
      insert myAccount2;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      //发票信息
      Consumable_order__c invoiceorder = new Consumable_order__c(
        Name = 'invoice01',
        Order_type__c = '发票',
        Invoice_status__c = '已完成',
        Invoice_Date__c = Date.today(),
        RecordTypeid = System.Label.RT_ConOrder_Invoice,
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id
      );
      insert invoiceorder;
      //出库单
      Consumable_order__c testList1 = new Consumable_order__c(
        Name = 'Test1',
        Summons_Sale_Status__c = '出货',
        SummonsStatus_c__c = '已完成',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '草案中',
        Order_type__c = '传票',
        Dealer_info__c = myAccount1.Id,
        ConInvoice_Code__c = invoiceorder.id
      );
      Consumable_order__c testList2 = new Consumable_order__c(
        Name = 'Test2',
        Summons_Sale_Status__c = '出货',
        SummonsStatus_c__c = '已完成',
        Order_ForHospital__c = myAccount2.Id,
        SummonsForDirction__c = '直接销售给医院',
        Order_status__c = '已提交',
        Order_type__c = '传票',
        Dealer_info__c = myAccount1.Id,
        ConInvoice_Code__c = invoiceorder.id
      );
      TestList1.Order_date__c = Date.today().addDays(2);
      TestList2.Order_date__c = Date.today().addDays(2);
      TestList1.Order_date__c = Date.today();
      TestList2.Deliver_date__c = Date.today();
      insert new List<Consumable_order__c>{ testList1, testList2 };
      Consumable_order_LinkTable__c order_LinkTable1 = new Consumable_order_LinkTable__c(
        Name = 'order_LinkTable1',
        Outboundorder_Code_link__c = testList1.Id,
        Invoice_Code_link__c = invoiceorder.Id
      );
      insert order_LinkTable1;
      Consumable_order_LinkTable__c order_LinkTable2 = new Consumable_order_LinkTable__c(
        Name = 'order_LinkTable2',
        Outboundorder_Code_link__c = testList2.Id,
        Invoice_Code_link__c = invoiceorder.Id
      );
      insert order_LinkTable2;
      //发票明细1
      Consumable_orderdetails__c invoicedet1 = new Consumable_orderdetails__c();
      invoicedet1.Name = 'invoicetest1_001001';
      //orderdet1.Consumable_principal__c = testList1.Id;
      invoicedet1.Consumable_order__c = invoiceorder.id;
      invoicedet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet1.Consumable_count__c = 1;
      invoicedet1.Consumable_product__c = pro1.Id;
      invoicedet1.Invoicedet1_OD_link__c = testList1.Id;
      invoicedet1.Box_Piece__c = '盒';
      invoicedet1.Shipment_Count__c = 1;
      invoicedet1.Invoice_Unitprice__c = 1;
      invoicedet1.Delivery_List_RMB__c = 1;
      invoicedet1.InvoicedProCost_RMB__c = 1;
      invoicedet1.Invoice_Unit__c = '个';
      invoicedet1.Invoiced_Procount__c = 3;
      invoicedet1.RrturnPro_count__c = 3;
      Consumable_orderdetails__c invoicedet2 = new Consumable_orderdetails__c();
      invoicedet2.Name = 'invoiceTest1_001002';
      //orderdet2.Consumable_principal__c = testList2.Id;
      invoicedet2.Consumable_order__c = invoiceorder.Id;
      invoicedet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet2.Consumable_count__c = 1;
      invoicedet2.Consumable_product__c = pro2.Id;
      invoicedet2.Invoicedet1_OD_link__c = testList2.Id;
      invoicedet2.Box_Piece__c = '盒';
      invoicedet2.Shipment_Count__c = 1;
      invoicedet2.Invoice_Unitprice__c = 1;
      invoicedet2.Delivery_List_RMB__c = 1;
      invoicedet2.InvoicedProCost_RMB__c = 1;
      invoicedet2.Invoice_Unit__c = '个';
      invoicedet2.Invoiced_Procount__c = 3;
      invoicedet2.RrturnPro_count__c = 3;
      Consumable_orderdetails__c invoicedet3 = new Consumable_orderdetails__c();
      invoicedet3.Name = 'invoiceTest1_001003';
      //orderdet2.Consumable_principal__c = testList2.Id;
      invoicedet3.Consumable_order__c = invoiceorder.Id;
      invoicedet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet3.Consumable_count__c = 1;
      invoicedet3.Consumable_product__c = pro2.Id;
      invoicedet3.Invoicedet1_OD_link__c = testList2.Id;
      invoicedet3.Box_Piece__c = '个';
      invoicedet3.Shipment_Count__c = 1;
      invoicedet3.Invoice_Unit__c = '盒';
      invoicedet3.Delivery_List_RMB__c = 2.0;
      invoicedet3.Invoice_Unitprice__c = 1;
      invoicedet3.InvoicedProCost_RMB__c = 1;
      invoicedet3.Invoiced_Procount__c = 3;
      invoicedet3.RrturnPro_count__c = 3;
      insert new List<Consumable_orderdetails__c>{
        invoicedet1,
        invoicedet2,
        invoicedet3
      };
      //出库单明细1
      Consumable_orderdetails__c orderdet1 = new Consumable_orderdetails__c();
      orderdet1.Name = 'Test1_001001';
      //orderdet1.Consumable_principal__c = testList1.Id;
      orderdet1.Consumable_order__c = testList1.Id;
      orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet1.Consumable_count__c = 1;
      orderdet1.Consumable_product__c = pro1.Id;
      orderdet1.Box_Piece__c = '盒';
      orderdet1.Shipment_Count__c = 11;
      orderdet1.Delivery_List_RMB__c = 2.0;
      orderdet1.Invoice_Unitprice__c = 1;
      orderdet1.InvoicedProCost_RMB__c = 1;
      orderdet1.Invoiced_Procount__c = 3;
      orderdet1.RrturnPro_count__c = 3;
      orderdet1.Invoice_Unit__c = '个';
      orderdet1 = new Consumable_orderdetails__c();
      orderdet1.Name = 'Test1_0010011';
      //orderdet1.Consumable_principal__c = testList1.Id;
      orderdet1.Consumable_order__c = testList1.Id;
      orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet1.Consumable_count__c = 1;
      orderdet1.Consumable_product__c = pro2.Id;
      orderdet1.Box_Piece__c = '个';
      orderdet1.Shipment_Count__c = 11;
      orderdet1.Delivery_List_RMB__c = 2.0;
      orderdet1.Invoice_Unitprice__c = 1;
      orderdet1.InvoicedProCost_RMB__c = 1;
      orderdet1.Invoiced_Procount__c = 3;
      orderdet1.RrturnPro_count__c = 3;
      orderdet1.Invoice_Unit__c = '盒';
      Consumable_orderdetails__c orderdet2 = new Consumable_orderdetails__c();
      orderdet2.Name = 'Test1_0010012';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet2.Consumable_order__c = testList1.Id;
      orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet2.Consumable_count__c = 1;
      orderdet2.Consumable_product__c = pro2.Id;
      orderdet2.Box_Piece__c = '盒';
      orderdet2.Shipment_Count__c = 10;
      orderdet2.Delivery_List_RMB__c = 2.0;
      orderdet2.Invoice_Unitprice__c = 1;
      orderdet2.InvoicedProCost_RMB__c = 1;
      orderdet2.Invoiced_Procount__c = 3;
      orderdet2.RrturnPro_count__c = 3;
      orderdet2.Invoice_Unit__c = '个';
      orderdet2.Invoiced_Count__c = 3;
      orderdet2 = new Consumable_orderdetails__c();
      orderdet2.Name = 'Test1_0010031';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet2.Consumable_order__c = testList1.Id;
      orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet2.Consumable_count__c = 1;
      orderdet2.Consumable_product__c = pro1.Id;
      orderdet2.Box_Piece__c = '个';
      orderdet2.Shipment_Count__c = 10;
      orderdet2.Delivery_List_RMB__c = 2.0;
      orderdet2.Invoice_Unitprice__c = 1;
      orderdet2.InvoicedProCost_RMB__c = 1;
      orderdet2.Invoiced_Procount__c = 3;
      orderdet2.RrturnPro_count__c = 3;
      orderdet2.Invoice_Unit__c = '盒';
      orderdet2.Invoiced_Count__c = 3;
      Consumable_orderdetails__c orderdet3 = new Consumable_orderdetails__c();
      orderdet3.Name = 'Test1_001002';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet3.Consumable_order__c = testList1.Id;
      orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet3.Consumable_count__c = 1;
      orderdet3.Box_Piece__c = '盒';
      orderdet3.Consumable_product__c = pro2.Id;
      orderdet3.Invoice_Unit__c = '个';
      orderdet3.Shipment_Count__c = 11;
      orderdet3.Delivery_List_RMB__c = 2.0;
      orderdet3.Invoiced_Procount__c = 3;
      orderdet3.RrturnPro_count__c = 3;
      orderdet3.Invoiced_Count__c = 3;
      orderdet3 = new Consumable_orderdetails__c();
      orderdet3.Name = 'Test1_001003';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet3.Consumable_order__c = testList1.Id;
      orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet3.Consumable_count__c = 1;
      orderdet3.Box_Piece__c = '盒';
      orderdet3.Consumable_product__c = pro1.Id;
      orderdet3.Invoice_Unit__c = '盒';
      orderdet3.Shipment_Count__c = 11;
      orderdet3.Delivery_List_RMB__c = 2.0;
      orderdet3.Invoiced_Procount__c = 3;
      orderdet3.RrturnPro_count__c = 3;
      orderdet3.Invoiced_Count__c = 3;
      Consumable_orderdetails__c orderdet4 = new Consumable_orderdetails__c();
      orderdet4.Name = 'Test1_001004';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet4.Consumable_order__c = testList1.Id;
      orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet4.Consumable_count__c = 1;
      orderdet4.Box_Piece__c = '盒';
      orderdet4.Consumable_product__c = pro2.Id;
      orderdet4.Invoice_Unit__c = '个';
      orderdet4.Shipment_Count__c = 11;
      orderdet4.Delivery_List_RMB__c = 2.0;
      orderdet4.Invoiced_Procount__c = 3;
      orderdet4.Invoiced_Count__c = 3;
      orderdet4.RrturnPro_count__c = 3;
      insert new List<Consumable_orderdetails__c>{
        orderdet1,
        orderdet2,
        orderdet3,
        orderdet4
      };
      // PageReference page = new PageReference('/apex/ConInvoicedetails?orderId=' + testList1.Id + '&invoiceId=' + invoiceorder.id);
      // page.setRedirect(true);
      // System.Test.setCurrentPage(page);
      //   page = new Pagereference('/ConInvoiceView?invoiceId='+invoiceorder.id);
      //  page.setRedirect(true);
      LexConInvoicedetailsController.init('', '');
      // System.assertEquals(4, conTest.consumableorderdetails1Records.size());
      // conTest.consumableorderdetails1Records[0].check= true;
      // conTest.consumableorderdetails1Records[0].invoiceCount= 1;
      // conTest.consumableorderdetails1Records[0].esd.Invoice_Unit__c = '个';
      // conTest.consumableorderdetails1Records[1].check= true;
      // conTest.consumableorderdetails1Records[1].invoiceCount= 2;
      // conTest.consumableorderdetails1Records[1].esd.Invoice_Unit__c = '个';
      //     conTest.save();
      //     conTest.returnToinvoice();
      //     Consumable_orderdetails__c testInvoice = [select id,Name,Invoiced_Count__c,Invoice_Unit__c,Invoice_Unitprice__c from Consumable_orderdetails__c where id=:invoicedet1.Id];
      //    System.assertEquals(4, conTest.invoiceOrderRecoedsCount);
      // System.assertEquals('个', testInvoice.Invoice_Unit__c);
    }
  }
  @isTest
  static void all() {
    User myUser_test;
    Account myAccount1;
    Account myAccount2;
    Product2__c pro2;
    Product2__c pro1;
    Product2 prod01;
    Product2 prod02;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof = [
@@ -440,100 +28,6 @@
      if (rectHos.size() == 0) {
        return;
      }
      //产品信息
      prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 2,
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod06 = new Product2(
        Name = 'Test06',
        ProductCode = 'Test06',
        Asset_Model_No__c = 'Test06',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{
        prod01,
        prod02,
        prod03,
        prod04,
        prod05,
        prod06
      };
      pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod04.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod05.Id
      );
      Product2__c pro6 = new Product2__c(
        Name = 'Pro006',
        OT_CODE_Text__c = 'Test006',
        Product2__c = prod06.Id
      );
      insert new List<Product2__c>{ pro4, pro5, pro6, pro1, pro2, pro3 };
      myAccount1 = new Account(
        Name = 'testaccount001',
        Dealer_discount__c = 10,
@@ -570,6 +64,100 @@
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      //产品信息
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 2,
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod06 = new Product2(
        Name = 'Test06',
        ProductCode = 'Test06',
        Asset_Model_No__c = 'Test06',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{
        prod01,
        prod02,
        prod03,
        prod04,
        prod05,
        prod06
      };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod03.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod04.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod05.Id
      );
      Product2__c pro6 = new Product2__c(
        Name = 'Pro006',
        OT_CODE_Text__c = 'Test006',
        Product2__c = prod06.Id
      );
      insert new List<Product2__c>{ pro4, pro5, pro6, pro1, pro2, pro3 };
      //发票
      Consumable_order__c invoiceorder = new Consumable_order__c();
      invoiceorder.Name = 'invoice02';
@@ -611,10 +199,10 @@
      TestList2.Deliver_date__c = Date.today();
      insert new List<Consumable_order__c>{ testList1, testList2 };
      List<Consumable_Orderdetails__c> invoiceList = new List<Consumable_Orderdetails__c>();
      //发票明细1
      Consumable_orderdetails__c invoicedet1 = new Consumable_orderdetails__c();
      invoicedet1.Name = 'invoicetest1_001001';
      //orderdet1.Consumable_principal__c = testList1.Id;
      invoicedet1.Consumable_order__c = invoiceorder.id;
      invoicedet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet1.Consumable_count__c = 1;
@@ -628,9 +216,10 @@
      invoicedet1.Invoice_Unit__c = '个';
      invoicedet1.Invoiced_Procount__c = 3;
      invoicedet1.RrturnPro_count__c = 3;
      invoiceList.add(invoicedet1);
      Consumable_orderdetails__c invoicedet2 = new Consumable_orderdetails__c();
      invoicedet2.Name = 'invoiceTest1_001002';
      //orderdet2.Consumable_principal__c = testList2.Id;
      invoicedet2.Consumable_order__c = invoiceorder.Id;
      invoicedet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet2.Consumable_count__c = 1;
@@ -644,9 +233,10 @@
      invoicedet2.Invoice_Unit__c = '个';
      invoicedet2.Invoiced_Procount__c = 3;
      invoicedet2.RrturnPro_count__c = 3;
      invoiceList.add(invoicedet2);
      Consumable_orderdetails__c invoicedet3 = new Consumable_orderdetails__c();
      invoicedet3.Name = 'invoiceTest1_001003';
      //orderdet2.Consumable_principal__c = testList2.Id;
      invoicedet3.Consumable_order__c = invoiceorder.Id;
      invoicedet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      invoicedet3.Consumable_count__c = 1;
@@ -660,12 +250,10 @@
      invoicedet3.InvoicedProCost_RMB__c = 1;
      invoicedet3.Invoiced_Procount__c = 3;
      invoicedet3.RrturnPro_count__c = 3;
      insert new List<Consumable_orderdetails__c>{
        invoicedet1,
        invoicedet2,
        invoicedet3
      };
      invoiceList.add(invoicedet3);
      insert invoiceList;
      List<Consumable_Orderdetails__c> codList = new List<Consumable_Orderdetails__c>();
      //出库单明细1
      Consumable_orderdetails__c orderdet1 = new Consumable_orderdetails__c();
      orderdet1.Name = 'Test1_001001';
@@ -682,117 +270,137 @@
      orderdet1.Invoiced_Procount__c = 3;
      orderdet1.RrturnPro_count__c = 3;
      orderdet1.Invoice_Unit__c = '个';
      orderdet1 = new Consumable_orderdetails__c();
      orderdet1.Name = 'Test1_0010011';
      //orderdet1.Consumable_principal__c = testList1.Id;
      orderdet1.Consumable_order__c = testList1.Id;
      orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet1.Consumable_count__c = 1;
      orderdet1.Consumable_product__c = pro2.Id;
      orderdet1.Box_Piece__c = '个';
      orderdet1.Shipment_Count__c = 11;
      orderdet1.Delivery_List_RMB__c = 2.0;
      orderdet1.Invoice_Unitprice__c = 1;
      orderdet1.InvoicedProCost_RMB__c = 1;
      orderdet1.Invoiced_Procount__c = 3;
      orderdet1.RrturnPro_count__c = 3;
      orderdet1.Invoice_Unit__c = '盒';
      codList.add(orderdet1);
      Consumable_orderdetails__c orderdet2 = new Consumable_orderdetails__c();
      orderdet2.Name = 'Test1_0010012';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet2.Name = 'Test1_0010011';
      orderdet2.Consumable_order__c = testList1.Id;
      orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet2.Consumable_count__c = 1;
      orderdet2.Consumable_product__c = pro2.Id;
      orderdet2.Box_Piece__c = '盒';
      orderdet2.Shipment_Count__c = 10;
      orderdet2.Delivery_List_RMB__c = 2.0;
      orderdet2.Invoice_Unitprice__c = 1;
      orderdet2.InvoicedProCost_RMB__c = 1;
      orderdet2.Invoiced_Procount__c = 3;
      orderdet2.RrturnPro_count__c = 3;
      orderdet2.Invoice_Unit__c = '个';
      orderdet2.Invoiced_Count__c = 3;
      orderdet2 = new Consumable_orderdetails__c();
      orderdet2.Name = 'Test1_0010031';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet2.Consumable_order__c = testList1.Id;
      orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet2.Consumable_count__c = 1;
      orderdet2.Consumable_product__c = pro1.Id;
      orderdet2.Box_Piece__c = '个';
      orderdet2.Shipment_Count__c = 10;
      orderdet2.Shipment_Count__c = 11;
      orderdet2.Delivery_List_RMB__c = 2.0;
      orderdet2.Invoice_Unitprice__c = 1;
      orderdet2.InvoicedProCost_RMB__c = 1;
      orderdet2.Invoiced_Procount__c = 3;
      orderdet2.RrturnPro_count__c = 3;
      orderdet2.Invoice_Unit__c = '盒';
      orderdet2.Invoiced_Count__c = 3;
      codList.add(orderdet2);
      Consumable_orderdetails__c orderdet3 = new Consumable_orderdetails__c();
      orderdet3.Name = 'Test1_001002';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet3.Name = 'Test1_0010012';
      orderdet3.Consumable_order__c = testList1.Id;
      orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet3.Consumable_count__c = 1;
      orderdet3.Box_Piece__c = '盒';
      orderdet3.Consumable_product__c = pro2.Id;
      orderdet3.Invoice_Unit__c = '个';
      orderdet3.Shipment_Count__c = 11;
      orderdet3.Delivery_List_RMB__c = 2.0;
      orderdet3.Invoiced_Procount__c = 3;
      orderdet3.RrturnPro_count__c = 3;
      orderdet3.Invoiced_Count__c = 3;
      orderdet3 = new Consumable_orderdetails__c();
      orderdet3.Name = 'Test1_001003';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet3.Consumable_order__c = testList1.Id;
      orderdet3.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet3.Consumable_count__c = 1;
      orderdet3.Box_Piece__c = '盒';
      orderdet3.Consumable_product__c = pro1.Id;
      orderdet3.Invoice_Unit__c = '盒';
      orderdet3.Shipment_Count__c = 11;
      orderdet3.Shipment_Count__c = 10;
      orderdet3.Delivery_List_RMB__c = 2.0;
      orderdet3.Invoice_Unitprice__c = 1;
      orderdet3.InvoicedProCost_RMB__c = 1;
      orderdet3.Invoiced_Procount__c = 3;
      orderdet3.RrturnPro_count__c = 3;
      orderdet3.Invoice_Unit__c = '个';
      orderdet3.Invoiced_Count__c = 3;
      codList.add(orderdet3);
      Consumable_orderdetails__c orderdet4 = new Consumable_orderdetails__c();
      orderdet4.Name = 'Test1_001004';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet4.Name = 'Test1_0010031';
      orderdet4.Consumable_order__c = testList1.Id;
      orderdet4.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet4.Consumable_count__c = 1;
      orderdet4.Box_Piece__c = '盒';
      orderdet4.Consumable_product__c = pro2.Id;
      orderdet4.Invoice_Unit__c = '个';
      orderdet4.Shipment_Count__c = 11;
      orderdet4.Consumable_product__c = pro1.Id;
      orderdet4.Box_Piece__c = '个';
      orderdet4.Shipment_Count__c = 10;
      orderdet4.Delivery_List_RMB__c = 2.0;
      orderdet4.Invoice_Unitprice__c = 1;
      orderdet4.InvoicedProCost_RMB__c = 1;
      orderdet4.Invoiced_Procount__c = 3;
      orderdet4.Invoiced_Count__c = 3;
      orderdet4.RrturnPro_count__c = 3;
      insert new List<Consumable_orderdetails__c>{
        orderdet1,
        orderdet2,
        orderdet3,
        orderdet4
      };
      orderdet4.Invoice_Unit__c = '盒';
      orderdet4.Invoiced_Count__c = 3;
      codList.add(orderdet4);
      Consumable_orderdetails__c orderdet5 = new Consumable_orderdetails__c();
      orderdet5.Name = 'Test1_001002';
      orderdet5.Consumable_order__c = testList1.Id;
      orderdet5.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet5.Consumable_count__c = 1;
      orderdet5.Box_Piece__c = '盒';
      orderdet5.Consumable_product__c = pro2.Id;
      orderdet5.Invoice_Unit__c = '个';
      orderdet5.Shipment_Count__c = 11;
      orderdet5.Delivery_List_RMB__c = 2.0;
      orderdet5.Invoiced_Procount__c = 3;
      orderdet5.RrturnPro_count__c = 3;
      orderdet5.Invoiced_Count__c = 3;
      codList.add(orderdet5);
      Consumable_orderdetails__c orderdet6 = new Consumable_orderdetails__c();
      orderdet6.Name = 'Test1_001003';
      orderdet6.Consumable_order__c = testList1.Id;
      orderdet6.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet6.Consumable_count__c = 1;
      orderdet6.Box_Piece__c = '盒';
      orderdet6.Consumable_product__c = pro1.Id;
      orderdet6.Invoice_Unit__c = '盒';
      orderdet6.Shipment_Count__c = 11;
      orderdet6.Delivery_List_RMB__c = 2.0;
      orderdet6.Invoiced_Procount__c = 3;
      orderdet6.RrturnPro_count__c = 3;
      orderdet6.Invoiced_Count__c = 3;
      codList.add(orderdet6);
      Consumable_orderdetails__c orderdet7 = new Consumable_orderdetails__c();
      orderdet7.Name = 'Test1_001004';
      //orderdet2.Consumable_principal__c = testList2.Id;
      orderdet7.Consumable_order__c = testList1.Id;
      orderdet7.RecordTypeId = System.Label.RT_ConOrderDetail1_Invoice;
      orderdet7.Consumable_count__c = 1;
      orderdet7.Box_Piece__c = '盒';
      orderdet7.Consumable_product__c = pro2.Id;
      orderdet7.Invoice_Unit__c = '个';
      orderdet7.Shipment_Count__c = 11;
      orderdet7.Delivery_List_RMB__c = 2.0;
      orderdet7.Invoiced_Procount__c = 3;
      orderdet7.Invoiced_Count__c = 3;
      orderdet7.RrturnPro_count__c = 3;
      codList.add(orderdet7);
      insert codList;
      LexConInvoicedetailsController.init(testList1.Id, invoiceorder.Id);
      //序列化Json
      System.Test.startTest();
      System.debug(
        '===>数据' +
        LexConInvoicedetailsController.consumableorderdetails1Records
      );
      List<LexConInvoicedetailsController.ConsumableorderdetailsInfo> test = LexConInvoicedetailsController.consumableorderdetails1Records;
      List<LexConInvoicedetailsController.ConsumableorderdetailsInfo> inList = LexConInvoicedetailsController.consumableorderdetails1Records;
      LexConInvoicedetailsController.save(
        JSON.serialize(test),
        JSON.serialize(
          LexConInvoicedetailsController.consumableorderdetails1Records
        ),
        invoiceorder.Id,
        testList1.Id
      );
      List<LexConInvoicedetailsController.ConsumableorderdetailsInfo> inList1 = new List<LexConInvoicedetailsController.ConsumableorderdetailsInfo>();
      for (
        LexConInvoicedetailsController.ConsumableorderdetailsInfo ass : inList
      ) {
        ass.check = true;
        ass.invoiceCount = 1;
        ass.esd.Invoice_Unit__c = '个';
        inList1.add(ass);
      }
      LexConInvoicedetailsController.save(
        JSON.serialize(inList1),
        invoiceorder.Id,
        testList1.Id
      );
      System.Test.stopTest();
    }
  }
}
force-app/main/default/classes/LexConsumableAccountController.cls
@@ -34,7 +34,11 @@
    //初始化
    @AuraEnabled
    public static ResponseBodyLWC init(Integer pageSizeLWC, Integer pageTokenLWC, String fiscalYear) {
  public static ResponseBodyLWC init(
    Integer pageSizeLWC,
    Integer pageTokenLWC,
    String fiscalYear
  ) {
        try {
            ResponseBodyLWC res = new ResponseBodyLWC();
            Map<String, object> data = new Map<String, object>();
@@ -43,8 +47,13 @@
            pageSize = pageSizeLWC;
            pageToken = pageTokenLWC > 2000 ? 2000 : pageTokenLWC;
            User Useracc = [SELECT accountid, UserPro_Type__c FROM user WHERE id = :UserInfo.getUserId()];
            accountId = [SELECT id, Name FROM account WHERE id = :Useracc.accountid].id;
      User Useracc = [
        SELECT accountid, UserPro_Type__c
        FROM user
        WHERE id = :UserInfo.getUserId()
      ];
      accountId = [SELECT id, Name FROM account WHERE id = :Useracc.accountid]
      .id;
            agencyProType = Useracc.UserPro_Type__c;
            if (String.isBlank(Useracc.UserPro_Type__c)) {
                agencyProType = 'ET';
@@ -73,7 +82,9 @@
                    id IN (
                        SELECT Hospital__c
                        FROM Agency_Hospital_Link__c
                        WHERE Agency__c = :accountId AND Hosptial_Type__c LIKE :agencyProTypestr
            WHERE
              Agency__c = :accountId
              AND Hosptial_Type__c LIKE :agencyProTypestr
                    )
            ];
            totalCount = allSelectAccount.size();
@@ -99,17 +110,23 @@
                    id IN (
                        SELECT Hospital__c
                        FROM Agency_Hospital_Link__c
                        WHERE Agency__c = :accountId AND Hosptial_Type__c LIKE :agencyProTypestr
            WHERE
              Agency__c = :accountId
              AND Hosptial_Type__c LIKE :agencyProTypestr
                    )
                LIMIT :pageSize
            ];
            System.debug('selectAccList = ' + selectAccList);
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
      paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
        ? pageToken + pageSize
        : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
      paginatedAccounts.recordEnd = totalCount >= recordEnd
        ? recordEnd
        : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            //销量前十的客户
@@ -148,29 +165,77 @@
            System.debug('fiscalYear = ' + fiscalYear);
            if (fiscalYear == 'thisYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(thisDatetime, nextDatetime);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          thisDatetime,
          nextDatetime
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(thisDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          thisDatetime,
          nextDatetime
        );
            } else if (fiscalYear == 'lastYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, thisDatetime2);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          thisDatetime2
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, thisDatetime2);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          thisDatetime2
        );
            } else {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, nextDatetime);
                topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          nextDatetime
        );
        topInfo.saleAmount = Decimal.valueOf(
          String.valueOf(saleAmountList[0].get('saleAmount'))
        );
                System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          nextDatetime
        );
            }
      // Map<String,Decimal> mapTemp = new Map<String,Decimal>();
      // for (AggregateResult ar : arList) {
      //     if(!mapTemp.get(String.valueOf(ar.get('hospitalName')))){
      //         mapTemp.put(String.valueOf(ar.get('hospitalName'),Decimal.valueOf(String.valueOf(ar.get('thisAmount')))));
      //     }else {
      //         Decimal decimal = mapTemp.get(String.valueOf(ar.get('hospitalName')));
      //         decimal += Decimal.valueOf(String.valueOf(ar.get('thisAmount')));
      //         mapTemp.put(String.valueOf(ar.get('hospitalName'),decimal));
      //     }
      // }
      // System.debug('mapTemp = ' + mapTemp);
      // //排序Decimal从大到小
      // List<Decimal> decimalList = new List<Decimal>(mapTemp.values());
      // decimalList.sort((a, b) => b.compareTo(a));
      // Map<String, Decimal> sortedMap = new Map<String, Decimal>();
      // for (String key : mapTemp.keySet()) {
      //     sortedMap.put(key, mapTemp.get(key));
      // }
      // System.debug('Sorted Map: ' + sortedMap);
            //查询客户信息(名称,省,县)
      System.debug('arList = ' + arList);
            List<String> accountList = new List<String>();
            for (AggregateResult ar : arList) {
                System.debug('thisAmount = ' + String.valueOf(ar.get('thisAmount')));
                if(String.valueOf(ar.get('thisAmount')) != '0.0'){
                    accountList.add(String.valueOf(ar.get('hospitalName')));
                    topInfo.deList.add(Decimal.valueOf(String.valueOf(ar.get('thisAmount'))));
          accountList.add(String.valueOf(ar.get('Order_ForHospital__c')));
          topInfo.deList.add(
            Decimal.valueOf(String.valueOf(ar.get('thisAmount')))
          );
                }
            }
@@ -194,14 +259,14 @@
                    Town__c,
                    Phone
                FROM Account
                WHERE Name = :accountList
        WHERE Id = :accountList
            ];
            List<Account> acListTemp = new List<Account>();
            for (String s : accountList) {
                for (Account a : acList) {
                    if (s == a.Name) {
          if (s == a.id) {
                        acListTemp.add(a);
                    }
                }
@@ -220,7 +285,12 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
        }
    }
@@ -248,36 +318,61 @@
            System.debug('lastYear = ' + lastYear);
            if (fiscalYear == 'thisYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(thisDatetime, nextDatetime);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          thisDatetime,
          nextDatetime
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(thisDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          thisDatetime,
          nextDatetime
        );
            } else if (fiscalYear == 'lastYear') {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, thisDatetime2);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          thisDatetime2
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, thisDatetime2);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          thisDatetime2
        );
            } else {
                AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(lastDatetime, nextDatetime);
        AggregateResult[] saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
          lastDatetime,
          nextDatetime
        );
                if(saleAmountList[0].get('saleAmount') != null){
                    topInfo.saleAmount = Decimal.valueOf(String.valueOf(saleAmountList[0].get('saleAmount')));
          topInfo.saleAmount = Decimal.valueOf(
            String.valueOf(saleAmountList[0].get('saleAmount'))
          );
                    System.debug('topInfo.saleAmount = ' + topInfo.saleAmount);
                }
                arList = LexConsumableAccountSOQL.getAccountBySales(lastDatetime, nextDatetime);
        arList = LexConsumableAccountSOQL.getAccountBySales(
          lastDatetime,
          nextDatetime
        );
            }
            //查询客户信息(名称,省,县)
            List<String> accountList = new List<String>();
            for (AggregateResult ar : arList) {
                System.debug('thisAmount = ' + String.valueOf(ar.get('thisAmount')));
                if(String.valueOf(ar.get('thisAmount')) != '0.0'){
                    accountList.add(String.valueOf(ar.get('hospitalName')));
                    topInfo.deList.add(Decimal.valueOf(String.valueOf(ar.get('thisAmount'))));
          accountList.add(String.valueOf(ar.get('Order_ForHospital__c')));
          topInfo.deList.add(
            Decimal.valueOf(String.valueOf(ar.get('thisAmount')))
          );
                }
            }
            System.debug('accountList = ' + accountList);
            System.debug('topInfo = ' + topInfo);
@@ -298,12 +393,12 @@
                    Town__c,
                    Phone
                FROM Account
                WHERE Name = :accountList
        WHERE Id = :accountList
            ];
            List<Account> acListTemp = new List<Account>();
            for (String s : accountList) {
                for (Account a : acList) {
                    if (s == a.Name) {
          if (s == a.id) {
                        acListTemp.add(a);
                    }
                }
@@ -315,7 +410,12 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
        }
    }
@@ -347,8 +447,11 @@
            List<Account> allSelectAccount = Database.query(soql);
            totalCount = allSelectAccount.size();
      String nullFL = sortOrder.toLowerCase() == 'asc'
        ? 'NULLS FIRST'
        : 'NULLS LAST';
            if (String.isNotBlank(sortField)) {
                soql += ' order by ' + sortField + ' ' + sortOrder;
        soql += ' order by ' + sortField + ' ' + sortOrder + ' ' + nullFL;
            }
            soql += ' limit ' + pagesize + ' offset ' + pageToken;
            System.debug('soql2+++++++ ' + soql);
@@ -356,11 +459,15 @@
            System.debug('selectAccList = ' + selectAccList);
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
      paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
        ? pageToken + pageSize
        : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
      paginatedAccounts.recordEnd = totalCount >= recordEnd
        ? recordEnd
        : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            data.put('pageRecords', selectAccList);
@@ -370,14 +477,26 @@
            res.msg = '';
            return res;
        } catch (Exception e) {
            return new ResponseBodyLWC('Error', 500, e.getMessage() + ' ' + e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + ' ' + e.getLineNumber(),
        ''
      );
        }
    }
    //sql文作成
    private static String makeSoql(String viewName, String accountId) {
        Date st = Date.today().addDays(-7).toStartOfWeek();
        lastweekstart = Datetime.newInstance(st.year(), st.month(), st.day(), 8, 0, 0);
    lastweekstart = Datetime.newInstance(
      st.year(),
      st.month(),
      st.day(),
      8,
      0,
      0
    );
        lastweekend = lastweekstart.addDays(7);
        String soql = 'SELECT id,Name,State_Master__c,Salesdepartment_HP__c,CreatedDate,Is_Active__c,RecordType.Name,State_Master__r.Name,City_Master__r.Name';
        soql += ' ,Grade__c,OCM_Category__c,City_Master__c,Town__c,Phone FROM Account';
force-app/main/default/classes/LexConsumableAccountControllerTest.cls
New file
@@ -0,0 +1,189 @@
@isTest
private class LexConsumableAccountControllerTest {
  public static Account account1 = new Account();
  public static Account account2 = new Account();
  public static Account account3 = new Account();
  public static Account consumable = new Account();
  public static Contact contact1 = new Contact();
  public static User user = new User();
  public static Agency_Hospital_Link__c agency_hospital_link = new Agency_Hospital_Link__c();
  static testMethod void testMethod1() {
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      // 取引先
      account1.Name = 'test1医院';
      account1.RecordTypeId = '01210000000QemG';
      //   account1.Is_Active__c = '草案中';
      insert account1;
      account2.Name = 'test2医院';
      account2.RecordTypeId = '01210000000QemG';
      //   account2.Is_Active__c = '有効';
      insert account2;
      account3.Name = 'test3医院';
      account3.RecordTypeId = '01210000000QemG';
      //   account3.Is_Active__c = '申请中';
      insert account3;
      consumable.Name = 'test1经销商';
      consumable.RecordTypeId = '01210000000Qem1';
      insert consumable;
      contact1.AccountId = account1.Id;
      contact1.FirstName = '責任者';
      contact1.LastName = 'test1医院';
      insert contact1;
      // ユーザー
      Profile p = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限'
      ];
      user.ProfileId = p.Id;
      user.ContactId = contact1.Id;
      user.FirstName = 'ユーザー';
      user.LastName = 'テスト';
      user.Email = 'test_user@example.com';
      user.emailencodingkey = 'UTF-8';
      user.languagelocalekey = 'zh_CN';
      user.localesidkey = 'ja_JP';
      user.timezonesidkey = 'Asia/Shanghai';
      user.Username = 'test_user@example.com';
      user.Alias = 'テユ';
      user.CommunityNickname = 'テストユーザー';
      insert user;
      // 代理店医院
      agency_hospital_link.Name = 'test1代理店医院';
      agency_hospital_link.Hospital__c = account1.Id;
      agency_hospital_link.Agency__c = consumable.Id;
      agency_hospital_link.OwnerId = user.Id;
      insert agency_hospital_link;
    }
    System.runAs(user) {
      //订单
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01_001';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '到货';
      Order1.Dealer_Info__c = account1.Id;
      Order1.RecordTypeid = '01210000000c9dqAAA';
      Order1.Order_ProType__c = 'ET';
      Order1.Order_ForHospital__c = account1.Id;
      insert Order1;
      Consumable_Orderdetails__c con = new Consumable_Orderdetails__c();
      con.Consumable_order__c = Order1.Id;
      insert con;
      LexConsumableAccountController.init(2, 1, 'thisYear');
      LexConsumableAccountController.init(2, 1, 'lastYear');
      LexConsumableAccountController.init(2, 1, '2023');
      LexConsumableAccountController.changeFiscalYearView('thisYear');
      LexConsumableAccountController.changeFiscalYearView('lastYear');
      // LexConsumableAccountController.changelistView('62. 医院_Hospital申请中的医院',consumable.Id,'ET',1,0,'Is_Active__c','ASC');
      // LexConsumableAccountController.changelistView('63. 医院_Hospital上周创建的医院',consumable.Id,'ET',1,0,'Is_Active__c','ASC');
    }
  }
  static testMethod void testMethod2() {
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      // 取引先
      account1.Name = 'test1医院';
      account1.RecordTypeId = '01210000000QemG';
      //   account1.Is_Active__c = '草案中';
      insert account1;
      account2.Name = 'test2医院';
      account2.RecordTypeId = '01210000000QemG';
      //   account2.Is_Active__c = '有効';
      insert account2;
      account3.Name = 'test3医院';
      account3.RecordTypeId = '01210000000QemG';
      //   account3.Is_Active__c = '申请中';
      insert account3;
      consumable.Name = 'test1经销商';
      consumable.RecordTypeId = '01210000000Qem1';
      insert consumable;
      contact1.AccountId = account1.Id;
      contact1.FirstName = '責任者';
      contact1.LastName = 'test1医院';
      insert contact1;
      // ユーザー
      Profile p = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限'
      ];
      user.ProfileId = p.Id;
      user.ContactId = contact1.Id;
      user.FirstName = 'ユーザー';
      user.LastName = 'テスト';
      user.Email = 'test_user@example.com';
      user.emailencodingkey = 'UTF-8';
      user.languagelocalekey = 'zh_CN';
      user.localesidkey = 'ja_JP';
      user.timezonesidkey = 'Asia/Shanghai';
      user.Username = 'test_user@example.com';
      user.Alias = 'テユ';
      user.CommunityNickname = 'テストユーザー';
      insert user;
      // 代理店医院
      agency_hospital_link.Name = 'test1代理店医院';
      agency_hospital_link.Hospital__c = account1.Id;
      agency_hospital_link.Agency__c = consumable.Id;
      agency_hospital_link.OwnerId = user.Id;
      insert agency_hospital_link;
    }
    System.runAs(user) {
      PageReference page = new PageReference('/apex/ConsumableAccount');
      System.Test.setCurrentPage(page);
      ConsumableAccountController ca = new ConsumableAccountController();
      //ConsumableAccountController.getlistViewOptions();
      ca.init();
      ca.filterName = '61. 医院_Hospital草案中的医院';
      ca.changelistView();
      ca.filterName = '62. 医院_Hospital申请中的医院';
      ca.changelistView();
      ca.filterName = '63. 医院_Hospital上周创建的医院';
      ca.changelistView();
      ca.refreshPageSize();
      ca.sortKey = '0';
      ca.accsort();
      ca.sortKey = '1';
      LexConsumableAccountController.changelistView(
        '62. 医院_Hospital申请中的医院',
        consumable.Id,
        'ET',
        1,
        0,
        'Is_Active__c',
        'ASC'
      );
      LexConsumableAccountController.changelistView(
        '63. 医院_Hospital上周创建的医院',
        consumable.Id,
        'ET',
        1,
        0,
        'Is_Active__c',
        'ASC'
      );
    }
  }
}
force-app/main/default/classes/LexConsumableAccountControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConsumableAccountInfoControllerTest.cls
New file
@@ -0,0 +1,16 @@
@isTest
private class LexConsumableAccountInfoControllerTest {
  @isTest
  public static void test_method_one() {
    // Implement test code
    Account account1 = new Account();
    account1.Name = 'test1医院';
    account1.RecordTypeId = '01210000000QemG';
    //account1.Is_Active__c = '草案中';
    insert account1;
    LexConsumableAccountInfoController cai = new LexConsumableAccountInfoController();
    LexConsumableAccountInfoController.init(account1.Id);
    LexConsumableAccountInfoController.init('');
  }
}
force-app/main/default/classes/LexConsumableAccountInfoControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConsumableAccountSOQL.cls
@@ -1,27 +1,41 @@
public with sharing class LexConsumableAccountSOQL {
    public static AggregateResult[] getAccountBySales(Datetime thisDatetime ,Datetime nextDatetime){
        AggregateResult[] arList = new List<AggregateResult>([
            SELECT count(id), Consumable_order__r.Order_ForHospital__r.name hospitalName, sum(Sale_amount__c) thisAmount
  public static AggregateResult[] getAccountBySales(
    Datetime thisDatetime,
    Datetime nextDatetime
  ) {
    AggregateResult[] arList = new List<AggregateResult>(
      [
        SELECT
          Consumable_order__r.Order_ForHospital__c,
          Consumable_order__r.Order_ForHospital__r.name hospitalName,
          sum(Sale_amount__c) thisAmount
            FROM Consumable_Orderdetails__c
            WHERE
                CreatedDate >= :thisDatetime
                AND CreatedDate < :nextDatetime
                AND Consumable_order__r.Order_ForHospital__r.name != ''
            GROUP BY Consumable_order__r.Order_ForHospital__r.Name
        GROUP BY
          Consumable_order__r.Order_ForHospital__c,
          Consumable_order__r.Order_ForHospital__r.name
            ORDER BY sum(Sale_amount__c) DESC
            LIMIT 10
        ]);
      ]
    );
        return arList;
    }
    public static AggregateResult[] getAccountTotalSales(Datetime thisDatetime ,Datetime nextDatetime){
  public static AggregateResult[] getAccountTotalSales(
    Datetime thisDatetime,
    Datetime nextDatetime
  ) {
        AggregateResult[] saleAmountList = [
            SELECT sum(Sale_amount__c) saleAmount
            FROM Consumable_Orderdetails__c
            WHERE CreatedDate >= :thisDatetime AND CreatedDate < :nextDatetime
      WHERE
        CreatedDate >= :thisDatetime
        AND CreatedDate < :nextDatetime
        AND Consumable_order__r.Order_ForHospital__r.name != ''
        ];
        return saleAmountList;
    }
}
force-app/main/default/classes/LexConsumableAccountSOQLTest.cls
New file
@@ -0,0 +1,148 @@
@isTest
private class LexConsumableAccountSOQLTest {
  @testSetup
  static void testInfo() {
    User userTest;
    Account accountItem;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      accountItem = new Account(
        Name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        Product_Limit_Date__c = 'Test01|5|55,Test02|2|4',
        AgentCode_Ext__c = '9999900'
      );
      insert accountItem;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountId = accountItem.id
      );
      insert core;
      userTest = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        UserPro_Type__c = 'ENG',
        Work_Location__c = '北京'
      );
      insert userTest;
    }
    System.runAs(userTest) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = '12124',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = '12124',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      Consumable_order__c createId = new Consumable_order__c();
      createId.Name = 'testMing1';
      createId.Order_status__c = '批准';
      createId.Deliver_date__c = Date.today();
      createId.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      createId.Order_type__c = '订单';
      createId.Order_ProType__c = 'ENG';
      createId.Dealer_Info__c = accountItem.Id;
      createId.Delivery_detail_count__c = 5;
      createId.orderPattern__c = 'hospitalorder';
      insert createId;
      List<Consumable_Orderdetails__c> coListTest = new List<Consumable_Orderdetails__c>();
      Consumable_Orderdetails__c conOrderDetail1 = new Consumable_Orderdetails__c();
      conOrderDetail1.Name = 'testConOrderDetail1';
      conOrderDetail1.Consumable_Arrivecount__c = 5;
      conOrderDetail1.Unitprice_To_agency__c = 0;
      conOrderDetail1.Delivery_List_RMB__c = 99;
      conOrderDetail1.Shipment_Count__c = 100;
      conOrderDetail1.Consumable_product__c = pro1.id;
      conOrderDetail1.Consumable_order__c = createId.Id;
      coListTest.add(conOrderDetail1);
      Consumable_Orderdetails__c conOrderDetail2 = new Consumable_Orderdetails__c();
      conOrderDetail2.Name = 'testConOrderDetail2';
      conOrderDetail1.Unitprice_To_agency__c = 0;
      conOrderDetail1.Delivery_List_RMB__c = 99;
      conOrderDetail2.Shipment_Count__c = 99;
      conOrderDetail2.Consumable_product__c = pro2.id;
      conOrderDetail2.Consumable_order__c = createId.Id;
      coListTest.add(conOrderDetail2);
      insert coListTest;
    }
  }
  @isTest
  static void testGetAccountBySales() {
    System.Test.startTest();
    DateTime thisDatetime = DateTime.newInstance(2023, 1, 1, 0, 0, 0);
    DateTime nextDatetime = DateTime.newInstance(2023, 6, 6, 0, 0, 0);
    AggregateResult[] arList = new List<AggregateResult>();
    arList = LexConsumableAccountSOQL.getAccountBySales(
      thisDatetime,
      nextDatetime
    );
    System.Test.stopTest();
  }
  @isTest
  static void testGetAccountTotalSales() {
    System.Test.startTest();
    DateTime thisDatetime = DateTime.newInstance(2023, 1, 1, 0, 0, 0);
    DateTime nextDatetime = DateTime.newInstance(2023, 6, 6, 0, 0, 0);
    AggregateResult[] saleAmountList = new List<AggregateResult>();
    saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
      thisDatetime,
      nextDatetime
    );
    System.Test.stopTest();
  }
}
force-app/main/default/classes/LexConsumableAccountSOQLTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConsumableController.cls
@@ -32,15 +32,22 @@
    public static String[] proLimitAndDate = new List<String>{};
    /*****************画面表示Bean******************/
    private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
    public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview { get; set; }
  public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsview {
    get;
    set;
  }
    public static Integer ConsumableorderdetailsCount {
        get {
            return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size();
      return consumableorderdetailsRecords == null
        ? 0
        : consumableorderdetailsRecords.size();
        }
    }
    public static Integer ConsumableorderdetailsviewCount {
        get {
            return consumableorderdetailsRecordsview == null ? 0 : consumableorderdetailsRecordsview.size();
      return consumableorderdetailsRecordsview == null
        ? 0
        : consumableorderdetailsRecordsview.size();
        }
    }
    public static List<String> lower = new List<String>();
@@ -160,9 +167,13 @@
            consumableorderdetailsRecordsview = reSet;
        }
        Integer pagestartNo = (con.getPageNumber() * size) - size;
        Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1);
    Integer pageendNo = (con.getPageNumber() * size) > noOfRecords
      ? noOfRecords
      : (con.getPageNumber() * size - 1);
        Integer addNo = 0;
        for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) {
    for (
      Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++
    ) {
            Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c();
            if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) {
                addNo++;
@@ -207,7 +218,11 @@
        ESetId = esetId;
        methodType = type;
        if(String.isBlank(methodType) && String.isNotBlank(ESetId)){
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
      List<Consumable_order__c> oclist = [
        SELECT orderPattern__c
        FROM Consumable_order__c
        WHERE id = :ESetid
      ];
            methodType = oclist.get(0).orderPattern__c;
        }
        statusEdit = keywordStr;
@@ -222,17 +237,35 @@
            decisionCode = '';
            sumPrice = 0;
            specialCampaign = false;
            if (ESetId != null && ESetId != '' && statusEdit == '' && statusEdit == null) {
      if (
        ESetId != null &&
        ESetId != '' &&
        statusEdit == '' &&
        statusEdit == null
      ) {
                editAble = false;
            } else if ((ESetId == null || ESetId == '') && (statusEdit == '' || statusEdit == null)) {
      } else if (
        (ESetId == null || ESetId == '') &&
        (statusEdit == '' ||
        statusEdit == null)
      ) {
                editAble = true;
            } else if (ESetId != null && ESetId != '' && statusEdit != '' && statusEdit != null) {
      } else if (
        ESetId != null &&
        ESetId != '' &&
        statusEdit != '' &&
        statusEdit != null
      ) {
                editAble = true;
            }
            userId = UserInfo.getUserId();
            List<user> Useracc = new List<user>();
            //lt 20230517 安徽两票制 add ,OSHFLG__c
            Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c,OSHFLG__c FROM user WHERE id = :userId ];
      Useracc = [
        SELECT accountid, Work_Location__c, UserPro_Type__c, OSHFLG__c
        FROM user
        WHERE id = :userId
      ];
            accountid = Useracc[0].accountid;
            userWorkLocation = Useracc[0].Work_Location__c;
            agencyProType = Useracc[0].UserPro_Type__c;
@@ -241,8 +274,7 @@
            OSHFLG = Useracc[0].OSHFLG__c; //lt 20230517 安徽两票制 add
            if(OSHFLG){
                agencyProType1 = 'OSH';
            }
            else if(String.isBlank(Useracc[0].UserPro_Type__c)){
      } else if (String.isBlank(Useracc[0].UserPro_Type__c)) {
                agencyProType1 = 'ET';
            }
            //lt 20230526 安徽两票制 end
@@ -250,7 +282,11 @@
                agencyProType = 'ET';
            }
            //错误信息提示
            if (String.isNotBlank(methodType) && methodType.equals('hospitalorder') && agencyProType == 'ET') {
      if (
        String.isNotBlank(methodType) &&
        methodType.equals('hospitalorder') &&
        agencyProType == 'ET'
      ) {
                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '您没有订货医院特价产品的权限!'));
                errorMsgList.add('您没有订货医院特价产品的权限!');
            }
@@ -264,9 +300,9 @@
                    RecordType.DeveloperName = 'AgencyContract'
                    AND Contract_Decide_Start_Date__c <= :dateToday
                    AND Contract_Decide_End_Date__c >= :dateToday
                    and Contact_Type__c like :agencyProType1//lt 20230517 安徽两票制 add 1
                    and Agent_Ref__c =:accountid
                    and OSH_Dealer__c =: OSHFLG  //lt 20230517 安徽两票制 add
          AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1
          AND Agent_Ref__c = :accountid
          AND OSH_Dealer__c = :OSHFLG //lt 20230517 安徽两票制 add
            ];
            for (Account contract : contractList) {
                contactDealer.add(contract.Id);
@@ -274,7 +310,11 @@
            DealerProductMap = new Map<Id, Dealer_Product__c>();
            DealerProductId = getDealerProductId();
            Account accountInfo = [
                SELECT Name, Dealer_discount__c, Product_Limit_Date__c, Product_Limit_DateENG__c
        SELECT
          Name,
          Dealer_discount__c,
          Product_Limit_Date__c,
          Product_Limit_DateENG__c
                FROM account
                WHERE id = :accountid
            ];
@@ -330,7 +370,7 @@
                    FROM Account
                    WHERE
                        ParentId = :accountid
                        AND Contact_Type__c like :agencyProType1 //lt 20230517 安徽两票制 add 1
            AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1
                        AND Contract_Decide_Start_Date__c <= :Date.Today()
                        AND Contract_Decide_End_Date__c >= :Date.Today()
                        AND OSH_Dealer__c =: OSHFLG  //lt 20230517 安徽两票制 add
@@ -347,15 +387,29 @@
                product2Selected = Database.query(soql);
                for (Integer i = 0; i < product2Selected.size(); i++) {
                    consumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(product2Selected[i]));
                    MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
          consumableorderdetailsRecords.add(
            new ConsumableorderdetailsInfo(product2Selected[i])
          );
          MidMap.put(
            product2Selected[i].Id,
            new ConsumableorderdetailsInfo(product2Selected[i])
          );
                }
                //只有在协议订货时会走这个for循环 其他两种订货模式都走的searchorderdetails方法
                if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
        if (
          String.isBlank(methodType) ||
          (!methodType.equals('promotionorder') &&
          !methodType.equals('hospitalorder'))
        ) {
                    for (Integer i = 0; i < countDel.size(); i++) {
                        if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
            if (
              countDel[i].promotionorder__c == false &&
              countDel[i].hospitalSpecialOffer__c == false
            ) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                ConsumableorderdetailsInfo Jstage = MidMap.get(
                  countDel[i].Consumable_Product__c
                );
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
@@ -370,26 +424,48 @@
                //经销商定价 计算
                for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
          bss.packing_list = Integer.valueOf(
            bss.Prod.Product2__r.Packing_list_manual__c
          );
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
            bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id)
              .Special_Campaign_Price__c;
            bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id)
              .Campaign_EndDate__c;
            bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id)
              .OrderGoods_Limit__c;
                    }
                    consumableorderdetailsRecords.add(bss);
                }
                consumableorderdetailsRecords.sort();
                if (methodType != null && methodType != '' && (methodType.equals('hospitalorder') || methodType.equals('promotionorder'))) {
                    searchorderdetails(methodType,accountid,hospitalId,contractId,userWorkLocation,accountName,proLimitAndDate,editAble);
        if (
          methodType != null &&
          methodType != '' &&
          (methodType.equals('hospitalorder') ||
          methodType.equals('promotionorder'))
        ) {
          searchorderdetails(
            methodType,
            accountid,
            hospitalId,
            contractId,
            userWorkLocation,
            accountName,
            proLimitAndDate,
            editAble
          );
                    isfirst = true;
                }
                getPageInfo();
            } else {
                if (methodType != null && methodType.equals('hospitalorder')) {
                    List<Consumable_order__c> oclist = [
                        SELECT orderPattern__c, Order_ForHospital__c, Order_ForHospital__r.Name
            SELECT
              orderPattern__c,
              Order_ForHospital__c,
              Order_ForHospital__r.Name
                        FROM Consumable_order__c
                        WHERE id = :ESetid
                    ];
@@ -425,7 +501,11 @@
                    contractName = coc.Order_effective_contact__r.Name;
                    contractId = coc.Order_effective_contact__r.Id;
                }
                if (qs[0].Order_status__c == '已提交' || qs[0].Order_status__c == '批准' || qs[0].Order_status__c == '附件上传完成') {
        if (
          qs[0].Order_status__c == '已提交' ||
          qs[0].Order_status__c == '批准' ||
          qs[0].Order_status__c == '附件上传完成'
        ) {
                    saveBtnDisabled = true;
                    sorderBtnDisabled = true;
                    editDelCommitBtnDisabled = false;
@@ -468,27 +548,22 @@
                initStandardController();
                product2Selected = Database.query(soql);
                for (Integer i = 0; i < product2Selected.size(); i++) {
                    MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
          MidMap.put(
            product2Selected[i].Id,
            new ConsumableorderdetailsInfo(product2Selected[i])
          );
                }
                for (Integer i = 0; i < countDel.size(); i++) {
                    //add by rentx 2020-12-09
                    if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
          if (
            String.isNotBlank(methodType) && methodType.equals('hospitalorder')
          ) {
                        if (countDel[i].hospitalSpecialOffer__c == true) {
                            //然后循环CountDel去修改map里的allnumber
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
                                    Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                                }
                                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                            }
                        }
                    } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
                        if (countDel[i].promotionorder__c == true) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                ConsumableorderdetailsInfo Jstage = MidMap.get(
                  countDel[i].Consumable_Product__c
                );
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
@@ -498,11 +573,34 @@
                            }
                        }
                    } else if (
                        String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))
            String.isBlank(methodType) || methodType.equals('promotionorder')
                    ) {
                        if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
            if (countDel[i].promotionorder__c == true) {
                            if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                                ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
                ConsumableorderdetailsInfo Jstage = MidMap.get(
                  countDel[i].Consumable_Product__c
                );
                if (countDel[i].Box_Piece__c == '盒') {
                  Jstage.allnumber = Jstage.allnumber + 1;
                } else {
                  Jstage.allnumber_piece = Jstage.allnumber_piece + 1;
                }
                MidMap.put(countDel[i].Consumable_Product__c, Jstage);
              }
            }
          } else if (
            String.isBlank(methodType) ||
            (!methodType.equals('promotionorder') &&
            !methodType.equals('hospitalorder'))
          ) {
            if (
              countDel[i].promotionorder__c == false &&
              countDel[i].hospitalSpecialOffer__c == false
            ) {
              if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                ConsumableorderdetailsInfo Jstage = MidMap.get(
                  countDel[i].Consumable_Product__c
                );
                                if (countDel[i].Box_Piece__c == '盒') {
                                    Jstage.allnumber = Jstage.allnumber + 1;
                                } else {
@@ -516,19 +614,26 @@
                consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
                //再把map里的值从新赋给ConsumableorderdetailsRecords
                for (ConsumableorderdetailsInfo bss : MidMap.values()) {
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
          bss.packing_list = Integer.valueOf(
            bss.Prod.Product2__r.Packing_list_manual__c
          );
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
            bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id)
              .Special_Campaign_Price__c;
            bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id)
              .Campaign_EndDate__c;
            bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id)
              .OrderGoods_Limit__c;
                    }
                    consumableorderdetailsRecords.add(bss);
                }
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) {
                    ass.sortBy = sortOrderAsc;
                    for (Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected) {
          for (
            Consumable_Orderdetails__c cdc1 : ConsumableorderdetailsSelected
          ) {
                        sumPrice += cdc1.Sum_of_money__c;
                        if (ass.prod.Id == cdc1.Consumable_Product__c) {
                            ass.check = true;
@@ -543,10 +648,31 @@
                //         attachmentRecoeds.add(new ConsumableorderdetailsInfo(attachmentinfo[i]));
                //     }
                // }
                List<ContentVersion> cvInfo = [SELECT Id, Title, OwnerId,Owner.Name, CreatedDate,ContentDocumentId FROM ContentVersion WHERE FirstPublishLocationId = :ESetId];
        List<ContentDocumentLink> links = [
          SELECT Id, ContentDocumentId
          FROM ContentDocumentLink
          WHERE LinkedEntityId = :ESetId
        ];
        if (links != null && links.size() > 0) {
          List<String> documentIds = new List<String>();
          for (ContentDocumentLink link : links) {
            documentIds.add(link.ContentDocumentId);
          }
          List<ContentVersion> cvInfo = [
            SELECT
              Id,
              Title,
              OwnerId,
              Owner.Name,
              CreatedDate,
              ContentDocumentId
            FROM ContentVersion
            WHERE ContentDocumentId IN :documentIds
          ];
                if (cvInfo.size() > 0) {
                    for (Integer i = 0; i < cvInfo.size(); i++) {
                        attachmentRecoeds.add(new ConsumableorderdetailsInfo(cvInfo[i]));
            }
                    }
                }
                //
@@ -560,7 +686,11 @@
            List<String> upper = new List<String>();
            if (String.isNotBlank(ESetid)) {
                for (ConsumableorderdetailsInfo bss : consumableorderdetailsRecords) {
                    if(bss.esd.Consumable_count__c != null && bss.allnumber != null && bss.upperlimit != null){
          if (
            bss.esd.Consumable_count__c != null &&
            bss.allnumber != null &&
            bss.upperlimit != null
          ) {
                        if (bss.esd.Consumable_count__c + bss.allnumber > bss.upperlimit) {
                            upper.add(bss.esd.Consumable_Product__r.Name__c);
                        }
@@ -589,7 +719,10 @@
            AggregateResult[] categoryList = [
                SELECT Count(id), Category3_text__c c3c
                FROM Product2__c
                WHERE Estimation_Entry_Possibility__c = '○' AND Product_Type__c LIKE :agencyProType AND Category3_text__c != NULL
        WHERE
          Estimation_Entry_Possibility__c = '○'
          AND Product_Type__c LIKE :agencyProType
          AND Category3_text__c != NULL
                GROUP BY Category3_text__c
            ];
            //categoty3
@@ -652,7 +785,10 @@
    }
    @AuraEnabled
    public static Results categoryAllload(String agencyProTypeStr, String category3Str){
  public static Results categoryAllload(
    String agencyProTypeStr,
    String category3Str
  ) {
        Results results = new Results();
        agencyProType = agencyProTypeStr;
        category3 = category3Str;
@@ -708,7 +844,11 @@
    }
    @AuraEnabled
    public static Results categoryload(String agencyProTypeStr, String category3Str, String category4Str){
  public static Results categoryload(
    String agencyProTypeStr,
    String category3Str,
    String category4Str
  ) {
        Results results = new Results();
        agencyProType = agencyProTypeStr;
        category3 = category3Str;
@@ -773,12 +913,17 @@
        List<Product2__c> product2Selected = [
            SELECT Id, Name, Name__c, Intra_Trade_List_RMB__c, Asset_Model_No__c
            FROM Product2__c
            WHERE Pro2_Dealer_Object__c = TRUE AND Estimation_Entry_Possibility__c = '○'
      WHERE
        Pro2_Dealer_Object__c = TRUE
        AND Estimation_Entry_Possibility__c = '○'
        ];
        for (Integer i = 0; i < product2Selected.size(); i++) {
            lowerRecord.add(new ConsumableorderdetailsInfo(product2Selected[i]));
            //先把ConsumableorderdetailsRecords 做成map
            midMaprecord.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
      midMaprecord.put(
        product2Selected[i].Id,
        new ConsumableorderdetailsInfo(product2Selected[i])
      );
        }
        List<Consumable_order_details2__c> countDel = [
            SELECT
@@ -813,7 +958,9 @@
                if (countDel[i].hospitalSpecialOffer__c == true) {
                    //然后循环CountDel去修改map里的allnumber
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
            ConsumableorderdetailsInfo Jstage = midMaprecord.get(
              countDel[i].Consumable_Product__c
            );
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
@@ -823,10 +970,14 @@
                        midMaprecord.put(countDel[i].Consumable_Product__c, Jstage);
                    }
                }
            } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
      } else if (
        String.isBlank(methodType) || methodType.equals('promotionorder')
      ) {
                if (countDel[i].promotionorder__c == true) {
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
            ConsumableorderdetailsInfo Jstage = midMaprecord.get(
              countDel[i].Consumable_Product__c
            );
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
@@ -835,10 +986,19 @@
                        midMaprecord.put(countDel[i].Consumable_Product__c, Jstage);
                    }
                }
            } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
      } else if (
        String.isBlank(methodType) ||
        (!methodType.equals('promotionorder') &&
        !methodType.equals('hospitalorder'))
      ) {
        if (
          countDel[i].promotionorder__c == false &&
          countDel[i].hospitalSpecialOffer__c == false
        ) {
                    if (midMaprecord.containsKey(countDel[i].Consumable_Product__c)) {
                        ConsumableorderdetailsInfo Jstage = midMaprecord.get(countDel[i].Consumable_Product__c);
            ConsumableorderdetailsInfo Jstage = midMaprecord.get(
              countDel[i].Consumable_Product__c
            );
                        if (countDel[i].Box_Piece__c == '盒') {
                            Jstage.allnumber = Jstage.allnumber + 1;
                        } else {
@@ -877,17 +1037,26 @@
        for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) {
            if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) {
                ass.lowerlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|'))
          productLimt.get(ass.Prod.Asset_Model_No__c)
            .subString(
              0,
              productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')
            )
                );
                ass.upperlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1)
          productLimt.get(ass.Prod.Asset_Model_No__c)
            .subString(
              productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1
            )
                );
            }
        }
    }
    //全部库存上下限
    private static void allProductLimt(List<ConsumableorderdetailsInfo> lowerRecord) {
  private static void allProductLimt(
    List<ConsumableorderdetailsInfo> lowerRecord
  ) {
        String nowName = null, nowRightAsstModelNo = null;
        Map<String, String> productLimt = new Map<String, String>();
        for (Integer i = 0; i < proLimitAndDate.size(); i++) {
@@ -901,10 +1070,17 @@
        for (ConsumableorderdetailsInfo ass : lowerRecord) {
            if (productLimt.containsKey(ass.Prod.Asset_Model_No__c)) {
                ass.lowerlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(0, productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|'))
          productLimt.get(ass.Prod.Asset_Model_No__c)
            .subString(
              0,
              productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|')
            )
                );
                ass.upperlimit = decimal.valueOf(
                    productLimt.get(ass.Prod.Asset_Model_No__c).subString(productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1)
          productLimt.get(ass.Prod.Asset_Model_No__c)
            .subString(
              productLimt.get(ass.Prod.Asset_Model_No__c).indexOf('|') + 1
            )
                );
            }
        }
@@ -948,8 +1124,14 @@
        methodType = methodTypeStr;
        editAble = editAbleStr;
        proLimitAndDate = proLimitAndDateList;
        dealerProductId = (List<String>)JSON.deserialize(dealerProductIdStr, List<String>.class);
        consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsviewStr, List<ConsumableorderdetailsInfo>.class);
    dealerProductId = (List<String>) JSON.deserialize(
      dealerProductIdStr,
      List<String>.class
    );
    consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      consumableorderdetailsRecordsviewStr,
      List<ConsumableorderdetailsInfo>.class
    );
        size = Integer.valueOf(System.Label.orderdetLimitsize);
        pageLimit = Integer.valueOf(System.Label.orderdetPageLimitsize);
        try {
@@ -990,20 +1172,35 @@
            ];
            List<Product2__c> product2Selected = new List<Product2__c>();
            consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
            soql = makeSoql(category1, category_Goods, category3, category4, category5, specialCampaign, DealerProductId);
      soql = makeSoql(
        category1,
        category_Goods,
        category3,
        category4,
        category5,
        specialCampaign,
        DealerProductId
      );
            size = Integer.valueOf(System.Label.orderdetLimitsize);
            initStandardController();
            System.debug('soql:'+soql);
            product2Selected = Database.query(soql);
            for (Integer i = 0; i < product2Selected.size(); i++) {
                MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
        MidMap.put(
          product2Selected[i].Id,
          new ConsumableorderdetailsInfo(product2Selected[i])
        );
            }
            for (Integer i = 0; i < countDel.size(); i++) {
                //然后循环CountDel去修改map里的allnumber
                if (String.isNotBlank(methodType) && methodType.equals('hospitalorder')) {
        if (
          String.isNotBlank(methodType) && methodType.equals('hospitalorder')
        ) {
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
              ConsumableorderdetailsInfo Jstage = MidMap.get(
                countDel[i].Consumable_Product__c
              );
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
@@ -1012,10 +1209,14 @@
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || methodType.equals('promotionorder')) {
        } else if (
          String.isBlank(methodType) || methodType.equals('promotionorder')
        ) {
                    if (countDel[i].promotionorder__c == true) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
              ConsumableorderdetailsInfo Jstage = MidMap.get(
                countDel[i].Consumable_Product__c
              );
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
@@ -1024,10 +1225,19 @@
                            MidMap.put(countDel[i].Consumable_Product__c, Jstage);
                        }
                    }
                } else if (String.isBlank(methodType) || (!methodType.equals('promotionorder') && !methodType.equals('hospitalorder'))) {
                    if (countDel[i].promotionorder__c == false && countDel[i].hospitalSpecialOffer__c == false) {
        } else if (
          String.isBlank(methodType) ||
          (!methodType.equals('promotionorder') &&
          !methodType.equals('hospitalorder'))
        ) {
          if (
            countDel[i].promotionorder__c == false &&
            countDel[i].hospitalSpecialOffer__c == false
          ) {
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
              ConsumableorderdetailsInfo Jstage = MidMap.get(
                countDel[i].Consumable_Product__c
              );
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
@@ -1044,12 +1254,17 @@
                    continue;
                } else {
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
            bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id)
              .Special_Campaign_Price__c;
            bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id)
              .Campaign_EndDate__c;
            bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id)
              .OrderGoods_Limit__c;
                    }
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
          bss.packing_list = Integer.valueOf(
            bss.Prod.Product2__r.Packing_list_manual__c
          );
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    consumableorderdetailsRecords.add(bss);
@@ -1072,7 +1287,10 @@
                getConsumableShowTableFieldValue();
                results.result = 'Success';
                results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
                results.errorMsg = '搜索到' + consumableorderdetailsRecords.size() + '件产品';
        results.errorMsg =
          '搜索到' +
          consumableorderdetailsRecords.size() +
          '件产品';
            }else {
                getConsumableShowTableFieldValue();
                results.result = 'Fail';
@@ -1135,7 +1353,10 @@
                List<Dealer_Product__c> dpclist = [
                    SELECT Id, Dealer_Product2__c
                    FROM Dealer_Product__c
                    WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
          WHERE
            Dealer_Contact__c = :contractId
            AND (Special_Discount__c != NULL
            OR Special_Campaign_Price__c != NULL)
                ];
                if (dpclist != null && dpclist.size() > 0) {
                    String ids = '(';
@@ -1161,7 +1382,10 @@
            consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
            product2Selected = Database.query(soql);
            for (Integer i = 0; i < product2Selected.size(); i++) {
                MidMap.put(product2Selected[i].Id, new ConsumableorderdetailsInfo(product2Selected[i]));
        MidMap.put(
          product2Selected[i].Id,
          new ConsumableorderdetailsInfo(product2Selected[i])
        );
            }
            List<Consumable_order_details2__c> countDel = [
                SELECT
@@ -1192,7 +1416,9 @@
                    if (countDel[i].hospitalSpecialOffer__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
              ConsumableorderdetailsInfo Jstage = MidMap.get(
                countDel[i].Consumable_Product__c
              );
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
@@ -1206,7 +1432,9 @@
                    if (countDel[i].promotionorder__c == true) {
                        //然后循环CountDel去修改map里的allnumber
                        if (MidMap.containsKey(countDel[i].Consumable_Product__c)) {
                            ConsumableorderdetailsInfo Jstage = MidMap.get(countDel[i].Consumable_Product__c);
              ConsumableorderdetailsInfo Jstage = MidMap.get(
                countDel[i].Consumable_Product__c
              );
                            if (countDel[i].Box_Piece__c == '盒') {
                                Jstage.allnumber = Jstage.allnumber + 1;
                            } else {
@@ -1224,12 +1452,17 @@
                    continue;
                } else {
                    if (DealerProductMap.containsKey(bss.Prod.Id)) {
                        bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id).Special_Campaign_Price__c;
                        bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id).Campaign_EndDate__c;
                        bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id).OrderGoods_Limit__c;
            bss.SpecialCampaignPrice = DealerProductMap.get(bss.Prod.Id)
              .Special_Campaign_Price__c;
            bss.Campaign_EndDate = DealerProductMap.get(bss.Prod.Id)
              .Campaign_EndDate__c;
            bss.orderGoods_Limit = DealerProductMap.get(bss.Prod.Id)
              .OrderGoods_Limit__c;
                    }
                    bss.sortBy = sortOrderAsc;
                    bss.packing_list = Integer.valueOf(bss.Prod.Product2__r.Packing_list_manual__c);
          bss.packing_list = Integer.valueOf(
            bss.Prod.Product2__r.Packing_list_manual__c
          );
                    bss.approbation_No = bss.Prod.Product2__r.SFDA_Approbation_No__c;
                    bss.expiration_Date = bss.Prod.Product2__r.SFDA_Expiration_Date__c;
                    consumableorderdetailsRecords.add(bss);
@@ -1250,7 +1483,10 @@
            results.consumableorderdetailsRecordsview = consumableorderdetailsRecordsview;
            if(consumableorderdetailsRecordsview.size() > 0){
                results.result = 'Success';
                results.errorMsg = '共搜索到'+consumableorderdetailsRecordsview.size()+'条数据';
        results.errorMsg =
          '共搜索到' +
          consumableorderdetailsRecordsview.size() +
          '条数据';
            }else {
                results.result = 'Fail';
                results.errorMsg = '没有搜索到相关数据';
@@ -1271,9 +1507,13 @@
            consumableorderdetailsRecordsview = reSet;
        }
        Integer pagestartNo = (con.getPageNumber() * size) - size;
        Integer pageendNo = (con.getPageNumber() * size) > noOfRecords ? noOfRecords : (con.getPageNumber() * size - 1);
    Integer pageendNo = (con.getPageNumber() * size) > noOfRecords
      ? noOfRecords
      : (con.getPageNumber() * size - 1);
        Integer addNo = 0;
        for (Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++) {
    for (
      Integer i = pagestartNo; i < consumableorderdetailsRecords.size(); i++
    ) {
            Consumable_Orderdetails__c orderdetails1 = new Consumable_Orderdetails__c();
            if (selectedIdMap.containsKey(consumableorderdetailsRecords[i].Prod.Id)) {
                addNo++;
@@ -1328,7 +1568,10 @@
                continue;
            } else {
                ProductId.add(dealerProduct.Dealer_Product2__c);
                DealerProductIdMap.put(dealerProduct.Dealer_Product2__c, dealerProduct.Dealer_Product2__c);
        DealerProductIdMap.put(
          dealerProduct.Dealer_Product2__c,
          dealerProduct.Dealer_Product2__c
        );
            }
        }
        return ProductId;
@@ -1385,7 +1628,10 @@
                List<Dealer_Product__c> dpclist = [
                    SELECT Id, Dealer_Product2__c
                    FROM Dealer_Product__c
                    WHERE Dealer_Contact__c = :contractId AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
          WHERE
            Dealer_Contact__c = :contractId
            AND (Special_Discount__c != NULL
            OR Special_Campaign_Price__c != NULL)
                ];
                if (dpclist != null && dpclist.size() > 0) {
@@ -1457,8 +1703,18 @@
        ESetId = eSetidStr;
        try {
            statusEdit = 'Redirect';
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
            String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c;
      List<Consumable_order__c> oclist = [
        SELECT orderPattern__c
        FROM Consumable_order__c
        WHERE id = :ESetid
      ];
      String url =
        '/lexconsumable?ESetid=' +
        ESetid +
        '&KeyWords=' +
        statusEdit +
        '&type=' +
        oclist.get(0).orderPattern__c;
            results.result = 'Success';
            results.url = url;
        } catch (Exception e) {
@@ -1477,8 +1733,18 @@
        returnOrder = true;
        try {
            statusEdit = 'Redirect';
            List<Consumable_order__c> oclist = [SELECT orderPattern__c FROM Consumable_order__c WHERE id = :ESetid];
            String url = '/lexconsumable?ESetid=' + ESetid + '&KeyWords=' + statusEdit + '&type=' + oclist.get(0).orderPattern__c;
      List<Consumable_order__c> oclist = [
        SELECT orderPattern__c
        FROM Consumable_order__c
        WHERE id = :ESetid
      ];
      String url =
        '/lexconsumable?ESetid=' +
        ESetid +
        '&KeyWords=' +
        statusEdit +
        '&type=' +
        oclist.get(0).orderPattern__c;
            results.result = 'Success';
            results.url = url;
        } catch (Exception e) {
@@ -1490,7 +1756,11 @@
    //上传附件
    @AuraEnabled
    public static Results filesUpload(String pId, String fileName, String base64Data) {
  public static Results filesUpload(
    String pId,
    String fileName,
    String base64Data
  ) {
        Results results = new Results();
        try {
            base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
@@ -1501,7 +1771,11 @@
            cv.VersionData = EncodingUtil.base64Decode(base64Data);
            cv.IsMajorVersion = true;
            insert cv;
            Consumable_order__c c = [SELECT Id FROM Consumable_order__c WHERE Id =:pId];
      Consumable_order__c c = [
        SELECT Id
        FROM Consumable_order__c
        WHERE Id = :pId
      ];
            c.Consumable_pdf_insert_day__c = Date.today();
            update c;
            results.result = 'Success';
@@ -1556,11 +1830,18 @@
                FROM Consumable_Orderdetails__c
                WHERE Consumable_order__c = :ESetId
            ]) {
                prodMap.put(cod1.Consumable_product__r.Product2__c, cod1.Consumable_product__r.Name__c);
        prodMap.put(
          cod1.Consumable_product__r.Product2__c,
          cod1.Consumable_product__r.Name__c
        );
            }
            // GZW 提交产品无效 出错误消息
            System.debug(prodMap);
            Map<String, String> chkMap = OpportunityWebService.MapCheckProRegisterDecide(prodMap, accountid, '');
      Map<String, String> chkMap = OpportunityWebService.MapCheckProRegisterDecide(
        prodMap,
        accountid,
        ''
      );
            System.debug(chkMap);
            if (chkMap.size() > 0) {
                if (chkMap.containsKey('agency')) {
@@ -1573,12 +1854,16 @@
                            // ApexPages.addmessage(
                            //     new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。')
                            // );
                            errorMsgList.add('产品 ' + prodMap.get(proId) + ' 没有有效的注册证。');
              errorMsgList.add(
                '产品 ' + prodMap.get(proId) + ' 没有有效的注册证。'
              );
                        } else if (chkMap.get(proId) == '2') {
                            // ApexPages.addmessage(
                            //     new ApexPages.message(ApexPages.severity.Error, '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。')
                            // );
                            errorMsgList.add('产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。');
              errorMsgList.add(
                '产品 ' + prodMap.get(proId) + ' 超过经销商经营范围。'
              );
                        }
                    }
                }
@@ -1618,7 +1903,20 @@
        Boolean OSHFLGStr
    ) {
        ESetId = '';
        return save(contractNameStr,cocStr,agencyProTypeStr,accountidStr,consumableorderdetailsRecordsviewStr,contactDealerStr,methodTypeStr,ESetId,hospitalIdStr,contractIdStr,agencyProType1Str,OSHFLGStr);
    return save(
      contractNameStr,
      cocStr,
      agencyProTypeStr,
      accountidStr,
      consumableorderdetailsRecordsviewStr,
      contactDealerStr,
      methodTypeStr,
      ESetId,
      hospitalIdStr,
      contractIdStr,
      agencyProType1Str,
      OSHFLGStr
    );
    }
    //保存按钮 
@@ -1649,10 +1947,22 @@
        contractId = contractIdStr;
        agencyProType1 = agencyProType1Str;
        OSHFLG = OSHFLGStr;
        coc = (Consumable_order__c)JSON.deserialize(cocStr, Consumable_order__c.class);
        contactDealer = (List<String>)JSON.deserialize(contactDealerStr, List<String>.class);
        System.debug('consumableorderdetailsRecordsviewStr:'+consumableorderdetailsRecordsviewStr);
        consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsviewStr, List<ConsumableorderdetailsInfo>.class);
    coc = (Consumable_order__c) JSON.deserialize(
      cocStr,
      Consumable_order__c.class
    );
    contactDealer = (List<String>) JSON.deserialize(
      contactDealerStr,
      List<String>.class
    );
    System.debug(
      'consumableorderdetailsRecordsviewStr:' +
      consumableorderdetailsRecordsviewStr
    );
    consumableorderdetailsRecordsview = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      consumableorderdetailsRecordsviewStr,
      List<ConsumableorderdetailsInfo>.class
    );
        if(coc.Offers_Price__c != null){
            String offerStr = String.valueOf(coc.Offers_Price__c);
            bargainPrice = Decimal.valueOf(offerStr.replace(',',''));
@@ -1666,14 +1976,18 @@
                return results;
            }
            List<Account> contract = [
                SELECT Id, Name, Contract_Department_Class__c, Contract_Quote_Decide_Flag__c
        SELECT
          Id,
          Name,
          Contract_Department_Class__c,
          Contract_Quote_Decide_Flag__c
                FROM account
                WHERE
                    Name = :contractName
                    AND Id =: contractId   //lt 20230517 安徽两票制 add
                    AND Contract_Decide_Start_Date__c <= :Date.Today()
                    AND Contract_Decide_End_Date__c >= :Date.Today()
                    AND Contact_Type__c like :agencyProType1  //lt 20230517 安徽两票制 add 1
          AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add 1
                    AND Agent_Ref__c =:accountid
                    AND OSH_Dealer__c =: OSHFLG  //lt 20230517 安徽两票制 add
            ];
@@ -1695,7 +2009,9 @@
            //add by rentx 2020-11-25
            List<String> tpids = new List<String>();
            //add by rentx 2020-11-25
            for (ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview) {
      for (
        ConsumableorderdetailsInfo CheckCount : consumableorderdetailsRecordsview
      ) {
                FLG = FLG + 1;
                if (CheckCount.check == false) {
                    Count = Count + 1;
@@ -1704,7 +2020,10 @@
                    //add by rentx 2020-11-25
                    tpids.add(CheckCount.Prod.Id);
                    //add by rentx 2020-11-25
                    if (CheckCount.esd.Consumable_Count__c == null || CheckCount.esd.Consumable_Count__c == 0) {
          if (
            CheckCount.esd.Consumable_Count__c == null ||
            CheckCount.esd.Consumable_Count__c == 0
          ) {
                        // CheckCount.esd.Consumable_Count__c.addError('请输入采购数量');
                        results.result = 'Fail';
                        results.errorMsg = '请输入采购数量';
@@ -1712,7 +2031,10 @@
                    }
                    if (
                        CheckCount.orderGoods_Limit > 0 &&
                        math.mod(Integer.valueOf(CheckCount.esd.Consumable_Count__c), Integer.valueOf(CheckCount.orderGoods_Limit)) > 0
            math.mod(
              Integer.valueOf(CheckCount.esd.Consumable_Count__c),
              Integer.valueOf(CheckCount.orderGoods_Limit)
            ) > 0
                    ) {
                        // CheckCount.esd.Consumable_Count__c.addError('请输入促销数量的倍数');
                        results.result = 'Fail';
@@ -1728,13 +2050,20 @@
            }
            //=======================================医院特价,有金额的话取金额
            Map<String, Decimal> dealerHospitalmMap = new Map<String, Decimal>();
            List<hospitalprice__c> hplist = [select Id,hospital__c,mPrice__c,pPrice__c,product__c,account__c
                                                from hospitalprice__c
                                                where product__c in :tpids and mPrice__c <> null and account__c=:accountid
      List<hospitalprice__c> hplist = [
        SELECT Id, hospital__c, mPrice__c, pPrice__c, product__c, account__c
        FROM hospitalprice__c
        WHERE
          product__c IN :tpids
          AND mPrice__c != NULL
          AND account__c = :accountid
                                                ];
            for (hospitalprice__c dealerProduct : hplist) {
                if (dealerProduct.mPrice__c != null) {                   
                    dealerHospitalmMap.put('' + dealerProduct.hospital__c + dealerProduct.product__c,dealerProduct.mPrice__c);
          dealerHospitalmMap.put(
            '' + dealerProduct.hospital__c + dealerProduct.product__c,
            dealerProduct.mPrice__c
          );
                }
            }
            //促销订货 根据经销商产品中的数据计算金额
@@ -1775,18 +2104,25 @@
                    Special_Discount__c,
                    OrderGoods_Limit__c
                FROM Dealer_Product__c
                WHERE Dealer_Contact__c IN :contactDealer AND (Special_Discount__c != NULL OR Special_Campaign_Price__c != NULL)
        WHERE
          Dealer_Contact__c IN :contactDealer
          AND (Special_Discount__c != NULL
          OR Special_Campaign_Price__c != NULL)
            ];
            for (Dealer_Product__c dealerProduct : DealerProductList) {
                //如果促销价格为null 则设置特殊折扣(百分比)到集合
                if (dealerProduct.Special_Campaign_Price__c == null) {
                    dealerPDiscountMap.put(
                        '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
            '' +
              dealerProduct.Dealer_Contact__c +
              dealerProduct.Dealer_Product2__c,
                        dealerProduct.Special_Discount__c
                    );
                } else {
                    dealerMPDiscountMap.put(
                        '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
            '' +
              dealerProduct.Dealer_Contact__c +
              dealerProduct.Dealer_Product2__c,
                        dealerProduct.Special_Campaign_Price__c
                    );
                }
@@ -1797,27 +2133,45 @@
                for (Dealer_Product__c dealerProduct : haveDateList) {
                    if (dealerProduct.Special_Campaign_Price__c == null) {
                        dealerPDiscountMap.put(
                            '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
              '' +
                dealerProduct.Dealer_Contact__c +
                dealerProduct.Dealer_Product2__c,
                            dealerProduct.Special_Discount__c
                        );
                        dealerMPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c);
            dealerMPDiscountMap.remove(
              '' +
                dealerProduct.Dealer_Contact__c +
                dealerProduct.Dealer_Product2__c
            );
                    } else {
                        dealerMPDiscountMap.put(
                            '' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c,
              '' +
                dealerProduct.Dealer_Contact__c +
                dealerProduct.Dealer_Product2__c,
                            dealerProduct.Special_Campaign_Price__c
                        );
                        dealerPDiscountMap.remove('' + dealerProduct.Dealer_Contact__c + dealerProduct.Dealer_Product2__c);
            dealerPDiscountMap.remove(
              '' +
                dealerProduct.Dealer_Contact__c +
                dealerProduct.Dealer_Product2__c
            );
                    }
                }
            }
            //=======================================经销商合同折扣
            List<Account> at = [
                SELECT id, Name, State_Master__c, State_Master__r.Name, Sales_Section__c, Dealer_discount__c
        SELECT
          id,
          Name,
          State_Master__c,
          State_Master__r.Name,
          Sales_Section__c,
          Dealer_discount__c
                FROM Account
                WHERE
                    Name = :contractName
                    AND Id =: contractId   //lt 20230517 安徽两票制 add
                    AND Contact_Type__c like :agencyProType1  //lt 20230517 安徽两票制 add  1
          AND Contact_Type__c LIKE :agencyProType1 //lt 20230517 安徽两票制 add  1
                    AND Contact_Type__c LIKE :agencyProType
                    AND Contract_Decide_Start_Date__c <= :Date.Today()
                    AND Contract_Decide_End_Date__c >= :Date.Today()
@@ -1849,11 +2203,20 @@
                    p.orderPattern__c = methodType;
                }
                insert p;
                List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id];
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
        List<Consumable_order__c> Consumable_order = [
          SELECT Name, orderPattern__c
          FROM Consumable_order__c
          WHERE id = :p.id
        ];
        for (
          ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview
        ) {
                    Roll = Roll + 1;
                    if (ass.check == true) {
                        if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) {
            if (
              ass.esd.Consumable_Count__c == null ||
              ass.esd.Consumable_Count__c == 0
            ) {
                            // ass.esd.Consumable_Count__c.addError('请输入采购数量');
                            results.result = 'Fail';
                            results.errorMsg = '请输入采购数量';
@@ -1873,16 +2236,29 @@
                            if (methodType.equals('agreementorder')) {
                                Consumable_order[0].orderPattern__c = 'agreementorder';
                                InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100;
                InsAfterDel.Intra_Trade_List_RMB__c =
                  ass.Prod.Intra_Trade_List_RMB__c *
                  disCount /
                  100;
                                //=====================================================================================update by rentx 2020-11-25
                            } else if (methodType.equals('promotionorder')) {
                                Consumable_order[0].orderPattern__c = 'promotionorder';
                                //促销订货
                                //如果促销价格不为null 则直接使用促销价格来计算金额
                                if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id);
                if (
                  dealerMPDiscountMap.containsKey(
                    '' + contract[0].Id + ass.Prod.Id
                  )
                ) {
                  InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get(
                    '' + contract[0].Id + ass.Prod.Id
                  );
                                    system.debug('cai 0' + InsAfterDel.Intra_Trade_List_RMB__c);
                                } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                } else if (
                  dealerPDiscountMap.containsKey(
                    '' + contract[0].Id + ass.Prod.Id
                  )
                ) {
                                    InsAfterDel.Intra_Trade_List_RMB__c =
                                        ass.Prod.Intra_Trade_List_RMB__c *
                                        dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) /
@@ -1894,15 +2270,26 @@
                                //医院特价
                                Consumable_order[0].Order_ForHospital__c = hospitalId;
                                Consumable_order[0].orderPattern__c = 'hospitalorder';
                                if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) {
                if (
                  dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) &&
                  dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null
                ) {
                                    //直接根据促销金额计算
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id);
                  InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(
                    '' + hospitalId + ass.Prod.Id
                  );
                                }
                            } else if (DealerProductMap.containsKey(ass.Prod.Id)) {
                                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(
                    ass.Prod.Id
                  )
                  .Special_Campaign_Price__c;
                                system.debug('cai 2' + InsAfterDel.Intra_Trade_List_RMB__c);
                                InsAfterDel.Purchase_Unitprtprice_From__c = '促销';
                                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(
                    ass.Prod.Id
                  )
                  .Special_Campaign_Price__c;
                            }
                            InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
                            i++;
@@ -1922,7 +2309,14 @@
                //修改,获取消耗品订单
                List<Consumable_order__c> cocinfo = new List<Consumable_order__c>();
                cocinfo = [
                    SELECT Id, Name, Order_status__c, Dealer_Info__c, Deliver_date__c, Order_Reason__c, Offers_Price__c
          SELECT
            Id,
            Name,
            Order_status__c,
            Dealer_Info__c,
            Deliver_date__c,
            Order_Reason__c,
            Offers_Price__c
                    FROM Consumable_order__c
                    WHERE Id = :ESetId
                ];
@@ -1939,21 +2333,32 @@
                    p.Offers_Price__c = bargainPrice;
                }
                update p;
                List<Consumable_order__c> Consumable_order = [SELECT Name, orderPattern__c FROM Consumable_order__c WHERE id = :p.id];
        List<Consumable_order__c> Consumable_order = [
          SELECT Name, orderPattern__c
          FROM Consumable_order__c
          WHERE id = :p.id
        ];
                List<Consumable_Orderdetails__c> qs = new List<Consumable_Orderdetails__c>();
                qs = [
                    SELECT Id
                    FROM Consumable_Orderdetails__c
                    WHERE Consumable_order__c = :ESetId AND Consumable_order__r.Dealer_Info__c = :accountid
          WHERE
            Consumable_order__c = :ESetId
            AND Consumable_order__r.Dealer_Info__c = :accountid
                ];
                if (qs.size() > 0) {
                    delete qs;
                }
                Integer i = 1;
                for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview) {
        for (
          ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsview
        ) {
                    if (ass.check == true) {
                        Consumable_Orderdetails__c InsAfterDel = new Consumable_Orderdetails__c();
                        if (ass.esd.Consumable_Count__c == null || ass.esd.Consumable_Count__c == 0) {
            if (
              ass.esd.Consumable_Count__c == null ||
              ass.esd.Consumable_Count__c == 0
            ) {
                            // ass.esd.Consumable_Count__c.addError('请输入采购数量');
                            results.result = 'Fail';
                            results.errorMsg = '请输入采购数量';
@@ -1971,13 +2376,26 @@
                            //协议订货
                            if (methodType.equals('agreementorder')) {
                                Consumable_order[0].orderPattern__c = 'agreementorder';
                                InsAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c * disCount / 100;
                InsAfterDel.Intra_Trade_List_RMB__c =
                  ass.Prod.Intra_Trade_List_RMB__c *
                  disCount /
                  100;
                            } else if (methodType.equals('promotionorder')) {
                                Consumable_order[0].orderPattern__c = 'promotionorder';
                                //促销订货
                                if (dealerMPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get('' + contract[0].Id + ass.Prod.Id);
                                } else if (dealerPDiscountMap.containsKey('' + contract[0].Id + ass.Prod.Id)) {
                if (
                  dealerMPDiscountMap.containsKey(
                    '' + contract[0].Id + ass.Prod.Id
                  )
                ) {
                  InsAfterDel.Intra_Trade_List_RMB__c = dealerMPDiscountMap.get(
                    '' + contract[0].Id + ass.Prod.Id
                  );
                } else if (
                  dealerPDiscountMap.containsKey(
                    '' + contract[0].Id + ass.Prod.Id
                  )
                ) {
                                    InsAfterDel.Intra_Trade_List_RMB__c =
                                        ass.Prod.Intra_Trade_List_RMB__c *
                                        dealerPDiscountMap.get('' + contract[0].Id + ass.Prod.Id) /
@@ -1987,14 +2405,25 @@
                                Consumable_order[0].orderPattern__c = 'hospitalorder';
                                //医院特价
                                Consumable_order[0].Order_ForHospital__c = hospitalId;
                                if (dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) && dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null) {
                if (
                  dealerHospitalmMap.containsKey(hospitalId + ass.Prod.Id) &&
                  dealerHospitalmMap.get(hospitalId + ass.Prod.Id) != null
                ) {
                                    //直接根据促销金额计算
                                    InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(''+ hospitalId + ass.Prod.Id);
                  InsAfterDel.Intra_Trade_List_RMB__c = dealerHospitalmMap.get(
                    '' + hospitalId + ass.Prod.Id
                  );
                                }
                            } else if (DealerProductMap.containsKey(ass.Prod.Id)) {
                                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                InsAfterDel.Intra_Trade_List_RMB__c = DealerProductMap.get(
                    ass.Prod.Id
                  )
                  .Special_Campaign_Price__c;
                                InsAfterDel.Purchase_Unitprtprice_From__c = '促销';
                                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(ass.Prod.Id).Special_Campaign_Price__c;
                InsAfterDel.Special_Campaign_Price__c = DealerProductMap.get(
                    ass.Prod.Id
                  )
                  .Special_Campaign_Price__c;
                            }
                            // ==================================================之前的促销订货的逻辑
                            InsAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
@@ -2022,13 +2451,29 @@
    public static Results deleteAtt(String contentVersionId, String cocId){
        Results results = new Results();
        try {
            List<ContentVersion> cvInfo = [SELECT Id FROM ContentVersion WHERE FirstPublishLocationId = :cocId];
            ContentVersion conVersion = [SELECT ContentDocumentId FROM ContentVersion WHERE Id = :contentVersionId];
      List<ContentVersion> cvInfo = [
        SELECT Id
        FROM ContentVersion
        WHERE FirstPublishLocationId = :cocId
      ];
      ContentVersion conVersion = [
        SELECT ContentDocumentId
        FROM ContentVersion
        WHERE Id = :contentVersionId
      ];
            String contentDocumentId = conVersion.ContentDocumentId;
            ContentDocument conDocument =  [SELECT Id FROM ContentDocument where Id = :contentDocumentId];
      ContentDocument conDocument = [
        SELECT Id
        FROM ContentDocument
        WHERE Id = :contentDocumentId
      ];
            delete conDocument;
            if(cvInfo.size() <= 1){
                Consumable_order__c c = [SELECT Id FROM Consumable_order__c WHERE Id =:cocId];
        Consumable_order__c c = [
          SELECT Id
          FROM Consumable_order__c
          WHERE Id = :cocId
        ];
                c.Consumable_pdf_insert_day__c =null;
                update c;
            }
@@ -2116,7 +2561,6 @@
        public Decimal prodIntraTradeList { get; set; }
        @AuraEnabled
        public Decimal consumableCount { get; set; }
        // 已存产品明细
        public ConsumableorderdetailsInfo(Consumable_Orderdetails__c e) {
force-app/main/default/classes/LexConsumableControllerTest.cls
New file
@@ -0,0 +1,1377 @@
@istest
public class LexConsumableControllerTest {
  @IsTest
  static void ConsumableOrdertest1() {
    user MyUser_Test;
    Account myAccount1;
    Account contract;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      List<RecordType> rectCo1 = [
        SELECT Id
        FROM RecordType
        WHERE
          IsActive = TRUE
          AND SobjectType = 'Account'
          AND DeveloperName = 'AgencyContract'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      contract = new Account(
        RecordTypeId = rectCo1[0].Id,
        Name = 'contractName',
        ParentId = myAccount1.id,
        Agent_Ref__c = myAccount1.id,
        Contract_Department_Class__c = 'ET',
        Contract_Decide_Start_Date__c = Date.today().addDays(-2),
        Contract_Decide_End_Date__c = Date.today().addDays(2),
        Dealer_discount__c = 0.8
      );
      insert contract;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      //产品数据
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = '其它',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test001',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'ENT',
        Category4__c = 'Celon',
        Category5__c = 'Celon',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'US',
        Category4__c = 'ALOKA',
        Category5__c = '体外超声',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert proG;
      System.debug('proG:' + proG);
      System.debug('proG1:' + proG.Estimation_Entry_Possibility__c);
      System.debug('prod07:' + prod01);
      System.debug('prod071:' + prod01.Estimation_Entry_Possibility__c);
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      insert proF;
      //订单
      Consumable_order__c order = new Consumable_order__c();
      order.Name = 'testMing';
      order.Order_status__c = '批准';
      order.RecordTypeid = System.Label.RT_ConOrder_Order;
      order.Dealer_Info__c = myAccount1.id;
      order.Inventory_date__c = Date.today();
      order.Order_type__c = '订单';
      order.Order_ProType__c = 'ET';
      order.orderPattern__c = 'agreementorder';
      insert order;
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = order.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = proG.Id;
      Orderdet.Consumable_count__c = 4;
      insert Orderdet;
      Consumable_order_details2__c createDetail2 = new Consumable_order_details2__c();
      createDetail2 = new Consumable_order_details2__c();
      createDetail2.Consumable_Product__c = proG.id;
      createDetail2.Asset_Model_No__c = 'Test01';
      createDetail2.Consumable_order_minor__c = order.id;
      createDetail2.Consumable_Arrived_order__c = order.id;
      createDetail2.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      createDetail2.Asset_Model_No__c = proG.Asset_Model_No__c;
      createDetail2.Bar_Code__c = '123';
      createDetail2.Box_Piece__c = '盒';
      createDetail2.Arrive_date__c = Date.today();
      Oly_TriggerHandler.bypass('ConsumableAssetHander');
      insert createDetail2;
      Test.startTest();
      LexConsumableController.ConsumableorderdetailsInfo c1 = new LexConsumableController.ConsumableorderdetailsInfo(
        Orderdet
      );
      ContentVersion v = new ContentVersion();
      LexConsumableController.ConsumableorderdetailsInfo c2 = new LexConsumableController.ConsumableorderdetailsInfo(
        v
      );
      LexConsumableController l = new LexConsumableController();
      LexConsumableController.Results re = LexConsumableController.init(
        '',
        order.Id,
        ''
      );
      LexConsumableController.searchConsumableorderdetails(
        re.userWorkLocation,
        re.agencyProType,
        re.accountName,
        re.accountid,
        re.hospitalId,
        re.contractId,
        'testMing',
        '',
        '',
        '',
        re.category_Goods,
        re.specialCampaign,
        JSON.serialize(re.dealerProductId),
        re.methodType,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        re.editAble,
        re.proLimitAndDate
      );
      LexConsumableController.searchorderdetails(
        re.methodType,
        re.accountid,
        re.hospitalId,
        re.contractId,
        re.userWorkLocation,
        re.accountName,
        re.proLimitAndDate,
        re.editAble
      );
      LexConsumableController.sorder(order.Id, myAccount1.Id);
      Test.stopTest();
    }
  }
  @IsTest
  static void ConsumableOrdertest2() {
    user MyUser_Test;
    Account myAccount1;
    Account contract;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      List<RecordType> rectCo1 = [
        SELECT Id
        FROM RecordType
        WHERE
          IsActive = TRUE
          AND SobjectType = 'Account'
          AND DeveloperName = 'AgencyContract'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      contract = new Account(
        RecordTypeId = rectCo1[0].Id,
        Name = 'contractName',
        ParentId = myAccount1.id,
        Agent_Ref__c = myAccount1.id,
        Contract_Department_Class__c = 'ET',
        Contract_Decide_Start_Date__c = Date.today().addDays(-2),
        Contract_Decide_End_Date__c = Date.today().addDays(2),
        Dealer_discount__c = 0.8
      );
      insert contract;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      //产品数据
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = '其它',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test001',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'ENT',
        Category4__c = 'Celon',
        Category5__c = 'Celon',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'US',
        Category4__c = 'ALOKA',
        Category5__c = '体外超声',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert proG;
      System.debug('proG:' + proG);
      System.debug('proG1:' + proG.Estimation_Entry_Possibility__c);
      System.debug('prod07:' + prod01);
      System.debug('prod071:' + prod01.Estimation_Entry_Possibility__c);
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      insert proF;
      //创建医院
      Account hospital = new Account();
      hospital.recordtypeId = [
        SELECT Id
        FROM RecordType
        WHERE
          IsActive = TRUE
          AND SobjectType = 'Account'
          AND DeveloperName = 'HP'
      ]
      .id;
      hospital.Name = 'test hospital';
      hospital.Is_Active__c = '有効';
      hospital.Attribute_Type__c = '卫生部';
      hospital.Speciality_Type__c = '综合医院';
      hospital.Grade__c = '一级';
      hospital.OCM_Category__c = 'SLTV';
      hospital.Is_Medical__c = '医疗机构';
      hospital.Town__c = '东京';
      insert hospital;
      //建一条医院特价产品
      hospitalprice__c hc = new hospitalprice__c();
      hc.hospital__c = hospital.Id;
      hc.product__c = proG.Id;
      hc.aph__c = '12332';
      hc.account__c = myAccount1.Id;
      insert hc;
      //医院
      Consumable_order__c order1 = new Consumable_order__c();
      order1.Name = 'testMing1';
      order1.Order_status__c = '批准';
      order1.RecordTypeid = System.Label.RT_ConOrder_Order;
      order1.Dealer_Info__c = myAccount1.id;
      order1.Inventory_date__c = Date.today();
      order1.Order_type__c = '订单';
      order1.Order_ProType__c = 'ET';
      order1.orderPattern__c = 'hospitalorder';
      insert order1;
      Consumable_orderdetails__c Orderdet1 = new Consumable_orderdetails__c();
      Orderdet1.Name = 'OCM_01_00102';
      Orderdet1.Consumable_order__c = order1.Id;
      Orderdet1.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet1.Consumable_Product__c = proG.Id;
      Orderdet1.Consumable_count__c = 4;
      insert Orderdet1;
      Consumable_order_details2__c createDetail3 = new Consumable_order_details2__c();
      createDetail3 = new Consumable_order_details2__c();
      createDetail3.Consumable_Product__c = proG.id;
      createDetail3.Asset_Model_No__c = 'Test02';
      createDetail3.Consumable_order_minor__c = order1.id;
      createDetail3.Consumable_Arrived_order__c = order1.id;
      createDetail3.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      createDetail3.Asset_Model_No__c = proG.Asset_Model_No__c;
      createDetail3.Bar_Code__c = '123';
      createDetail3.Box_Piece__c = '盒';
      createDetail3.Arrive_date__c = Date.today();
      Oly_TriggerHandler.bypass('ConsumableAssetHander');
      insert createDetail3;
      Test.startTest();
      LexConsumableController.Results re = LexConsumableController.init(
        '',
        order1.Id,
        ''
      );
      LexConsumableController.searchConsumableorderdetails(
        re.userWorkLocation,
        re.agencyProType,
        re.accountName,
        re.accountid,
        re.hospitalId,
        re.contractId,
        'testMing',
        '',
        '',
        '',
        re.category_Goods,
        re.specialCampaign,
        JSON.serialize(re.dealerProductId),
        re.methodType,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        re.editAble,
        re.proLimitAndDate
      );
      LexConsumableController.searchorderdetails(
        re.methodType,
        re.accountid,
        re.hospitalId,
        re.contractId,
        re.userWorkLocation,
        re.accountName,
        re.proLimitAndDate,
        re.editAble
      );
      LexConsumableController.searchConsumableorderdetails(
        re.userWorkLocation,
        re.agencyProType,
        re.accountName,
        re.accountid,
        hospital.Id,
        contract.Id,
        'testMing',
        '',
        '',
        '',
        re.category_Goods,
        re.specialCampaign,
        JSON.serialize(re.dealerProductId),
        re.methodType,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        re.editAble,
        re.proLimitAndDate
      );
      LexConsumableController.searchorderdetails(
        re.methodType,
        re.accountid,
        hospital.Id,
        contract.Id,
        re.userWorkLocation,
        re.accountName,
        re.proLimitAndDate,
        re.editAble
      );
      Test.stopTest();
    }
  }
  @IsTest
  static void ConsumableOrdertest3() {
    user MyUser_Test;
    Account myAccount1;
    Account contract;
    Consumable_order__c order2;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      List<RecordType> rectCo1 = [
        SELECT Id
        FROM RecordType
        WHERE
          IsActive = TRUE
          AND SobjectType = 'Account'
          AND DeveloperName = 'AgencyContract'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      contract = new Account(
        RecordTypeId = rectCo1[0].Id,
        Name = 'contractName',
        ParentId = myAccount1.id,
        Agent_Ref__c = myAccount1.id,
        Contract_Department_Class__c = 'ET',
        Contract_Decide_Start_Date__c = Date.today().addDays(-2),
        Contract_Decide_End_Date__c = Date.today().addDays(2),
        Dealer_discount__c = 0.8
      );
      insert contract;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
      //产品数据
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = '其它',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test001',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'ENT',
        Category4__c = 'Celon',
        Category5__c = 'Celon',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'US',
        Category4__c = 'ALOKA',
        Category5__c = '体外超声',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert proG;
      System.debug('proG:' + proG);
      System.debug('proG1:' + proG.Estimation_Entry_Possibility__c);
      System.debug('prod07:' + prod01);
      System.debug('prod071:' + prod01.Estimation_Entry_Possibility__c);
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      insert proF;
      Dealer_Product__c dpc = new Dealer_Product__c();
      dpc.Dealer_Contact__c = contract.id;
      dpc.Dealer_Product2__c = proG.id;
      dpc.Special_Discount__c = 45;
      dpc.Campaign_StartDate__c = Date.today().addDays(-1);
      dpc.Campaign_EndDate__c = Date.today().addDays(1);
      insert dpc;
      Dealer_Product__c dpc2 = new Dealer_Product__c();
      dpc2.Dealer_Contact__c = contract.id;
      dpc2.Dealer_Product2__c = proG.id;
      dpc2.Special_Campaign_Price__c = 4500;
      insert dpc2;
      Dealer_Product__c dpc1 = new Dealer_Product__c();
      dpc1.Dealer_Contact__c = contract.id;
      dpc1.Dealer_Product2__c = proH.id;
      dpc1.Special_Campaign_Price__c = 23456;
      insert dpc1;
      //促销
      order2 = new Consumable_order__c();
      order2.Name = 'testMing2';
      order2.Order_status__c = '批准';
      order2.RecordTypeid = System.Label.RT_ConOrder_Order;
      order2.Dealer_Info__c = myAccount1.id;
      order2.Inventory_date__c = Date.today();
      order2.Order_type__c = '订单';
      order2.Order_ProType__c = 'ET';
      order2.orderPattern__c = 'promotionorder';
      insert order2;
      Consumable_orderdetails__c Orderdet2 = new Consumable_orderdetails__c();
      Orderdet2.Name = 'OCM_01_00103';
      Orderdet2.Consumable_order__c = order2.Id;
      Orderdet2.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet2.Consumable_Product__c = proG.Id;
      Orderdet2.Consumable_count__c = 4;
      insert Orderdet2;
      Consumable_order_details2__c createDetail4 = new Consumable_order_details2__c();
      createDetail4 = new Consumable_order_details2__c();
      createDetail4.Consumable_Product__c = proG.id;
      createDetail4.Asset_Model_No__c = 'Test03';
      createDetail4.Consumable_order_minor__c = order2.id;
      createDetail4.Consumable_Arrived_order__c = order2.id;
      createDetail4.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      createDetail4.Asset_Model_No__c = proG.Asset_Model_No__c;
      createDetail4.Bar_Code__c = '123';
      createDetail4.Box_Piece__c = '盒';
      createDetail4.Arrive_date__c = Date.today();
      Oly_TriggerHandler.bypass('ConsumableAssetHander');
      insert createDetail4;
    }
    System.runAs(MyUser_Test) {
      Test.startTest();
      LexConsumableController.Results re = LexConsumableController.init(
        '',
        order2.Id,
        ''
      );
      LexConsumableController.searchConsumableorderdetails(
        re.userWorkLocation,
        re.agencyProType,
        re.accountName,
        re.accountid,
        re.hospitalId,
        re.contractId,
        'testMing',
        '',
        '',
        '',
        re.category_Goods,
        re.specialCampaign,
        JSON.serialize(re.dealerProductId),
        re.methodType,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        re.editAble,
        re.proLimitAndDate
      );
      LexConsumableController.searchorderdetails(
        re.methodType,
        re.accountid,
        re.hospitalId,
        re.contractId,
        re.userWorkLocation,
        re.accountName,
        re.proLimitAndDate,
        re.editAble
      );
      LexConsumableController.searchConsumableorderdetails(
        re.userWorkLocation,
        re.agencyProType,
        re.accountName,
        re.accountid,
        re.hospitalId,
        contract.Id,
        'testMing',
        '',
        '',
        '',
        re.category_Goods,
        re.specialCampaign,
        JSON.serialize(re.dealerProductId),
        re.methodType,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        re.editAble,
        re.proLimitAndDate
      );
      LexConsumableController.searchorderdetails(
        re.methodType,
        re.accountid,
        re.hospitalId,
        contract.Id,
        re.userWorkLocation,
        re.accountName,
        re.proLimitAndDate,
        re.editAble
      );
      Test.stopTest();
    }
  }
  @IsTest
  static void ConsumableOrdertest4() {
    user MyUser_Test;
    Account myAccount1;
    Account contract;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      List<RecordType> rectCo1 = [
        SELECT Id
        FROM RecordType
        WHERE
          IsActive = TRUE
          AND SobjectType = 'Account'
          AND DeveloperName = 'AgencyContract'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      System.debug('account111:' + myAccount1);
      contract = new Account(
        RecordTypeId = rectCo1[0].Id,
        Name = 'contractName',
        ParentId = myAccount1.id,
        Agent_Ref__c = myAccount1.id,
        Contract_Department_Class__c = 'ET',
        Contract_Decide_Start_Date__c = Date.today().addDays(-2),
        Contract_Decide_End_Date__c = Date.today().addDays(2),
        ET_SP_Dealer__c = true
      );
      insert contract;
      System.debug('account111:' + contract);
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      //产品数据
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = '其它',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test001',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'ENT',
        Category4__c = 'Celon',
        Category5__c = 'Celon',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'US',
        Category4__c = 'ALOKA',
        Category5__c = '体外超声',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      insert proG;
      System.debug('proG:' + proG);
      System.debug('proG1:' + proG.Estimation_Entry_Possibility__c);
      System.debug('prod07:' + prod01);
      System.debug('prod071:' + prod01.Estimation_Entry_Possibility__c);
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      insert proF;
      //订单
      Consumable_order__c order = new Consumable_order__c();
      order.Name = 'testMing';
      order.Order_status__c = '批准';
      order.RecordTypeid = System.Label.RT_ConOrder_Order;
      order.Dealer_Info__c = myAccount1.id;
      order.Inventory_date__c = Date.today();
      order.Order_type__c = '订单';
      order.Order_ProType__c = 'ET';
      order.orderPattern__c = 'agreementorder';
      insert order;
      Consumable_orderdetails__c Orderdet = new Consumable_orderdetails__c();
      Orderdet.Name = 'OCM_01_00101';
      Orderdet.Consumable_order__c = order.Id;
      Orderdet.RecordTypeId = System.Label.RT_ConOrderDetail1_Order;
      Orderdet.Consumable_Product__c = proG.Id;
      Orderdet.Consumable_count__c = 4;
      insert Orderdet;
      Consumable_order_details2__c createDetail2 = new Consumable_order_details2__c();
      createDetail2 = new Consumable_order_details2__c();
      createDetail2.Consumable_Product__c = proG.id;
      createDetail2.Asset_Model_No__c = 'Test01';
      createDetail2.Consumable_order_minor__c = order.id;
      createDetail2.Consumable_Arrived_order__c = order.id;
      createDetail2.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      createDetail2.Asset_Model_No__c = proG.Asset_Model_No__c;
      createDetail2.Bar_Code__c = '123';
      createDetail2.Box_Piece__c = '盒';
      createDetail2.Arrive_date__c = Date.today();
      Oly_TriggerHandler.bypass('ConsumableAssetHander');
      insert createDetail2;
      Test.startTest();
      LexConsumableController.Results re = LexConsumableController.init(
        'agreementorder',
        '',
        ''
      );
      re.consumableorderdetailsRecordsview[0].check = true;
      re.consumableorderdetailsRecordsview[0].esd.Consumable_count__c = 1;
      String conId = contract.Id;
      LexConsumableController.ordrCopy(
        contract.Name,
        JSON.serialize(re.coc),
        re.agencyProType,
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        re.methodType,
        '',
        conId,
        re.agencyProType1,
        false
      );
      LexConsumableController.save(
        '',
        JSON.serialize(re.coc),
        re.agencyProType,
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        re.methodType,
        re.ESetId,
        '',
        conId,
        re.agencyProType1,
        false
      );
      LexConsumableController.save(
        contract.Name,
        JSON.serialize(re.coc),
        re.agencyProType,
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        re.methodType,
        re.ESetId,
        '',
        '',
        re.agencyProType1,
        false
      );
      LexConsumableController.save(
        ':Testaccount001',
        JSON.serialize(re.coc),
        'ET',
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        re.methodType,
        re.ESetId,
        '',
        re.contractId,
        'ET',
        false
      );
      LexConsumableController.save(
        ':Testaccount001',
        JSON.serialize(re.coc),
        'ET',
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        'agreementorder',
        re.ESetId,
        '',
        re.contractId,
        'ET',
        false
      );
      LexConsumableController.save(
        ':Testaccount001',
        JSON.serialize(re.coc),
        'ET',
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        'promotionorder',
        re.ESetId,
        '',
        re.contractId,
        'ET',
        false
      );
      LexConsumableController.save(
        ':Testaccount001',
        JSON.serialize(re.coc),
        'ET',
        re.accountid,
        JSON.serialize(re.consumableorderdetailsRecordsview),
        JSON.serialize(re.contactDealer),
        'hospitalorder',
        re.ESetId,
        '',
        re.contractId,
        'ET',
        false
      );
      Test.stopTest();
    }
  }
  @IsTest
  static void ConsumableOrdertest5() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    ContentVersion cv;
    Consumable_order__c order;
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
      order = new Consumable_order__c();
      order.Name = 'testMing';
      order.Order_status__c = '批准';
      order.RecordTypeid = System.Label.RT_ConOrder_Order;
      order.Dealer_Info__c = myAccount1.id;
      order.Inventory_date__c = Date.today();
      order.Order_type__c = '订单';
      order.Order_ProType__c = 'ET';
      order.orderPattern__c = 'agreementorder';
      insert order;
      cv = new ContentVersion();
      cv.Title = 'test.txt';
      cv.PathOnClient = '/' + 'test.txt';
      cv.FirstPublishLocationId = order.Id;
      cv.VersionData = EncodingUtil.base64Decode('VGVzdA==');
      cv.IsMajorVersion = true;
      insert cv;
    }
    System.runAs(MyUser_Test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = '其它',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test001',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'CDS',
        Category4__c = 'OER',
        Category5__c = 'Celon',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = 'Test002',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod03 = new Product2(
        Name = 'Test03',
        ProductCode = 'Test03',
        Asset_Model_No__c = 'Test03',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'US',
        Category4__c = 'ALOKA',
        Category5__c = '体外超声',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod04 = new Product2(
        Name = 'Test04',
        ProductCode = 'Test04',
        Asset_Model_No__c = 'Test04',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = 'OCS',
        Category4__c = '附属品',
        Category5__c = 'OCS',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      Product2 prod05 = new Product2(
        Name = 'Test05',
        ProductCode = 'Test05',
        Asset_Model_No__c = 'Test05',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Product_Status__c = '正常销售',
        SFDA_Approbated_Status__c = '有效',
        Category3__c = '光源',
        Category4__c = 'CLV',
        Category5__c = 'S45',
        Intra_Trade_List_RMB_1__c = 1000,
        Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
        Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02, prod03, prod04, prod05 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      Product2__c pro3 = new Product2__c(
        Name = 'Pro003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod03.Id
      );
      Product2__c pro4 = new Product2__c(
        Name = 'Pro004',
        OT_CODE_Text__c = 'Test004',
        Product2__c = prod04.Id
      );
      Product2__c pro5 = new Product2__c(
        Name = 'Pro005',
        OT_CODE_Text__c = 'Test005',
        Product2__c = prod05.Id
      );
      insert new List<Product2__c>{ pro1, pro2, pro3, pro4, pro5 };
      Test.startTest();
      LexConsumableController.Results re1 = LexConsumableController.categoryAllload(
        'ET',
        'CDS'
      );
      LexConsumableController.Results re2 = LexConsumableController.categoryAllload(
        'ENG',
        'CDS'
      );
      LexConsumableController.Results re3 = LexConsumableController.categoryAllload(
        '',
        'CDS'
      );
      LexConsumableController.Results re4 = LexConsumableController.categoryload(
        'ET',
        'CDS',
        'OER'
      );
      LexConsumableController.Results re5 = LexConsumableController.categoryload(
        'ENG',
        'CDS',
        'OER'
      );
      LexConsumableController.Results re6 = LexConsumableController.categoryload(
        '',
        'CDS',
        'OER'
      );
      String pid = order.Id;
      LexConsumableController.filesUpload(pid, 'tset.txt', 'VGVzdA==');
      LexConsumableController.deleteAtt(cv.Id, pid);
      LexConsumableController.backOrder(pid);
      LexConsumableController.setEditAble(pid);
      LexConsumableController.delConsumable(pid);
      LexConsumableController.OffersPrice();
      Test.stopTest();
    }
  }
}
force-app/main/default/classes/LexConsumableControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConsumableGoodsInfoTest.cls
New file
@@ -0,0 +1,1113 @@
@istest
public class LexConsumableGoodsInfoTest {
  @IsTest
  static void lexConsumableGoodsInfoTest1() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888',
        Product_Limit_Date__c = 'Test07|3|100,Test08|10|50'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '重庆'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      //产品数据
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod09.Id
      );
      insert proF;
      //订单
      Consumable_order__c order = new Consumable_order__c();
      order.Name = 'testMing';
      order.Order_status__c = '批准';
      order.RecordTypeid = System.Label.RT_ConOrder_Order;
      order.Dealer_Info__c = myAccount1.id;
      order.Inventory_date__c = Date.today();
      order.Order_type__c = '订单';
      order.Order_ProType__c = 'ET';
      insert order;
      //到货
      Consumable_order__c order2 = new Consumable_order__c();
      order2.Name = 'testMing1';
      order2.Order_status__c = '批准';
      order2.RecordTypeid = '01210000000c9dqAAA';
      order2.Dealer_Info__c = myAccount1.id;
      order2.Order_type__c = '到货';
      order2.Order_ProType__c = 'ET';
      insert order2;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      //制作Consumable_order_details__c-------ProductCount
      // 销售
      Consumable_order_details2__c dataForProductCount7 = new Consumable_order_details2__c();
      dataForProductCount7.Bar_Code__c = '123456789298k250AAAAA';
      dataForProductCount7.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount7.Arrive_date__c = Date.today();
      dataForProductCount7.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount7.Consumable_Product__c = proH.id;
      dataForProductCount7.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount7.Box_Piece__c = '盒';
      dataForProductCount7.Used_date__c = Date.today();
      dataForProductCount7.Consumable_order_minor__c = order.id;
      conList.add(dataForProductCount7);
      // 在库 过期 盒
      Consumable_order_details2__c dataForProduct = new Consumable_order_details2__c();
      dataForProduct.Bar_Code__c = '123456789498k250BBBBB';
      dataForProduct.Sterilization_limit__c = Date.today().addDays(-2);
      dataForProduct.Arrive_date__c = Date.today();
      dataForProduct.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProduct.Consumable_Product__c = proF.id;
      dataForProduct.Asset_Model_No__c = proF.Asset_Model_No__c;
      dataForProduct.Box_Piece__c = '盒';
      dataForProduct.Consumable_order_minor__c = order.id;
      conList.add(dataForProduct);
      // 在库 过期 个
      Consumable_order_details2__c dataForProductCount3 = new Consumable_order_details2__c();
      dataForProductCount3.Bar_Code__c = '123456788398k250CCCCC';
      dataForProductCount3.Sterilization_limit__c = Date.today().addDays(-2);
      dataForProductCount3.Arrive_date__c = Date.today();
      dataForProductCount3.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount3.Consumable_Product__c = proG.id;
      dataForProductCount3.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount3.Box_Piece__c = '个';
      dataForProductCount3.RemoveBox_No__c = 1;
      dataForProductCount3.Consumable_order_minor__c = order.id;
      conList.add(dataForProductCount3);
      insert conList;
      //过期库存汇总信息 add by Wang Xueqin
      List<Consumable_order_details2__c> conList1 = new List<Consumable_order_details2__c>();
      Consumable_order_details2__c dataForProductCount4 = new Consumable_order_details2__c();
      dataForProductCount4.Bar_Code__c = '1001';
      dataForProductCount4.Arrive_date__c = Date.today();
      dataForProductCount4.Send_Date__c = null;
      dataForProductCount4.Used_date__c = null;
      dataForProductCount4.Return_date__c = null;
      dataForProductCount4.Lose_Flag__c = false;
      dataForProductCount4.Cancellation_Flag__c = false;
      dataForProductCount4.Consumable_Product__c = proG.Id;
      dataForProductCount4.Consumable_Arrived_order__c = order2.id;
      dataForProductCount4.Used_account__c = myAccount1.Id;
      dataForProductCount4.Sterilization_limit__c = Date.today().addDays(-2);
      dataForProductCount4.Box_Piece__c = '盒';
      conList1.add(dataForProductCount4);
      System.debug('conList1==>' + conList1);
      //查询所有过期库存
      Consumable_order_details2__c dataForProductCount5 = new Consumable_order_details2__c();
      dataForProductCount5.Bar_Code__c = '1002';
      dataForProductCount5.Arrive_date__c = Date.today();
      dataForProductCount5.Send_Date__c = Date.today();
      dataForProductCount5.Used_date__c = Date.today();
      dataForProductCount5.Return_date__c = null;
      dataForProductCount5.Lose_Flag__c = false;
      dataForProductCount5.Cancellation_Flag__c = false;
      dataForProductCount5.Consumable_Product__c = proG.Id;
      dataForProductCount5.Consumable_Arrived_order__c = order2.id;
      dataForProductCount5.Used_account__c = myAccount1.Id;
      dataForProductCount5.Sterilization_limit__c = Date.today().addDays(-2);
      dataForProductCount5.Box_Piece__c = '盒';
      conList1.add(dataForProductCount5);
      insert conList1;
      Test.startTest();
      LexConsumableGoodsInfo.initMoreThan7(dataForProductCount7.Id);
      LexConsumableGoodsInfo.initMoreThan7All('all');
      LexConsumableGoodsInfo.initNotArrDet(dataForProductCount7.Id);
      LexConsumableGoodsInfo.initNotArrDetAll('all');
      LexConsumableGoodsInfo.initArrDet(dataForProductCount7.Id);
      LexConsumableGoodsInfo.initArrDetAll('all');
      LexConsumableGoodsInfo.initDeliveryDet(dataForProductCount7.Id);
      LexConsumableGoodsInfo.initDeliveryDetAll('all');
      LexConsumableGoodsInfo.initTotalNum('1', 'all');
      LexConsumableGoodsInfo.initTotalNum(dataForProductCount7.Id, 'all');
      Test.stopTest();
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest2() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      LexConsumableGoodsInfo.initMoreThan7(Orderdet1.Id);
      LexConsumableGoodsInfo.initMoreThan7All('all');
      LexConsumableGoodsInfo.initNotArrDet(Orderdet1.Id);
      LexConsumableGoodsInfo.initNotArrDetAll('all');
      LexConsumableGoodsInfo.initArrDet(Orderdet1.Id);
      LexConsumableGoodsInfo.initArrDetAll('all');
      LexConsumableGoodsInfo.initDeliveryDet(Orderdet1.Id);
      LexConsumableGoodsInfo.initDeliveryDetAll('all');
      LexConsumableGoodsInfo.initTotalNum('1', 'all');
      LexConsumableGoodsInfo.initTotalNum(Orderdet1.Id, 'all');
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest3() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      LexConsumableGoodsInfo.initMoreThan7(Orderdet2.Id);
      LexConsumableGoodsInfo.initMoreThan7All('');
      LexConsumableGoodsInfo.initNotArrDet(Orderdet2.Id);
      LexConsumableGoodsInfo.initNotArrDetAll('');
      LexConsumableGoodsInfo.initArrDet(Orderdet2.Id);
      LexConsumableGoodsInfo.initArrDetAll('');
      LexConsumableGoodsInfo.initDeliveryDet(Orderdet2.Id);
      LexConsumableGoodsInfo.initDeliveryDetAll('');
      LexConsumableGoodsInfo.initTotalNum(Orderdet2.Id, '');
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest4() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      LexConsumableGoodsInfo.initMoreThan7(Orderdet3.Id);
      LexConsumableGoodsInfo.initNotArrDet(Orderdet3.Id);
      LexConsumableGoodsInfo.initArrDet(Orderdet3.Id);
      LexConsumableGoodsInfo.initDeliveryDet(Orderdet3.Id);
      LexConsumableGoodsInfo.initTotalNum(Orderdet3.Id, 'all');
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest5() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };
      LexConsumableGoodsInfo.initMoreThan7(Orderdet4.Id);
      LexConsumableGoodsInfo.initNotArrDet(Orderdet4.Id);
      LexConsumableGoodsInfo.initArrDet(Orderdet4.Id);
      LexConsumableGoodsInfo.initDeliveryDet(Orderdet4.Id);
      LexConsumableGoodsInfo.initTotalNum(Orderdet4.Id, 'all');
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest6() {
    LexConsumableGoodsInfo.ShowRecords sr = new LexConsumableGoodsInfo.ShowRecords();
    sr.prodModel = 'test';
    sr.recordCount = 1;
    sr.compareTo(new LexConsumableGoodsInfo.ShowRecords());
  }
  @IsTest
  static void lexConsumableGoodsInfoTest7() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京',
        UserPro_Type__c = 'ET'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Delivery_detail_count__c = 1,
        Order_ProType__c = 'ET',
        showFalseNotshowTrue__c = false
      );
      insert new List<Consumable_order__c>{ Order1 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Asset_Model_No__c = 'Test01',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery,
        Cancellation_Flag__c = false
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Asset_Model_No__c = 'Test01',
        Consumable_order_minor__c = Order1.Id,
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery,
        Cancellation_Flag__c = false
      );
      insert new List<Consumable_order_details2__c>{ Orderdet1, Orderdet3 };
      LexConsumableGoodsInfo.initNotArrDet(Order1.Id);
      LexConsumableGoodsInfo.initNotArrDetAll('all');
    }
  }
  @IsTest
  static void lexConsumableGoodsInfoTest8() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京',
        UserPro_Type__c = 'ET'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Delivery_detail_count__c = 1,
        Order_ProType__c = 'ET',
        showFalseNotshowTrue__c = false
      );
      insert new List<Consumable_order__c>{ Order1 };
      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery,
        Cancellation_Flag__c = false
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery,
        Cancellation_Flag__c = false
      );
      insert new List<Consumable_order_details2__c>{ Orderdet1, Orderdet3 };
      LexConsumableGoodsInfo.initNotArrDetAll('all');
    }
  }
}
force-app/main/default/classes/LexConsumableGoodsInfoTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexConsumableOrderManageControllerTest.cls
New file
@@ -0,0 +1,132 @@
@istest
public class LexConsumableOrderManageControllerTest {
  @IsTest
  static void ConsumableOrdertest() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Consumable_order__c testList5 = new Consumable_order__c(
        Name = 'test5',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList6 = new Consumable_order__c(
        Name = 'test6',
        Order_status__c = '已提交',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList7 = new Consumable_order__c(
        Name = 'test7',
        Order_status__c = '已提交',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList1 = new Consumable_order__c(
        Name = 'test1',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList2 = new Consumable_order__c(
        Name = 'test2',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList3 = new Consumable_order__c(
        Name = 'test3',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c testList4 = new Consumable_order__c(
        Name = 'test4',
        Order_status__c = '草案中',
        Dealer_info__c = myAccount1.Id,
        Order_type__c = '订单',
        RecordtypeId = System.Label.RT_ConOrder_Order,
        Order_date__c = Date.today(),
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{
        testList1,
        testList2,
        testList3,
        testList4,
        testList5,
        testList6,
        testList7
      };
      LexConsumableOrderManageController.init1();
      String accID = myAccount1.Id;
      LexConsumableOrderManageController.searchConsumableorderdetails(
        '',
        null,
        '',
        accID,
        'ET',
        '北京'
      );
    }
  }
}
force-app/main/default/classes/LexConsumableOrderManageControllerTest.cls-meta.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>57.0</apiVersion>
    <status>Active</status>
</ApexClass>
force-app/main/default/classes/LexInventoryController.cls
@@ -20,24 +20,33 @@
    public static  Boolean done { get; set; }
    /*****************画面表示Bean******************/
    //页面主数据显示用
    private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords;
  // private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords;
  public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords;
    //盘点到的产品
    public static  List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>();
    public static  List<Consumable_order_details2__c> showcod2nid = new List<Consumable_order_details2__c>();
    //public List<Consumable_order_details2__c> pandiandetailsList { get; set; }
    public static  List<List<Consumable_order_details2__c>> pandiandetailsListShow { get; set; }
  public static List<List<Consumable_order_details2__c>> pandiandetailsListShow {
    get;
    set;
  }
    //寻回明细
    public static  List<ConsumableorderdetailsInfo> consumableorderdetailsRecordserrordummy;  // 丢失和巡回的,实际炒作用
    @AuraEnabled
    public static  List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; }       // 产品单位的List
    public static  List<Consumable_order_details2__c> InsListUp = New List<Consumable_order_details2__c>();
  public static List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview {
    get;
    set;
  } // 产品单位的List
  public static List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>();
    public static List<ConsumableorderdetailsInfo> consumableorderdetailsviewRecords;
   
    public static  Integer consumableorderdetailsCount  {
        get {
            return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size();
      return consumableorderdetailsRecords == null
        ? 0
        : consumableorderdetailsRecords.size();
        }
    }
    //list<String> notexitlist = new list<String>();
@@ -74,13 +83,21 @@
    private static void initStandardController(){
        // init standard controller
        List<Consumable_order_details2__c> showcod2 = [select Id,  Name,Consumable_Product__c,
                            Bar_Code__c,Consumable_Product__r.Name__c,
                            Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
    List<Consumable_order_details2__c> showcod2 = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c,
                            Bar_Code_search__c
                        FROM Consumable_order_details2__c
                        WHERE Id in :pandiandetailsMap.keySet()
                        order by Name desc];
      WHERE Id IN :pandiandetailsMap.keySet()
      ORDER BY Name DESC
    ];
        setConDetails2 = showcod2;
        System.debug('setConDetails2===>'+setConDetails2);
        // setCon = new ApexPages.StandardSetController(showcod2);
@@ -104,7 +121,9 @@
        showcod2nid = cod2s();
        codPageRecords = new List<ConsumableorderdetailsInfo>();
        for (Consumable_order_details2__c cod2 : showcod2nid) {
            codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id)));
      codPageRecords.add(
        new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))
      );
        }
        System.debug('===>codPageRecords1'+codPageRecords);
         return codPageRecords;
@@ -113,8 +132,6 @@
    // 画面初始化
    @AuraEnabled
    public static ResponseBodyLWC init() {
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String,object> data = new Map<String,object>();
        res.entity = data;
@@ -123,13 +140,21 @@
        setConDetails2 = new List<Consumable_order_details2__c>();
        String url = '在库调整一览';
        fileName = EncodingUtil.urlEncode(url, 'UTF-8');
        List<Consumable_order_details2__c> showcod2 = [select Id,  Name,Consumable_Product__c,
                            Bar_Code__c,Consumable_Product__r.Name__c,
                            Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
    List<Consumable_order_details2__c> showcod2 = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c,
                            Bar_Code_search__c
                        FROM Consumable_order_details2__c
                        WHERE Id in :pandiandetailsMap.keySet()
                        order by Name];
      WHERE Id IN :pandiandetailsMap.keySet()
      ORDER BY Name
    ];
                        System.debug('pandiandetailsMap====>'+pandiandetailsMap);
        initStandardController();
        makepagerecords();
@@ -142,7 +167,11 @@
        String userId = UserInfo.getUserId();
        //String userId = '00510000006k82X';
        //String userId = '00510000005QO75';
        user Useracc = [select Accountid, Work_Location__c,UserPro_Type__c from user where id =:userId];
    user Useracc = [
      SELECT Accountid, Work_Location__c, UserPro_Type__c
      FROM user
      WHERE id = :userId
    ];
        accountid = Useracc.Accountid;
        userWorkLocation = Useracc.Work_Location__c;
        agencyProType = Useracc.UserPro_Type__c;
@@ -150,7 +179,11 @@
            agencyProType = 'ET';
        }
        sqlagencyProType = '%' + agencyProType + '%';
        Account accountInfo = [SELECT Name,Dealer_discount__c FROM account WHERE id =:accountid];
    Account accountInfo = [
      SELECT Name, Dealer_discount__c
      FROM account
      WHERE id = :accountid
    ];
        accountName = accountInfo.Name;
        consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>();
        Map<String,Product2__c> midMap = new Map<String,Product2__c>();
@@ -170,33 +203,46 @@
        //     midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]);
        // }
        //查询库存 追加返品库存
        List<Consumable_order_details2__c> ProductCount_Res = [select Id,  Name,Consumable_Product__c,
                                Bar_Code__c,Consumable_Product__r.Name__c,
                                Asset_Model_No__c,Isoverdue__c,Box_Piece__c
    List<Consumable_order_details2__c> ProductCount_Res = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c
                            FROM Consumable_order_details2__c
                            WHERE Dealer_Arrive__c = true
                            AND Dealer_Shipment__c = false
                            AND Dealer_Saled__c = false
                            AND Dealer_Returned__c = false
                            AND Lose_Flag__c = false
                            AND Cancellation_Flag__c = false
                            AND Bar_Code__c !=null
                            AND Product_Type__c like : sqlagencyProType
      WHERE
        Dealer_Arrive__c = TRUE
        AND Dealer_Shipment__c = FALSE
        AND Dealer_Saled__c = FALSE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
        AND Cancellation_Flag__c = FALSE
        AND Bar_Code__c != NULL
        AND Product_Type__c LIKE :sqlagencyProType
                            AND Arrive_Owner_Work_Location__c =: userWorkLocation
                            AND  Dealer_Info_text__c = :accountName];
        AND Dealer_Info_text__c = :accountName
    ];
        //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start
        //开始制作表头数据
        Set<Id> Product2cIdSet = new Set<Id>();
        for(Consumable_order_details2__c con_or_d2item: ProductCount_Res){
            Product2cIdSet.add(con_or_d2item.Consumable_Product__c);
        }
        List<Product2__c> productCount_Unfull_bak = [select Id, Name,Name__c,
                                                            SFDA_Status__c,Packing_list_manual__c,
    List<Product2__c> productCount_Unfull_bak = [
      SELECT
        Id,
        Name,
        Name__c,
        SFDA_Status__c,
        Packing_list_manual__c,
                                                            Asset_Model_No__c
                                                        from Product2__c
      FROM Product2__c
                                                        //where Estimation_Entry_Possibility__c = '○'
                                                         where Id in:Product2cIdSet
                                                         and Product_Type__c like : sqlagencyProType
      WHERE Id IN :Product2cIdSet AND Product_Type__c LIKE :sqlagencyProType
                                                        ];
        for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){
            midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]);
@@ -208,42 +254,85 @@
        // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ProductCount_Res  ' + ProductCount_Res.size()));
        for(Integer i = 0 ; i< ProductCount_Res.size();i++){
            //然后循环CountDel做Box和piece2个map
            if(MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '盒'){
                if(newMidBoxMap.containsKey(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c)){
                    ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c).clone();
      if (
        MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) &&
        ProductCount_Res[i].Box_Piece__c == '盒'
      ) {
        if (
          newMidBoxMap.containsKey(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c
          )
        ) {
          ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(
              ProductCount_Res[i].Consumable_Product__c +
              ProductCount_Res[i].Box_Piece__c
            )
            .clone();
                    Jstage.countid = Jstage.countid+1 ;
                    if(ProductCount_Res[i].Isoverdue__c == 1){
                        Jstage.limitCount = Jstage.limitCount + 1;
                    }
                    Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c;
                    newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage);
          newMidBoxMap.put(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c,
            Jstage
          );
                }else{
                    ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(ProductCount_Res[i].Consumable_Product__c));
          ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(
            MidMap.get(ProductCount_Res[i].Consumable_Product__c)
          );
                    Jstage.countid = Jstage.countid+1 ;
                    if(ProductCount_Res[i].Isoverdue__c == 1){
                        Jstage.limitCount = Jstage.limitCount + 1;
                    }
                    Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c;
                    newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage);
          newMidBoxMap.put(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c,
            Jstage
          );
                }
            }else if(MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '个'){
                if(newMidPieceMap.containsKey(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c)){
                    ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c).clone();
      } else if (
        MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) &&
        ProductCount_Res[i].Box_Piece__c == '个'
      ) {
        if (
          newMidPieceMap.containsKey(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c
          )
        ) {
          ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(
              ProductCount_Res[i].Consumable_Product__c +
              ProductCount_Res[i].Box_Piece__c
            )
            .clone();
                    Jstage.countid = Jstage.countid+1 ;
                    if(ProductCount_Res[i].Isoverdue__c == 1){
                        Jstage.limitCount = Jstage.limitCount + 1;
                    }
                    Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c;
                    newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage);
          newMidPieceMap.put(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c,
            Jstage
          );
                }else{
                    ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(ProductCount_Res[i].Consumable_Product__c));
          ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(
            MidMap.get(ProductCount_Res[i].Consumable_Product__c)
          );
                    Jstage.countid = Jstage.countid+1 ;
                    if(ProductCount_Res[i].Isoverdue__c == 1){
                        Jstage.limitCount = Jstage.limitCount + 1;
                    }
                    Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c;
                    newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c+ProductCount_Res[i].Box_Piece__c, Jstage);
          newMidPieceMap.put(
            ProductCount_Res[i].Consumable_Product__c +
            ProductCount_Res[i].Box_Piece__c,
            Jstage
          );
                }
            }
        }
@@ -258,7 +347,9 @@
        for(ConsumableorderdetailsInfo bss : boxRecords){
            consumableorderdetailsRecords.add(bss);
            if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){
                consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个'));
        consumableorderdetailsRecords.add(
          newMidPieceMap.get(bss.Prod.Id + '个')
        );
                //newMidPieceMap移除已经添加的Piece
                newMidPieceMap.remove(bss.Prod.Id + '个');
            }
@@ -269,17 +360,19 @@
        //consumableorderdetailsCount = consumableorderdetailsRecords.size();
        listCut();
      
        data.put('ConsumableorderdetailsRecordsview',JSON.serialize(ConsumableorderdetailsRecordsview));
    data.put(
      'ConsumableorderdetailsRecordsview',
      JSON.serialize(ConsumableorderdetailsRecordsview)
    );
        data.put('userWorkLocation',userWorkLocation);
        data.put('agencyProType',agencyProType);
        data.put('accountName',accountName);
        data.put('accountid',accountid);
        
        data.put('consumableorderdetailsRecords',JSON.serialize(consumableorderdetailsRecords));
    data.put(
      'consumableorderdetailsRecords',
      JSON.serialize(consumableorderdetailsRecords)
    );
        res.status = 'Success';
        res.code = 200;
        System.debug('res = ' + res);
@@ -308,7 +401,9 @@
                }
            }
            consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak);
            consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover);
      consumableorderdetailsRecordsview.add(
        ConsumableorderdetailsRecordsbreakover
      );
        }else{
            consumableorderdetailsRecordsview.add(consumableorderdetailsRecords);
        }
@@ -318,7 +413,7 @@
    //========20160311======ADD_Start================================
    public static  List<String> ParseBarCode(String Code){
        Map<String,Integer> barcodeCountMap = new Map<String,Integer>();
        String[] Cache = new String[]{};
    String[] Cache = new List<String>{};
        Cache = Code.split('\n');
        List <String> Buff = new List<String>();
        for(String A : Cache){
@@ -331,10 +426,7 @@
            Buff.add(A + barcodeCountMap.get(A));
        }
        return Buff;
    }
    //test
@@ -345,24 +437,42 @@
    //========20160311======ADD_End==================================
    // BarCode录入
    @AuraEnabled
    public static ResponseBodyLWC searchConsumableorderdetails(String agencyProType,String userWorkLocation,String accountName,String barcode,String consumableorderdetailsRecordsLWC,Integer pageSizeLWC, Integer pageTokenLWC, String sortFieldLWC, String sortOrderLWC){
  public static ResponseBodyLWC searchConsumableorderdetails(
    String agencyProType,
    String userWorkLocation,
    String accountName,
    String barcode,
    String consumableorderdetailsRecordsLWC,
    Integer pageSizeLWC,
    Integer pageTokenLWC,
    String sortFieldLWC,
    String sortOrderLWC
  ) {
        pageSize = pageSizeLWC;
        pageToken = pageTokenLWC;
        sortField = sortFieldLWC;
        sortOrder = sortOrderLWC;
        System.debug('===>consumableorderdetailsRecordsLWC'+consumableorderdetailsRecordsLWC);
        List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class);
    System.debug(
      '===>consumableorderdetailsRecordsLWC' + consumableorderdetailsRecordsLWC
    );
    List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      consumableorderdetailsRecordsLWC,
      List<ConsumableorderdetailsInfo>.class
    );
        // ConsumableorderdetailsInfo[] consumableorderdetailsRecords=(List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class);
       system.debug('=====>consumableorderdetailsRecordsLWC'+consumableorderdetailsRecordsLWC);
    system.debug(
      '=====>consumableorderdetailsRecordsLWC' +
      consumableorderdetailsRecordsLWC
    );
        ResponseBodyLWC res = new ResponseBodyLWC();
        Map<String,object> data = new Map<String,object>();
        res.entity = data;
        sqlagencyProType = '%' + agencyProType + '%';
    System.debug('sqlagencyProType==>' + sqlagencyProType);
    System.debug('accountName==>' + accountName);
    System.debug('userWorkLocation==>' + userWorkLocation);
        /* BarCodelist做成 */
        //FIXME barcodeSet 做成,ProductCount_ResSet 做成
@@ -370,22 +480,34 @@
        pandiandetailsListShow = new List<List<Consumable_order_details2__c>>();
        done = false;
        List<String> BarCodeListP = ParseBarCode( barcode );
    System.debug('BarCodeListP===>' + BarCodeListP);
        //查询库存 追加返品库存
        List<Consumable_order_details2__c> ProductCount_Res = [select Id,  Name,Consumable_Product__c,
                                Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Info_text__c,
                                Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
    List<Consumable_order_details2__c> ProductCount_Res = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Dealer_Info_text__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c,
                                Bar_Code_search__c
                            FROM Consumable_order_details2__c
                            WHERE Dealer_Arrive__c = true
                            AND Dealer_Shipment__c = false
                            AND Dealer_Saled__c = false
                            AND Dealer_Returned__c = false
                            AND Lose_Flag__c = false
                            AND Cancellation_Flag__c = false
                            AND Bar_Code__c !=null
                            AND Product_Type__c like : sqlagencyProType
      WHERE
        Dealer_Arrive__c = TRUE
        AND Dealer_Shipment__c = FALSE
        AND Dealer_Saled__c = FALSE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
        AND Cancellation_Flag__c = FALSE
        AND Bar_Code__c != NULL
        AND Product_Type__c LIKE :sqlagencyProType
                            AND Arrive_Owner_Work_Location__c =: userWorkLocation
                            AND  Dealer_Info_text__c = :accountName ];
        AND Dealer_Info_text__c = :accountName
    ];
    System.debug('ProductCount_Res==>' + ProductCount_Res);
        reFindProduct.clear();
        Map<String,ConsumableorderdetailsInfo> barCodeListAdjustMap = new  Map<String,ConsumableorderdetailsInfo>();
        //barCodeListLoseMap.clear();
@@ -408,11 +530,17 @@
                if(ass.check==true){
                    //ass.Diff = ass.countid - ass.Pandian;
                    for(integer i = 0 ; i < ProductCount_Res.size();i++){
                        if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){
            System.debug('Pro==>' + ProductCount_Res[i].Consumable_Product__c);
            System.debug('ProId==>' + ass.Prod.Id);
            System.debug('ass.boxPiece ==>' + ass.boxPiece);
            System.debug('boxPiece ==>' + ProductCount_Res[i].Box_Piece__c);
            if (
              ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id &&
              ass.boxPiece == ProductCount_Res[i].Box_Piece__c
            ) {
                            if(carCodeListLose.contains(ProductCount_Res[i].Bar_Code__c)){
                                continue;
                            }else{
                                //consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失'));
                                //pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失');
                                ////barCodeListLoseMap.put(ProductCount_Res[i].Id, new ConsumableorderdetailsInfo(ProductCount_Res[i]));
@@ -424,78 +552,132 @@
            }
            //已经出库的产品
            List<Consumable_order_details2__c>  reSet1 = [SELECT Id,  Name,Consumable_Product__c,
                            Bar_Code__c,Consumable_Product__r.Name__c,
                            Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
                            Bar_Code_search__c,Dealer_Info_text__c
      List<Consumable_order_details2__c> reSet1 = [
        SELECT
          Id,
          Name,
          Consumable_Product__c,
          Bar_Code__c,
          Consumable_Product__r.Name__c,
          Asset_Model_No__c,
          Isoverdue__c,
          Box_Piece__c,
          Bar_Code_search__c,
          Dealer_Info_text__c
                        FROM Consumable_order_details2__c
                        WHERE Dealer_Arrive__c = TRUE
        WHERE
          Dealer_Arrive__c = TRUE
                        AND  (Dealer_Shipment__c= TRUE
                        or  Dealer_Saled__c = TRUE)
          OR Dealer_Saled__c = TRUE)
                        AND  Dealer_Returned__c = FALSE
                        AND  Cancellation_Flag__c = FALSE
                        AND  Bar_Code__c in :carCodeListLose
          AND Bar_Code__c IN :carCodeListLose
                        AND Dealer_Info_text__c = :accountName
                        ORDER BY Name ];
        ORDER BY Name
      ];
            Map<String,Consumable_order_details2__c> needreturnMap = new Map<String,Consumable_order_details2__c>();
            for(Consumable_order_details2__c cod2 :reSet1){
                needreturnMap.put(cod2.Bar_Code__c,cod2);
            }
            // 经销商之间或者同一经销商不同工作地调货
            reSet1 = [SELECT Id,  Name,Consumable_Product__c,
                            Bar_Code__c,Consumable_Product__r.Name__c,
                            Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
                            Bar_Code_search__c,Dealer_Info_text__c
      reSet1 = [
        SELECT
          Id,
          Name,
          Consumable_Product__c,
          Bar_Code__c,
          Consumable_Product__r.Name__c,
          Asset_Model_No__c,
          Isoverdue__c,
          Box_Piece__c,
          Bar_Code_search__c,
          Dealer_Info_text__c
                        FROM Consumable_order_details2__c
                        WHERE Dealer_Arrive__c = TRUE
        WHERE
          Dealer_Arrive__c = TRUE
                        AND  Dealer_Shipment__c= FALSE
                        AND  Dealer_Saled__c = FALSE
                        AND  Dealer_Returned__c = FALSE
                        AND  Cancellation_Flag__c = FALSE
                        AND  Bar_Code__c in :carCodeListLose
          AND Bar_Code__c IN :carCodeListLose
                        AND (Dealer_Info_text__c != :accountName
                            OR (Dealer_Info_text__c = :accountName
                                AND Arrive_Owner_Work_Location__c != :userWorkLocation)
                        )
                        ORDER BY Name ];
          AND Arrive_Owner_Work_Location__c != :userWorkLocation))
        ORDER BY Name
      ];
            Map<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>();
            for(Consumable_order_details2__c cod2 :reSet1){
                otherAgProMap.put(cod2.Bar_Code__c,cod2);
            }
            carCodeListLose.clear();
            for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
                if(ass.check==true){
                    ass.Diff = ass.countid - ass.Pandian;
                    for(integer i = 0 ; i < ProductCount_Res.size();i++){
                        if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){
                            if(carCodeListLose.contains(ProductCount_Res[i].Bar_Code_search__c)){
            if (
              ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id &&
              ass.boxPiece == ProductCount_Res[i].Box_Piece__c
            ) {
              if (
                carCodeListLose.contains(ProductCount_Res[i].Bar_Code_search__c)
              ) {
                                continue;
                            }else{
                                if(needreturnMap.containsKey(ProductCount_Res[i].Bar_Code__c)){
                                    consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品未返品'));
                if (
                  needreturnMap.containsKey(ProductCount_Res[i].Bar_Code__c)
                ) {
                  consumableorderdetailsRecordserrordummy.add(
                    new ConsumableorderdetailsInfo(
                      ProductCount_Res[i],
                      '该产品未返品'
                    )
                  );
                                    pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品未返品');
                                    carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c);
                                    continue;
                                }
                                if(otherAgProMap.containsKey(ProductCount_Res[i].Bar_Code__c)){
                                    consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。'));
                                    pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。');
                if (
                  otherAgProMap.containsKey(ProductCount_Res[i].Bar_Code__c)
                ) {
                  consumableorderdetailsRecordserrordummy.add(
                    new ConsumableorderdetailsInfo(
                      ProductCount_Res[i],
                      '该产品归属于' +
                        otherAgProMap.get(ProductCount_Res[i].Bar_Code__c)
                          .Dealer_Info_text__c +
                        '的库存。'
                    )
                  );
                  pandiandetailsMap.put(
                    ProductCount_Res[i].Id,
                    '该产品归属于' +
                      otherAgProMap.get(ProductCount_Res[i].Bar_Code__c)
                        .Dealer_Info_text__c +
                      '的库存。'
                  );
                                    carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c);
                                    continue;
                                }
                                if (ProductCount_Res[i].Isoverdue__c == 0) {
                                    consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品已经过有效期,请销存。'));
                                    pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。');
                  consumableorderdetailsRecordserrordummy.add(
                    new ConsumableorderdetailsInfo(
                      ProductCount_Res[i],
                      '该产品已经过有效期,请销存。'
                    )
                  );
                  pandiandetailsMap.put(
                    ProductCount_Res[i].Id,
                    '该产品已经过有效期,请销存。'
                  );
                                    carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c);
                                    ass.Diff--;
                                    continue;
                                }
                                consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失'));
                consumableorderdetailsRecordserrordummy.add(
                  new ConsumableorderdetailsInfo(ProductCount_Res[i], '丢失')
                );
                                pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失');
                                carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c);
                            }
@@ -508,31 +690,48 @@
            }
            List<Consumable_order_details2__c> showcod2 = new List<Consumable_order_details2__c>();
            if (pandiandetailsMap.keySet().size() > 0) {
                showcod2 = [select Id,  Name,Consumable_Product__c,
                                Bar_Code__c,Consumable_Product__r.Name__c,
                                Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
        showcod2 = [
          SELECT
            Id,
            Name,
            Consumable_Product__c,
            Bar_Code__c,
            Consumable_Product__r.Name__c,
            Asset_Model_No__c,
            Isoverdue__c,
            Box_Piece__c,
                                Bar_Code_search__c
                            FROM Consumable_order_details2__c
                            WHERE Id in :pandiandetailsMap.keySet()
                            order by Name];
          WHERE Id IN :pandiandetailsMap.keySet()
          ORDER BY Name
        ];
            }
            initStandardController();
            showcod2nid = cod2s();
           
            for (Consumable_order_details2__c cod2 : showcod2nid) {
                codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id)));
        codPageRecords.add(
          new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))
        );
            }
            iSinventory = true;
            if(codPageRecords.size() > 0) done = true;
      if (codPageRecords.size() > 0)
        done = true;
            consumableorderdetailsRecordserrordummy.clear();
            //pandiandetailsList = new list<Consumable_order_details2__c>();
            pandiandetailsList = [select Id, Bar_Code__c,Consumable_Product__r.Name__c,
                                    Box_Piece__c,Lose_reason__c
      pandiandetailsList = [
        SELECT
          Id,
          Bar_Code__c,
          Consumable_Product__r.Name__c,
          Box_Piece__c,
          Lose_reason__c
                                FROM Consumable_order_details2__c
                                WHERE Id in :pandiandetailsMap.keySet()
                                order by Name];
        WHERE Id IN :pandiandetailsMap.keySet()
        ORDER BY Name
      ];
            for(Consumable_order_details2__c codDet : pandiandetailsList){
                codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id);
            }
@@ -551,11 +750,15 @@
                 //分页
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            totalCount = codPageRecords.size();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
      paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
        ? pageToken + pageSize
        : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
      paginatedAccounts.recordEnd = totalCount >= recordEnd
        ? recordEnd
        : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            Integer startIdx;
@@ -575,8 +778,14 @@
            //end
            data.put('codPageRecords',JSON.serialize(codPageRecords));
            data.put('consumableorderdetailsRecords',JSON.serialize(consumableorderdetailsRecords));
            data.put('consumableorderdetailsRecordsview',JSON.serialize(consumableorderdetailsRecordsview));
      data.put(
        'consumableorderdetailsRecords',
        JSON.serialize(consumableorderdetailsRecords)
      );
      data.put(
        'consumableorderdetailsRecordsview',
        JSON.serialize(consumableorderdetailsRecordsview)
      );
            data.put('pandiandetailsMap',pandiandetailsMap);
            System.debug('iSinventory===>'+iSinventory);
            System.debug('codPageRecords===>'+codPageRecords);
@@ -587,36 +796,44 @@
            res.status = 'Success1';
         
            return res;
        }
        //CHAN-B7J4NB 只有一个时,盘点不到
        //init();
        //CHAN-B7J4NB
        Map<String,String> showproductIdMap = new Map<String,String>();
        for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
            showproductIdMap.put(ass.prod.Id + ass.boxPiece, ass.prod.Id + ass.boxPiece);
      showproductIdMap.put(
        ass.prod.Id + ass.boxPiece,
        ass.prod.Id + ass.boxPiece
      );
        }
// ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCodeListP' + BarCodeListP));
        /***************************************************************************/
        // BarCode的检索  所有在库
        reSet = [select Id,Consumable_Product__c,Consumable_Product__r.Name__c,
                        Box_Piece__c,Bar_Code_search__c,Isoverdue__c
                    from Consumable_order_details2__c
                    where Bar_Code_search__c in :BarCodeListP
                    AND Dealer_Arrive__c = true
                    AND Dealer_Shipment__c = false
                    AND Dealer_Saled__c = false
                    AND Dealer_Returned__c = false
                    AND Lose_Flag__c = false
                    AND Cancellation_Date__c = null
                    and Bar_Code__c !=null
                    AND Product_Type__c like : sqlagencyProType
    reSet = [
      SELECT
        Id,
        Consumable_Product__c,
        Consumable_Product__r.Name__c,
        Box_Piece__c,
        Bar_Code_search__c,
        Isoverdue__c
      FROM Consumable_order_details2__c
      WHERE
        Bar_Code_search__c IN :BarCodeListP
        AND Dealer_Arrive__c = TRUE
        AND Dealer_Shipment__c = FALSE
        AND Dealer_Saled__c = FALSE
        AND Dealer_Returned__c = FALSE
        AND Lose_Flag__c = FALSE
        AND Cancellation_Date__c = NULL
        AND Bar_Code__c != NULL
        AND Product_Type__c LIKE :sqlagencyProType
                    AND Arrive_Owner_Work_Location__c =: userWorkLocation
                    AND  Dealer_Info_text__c = :accountName
                    order by Name];
      ORDER BY Name
    ];
                    System.debug('reSet===>'+reSet);
        Map<String, Integer> pandianProdIdCountMap = new Map<String, Integer>();        // ProdId 単位
        // 20200509 add gzw 记录需要销存数量
@@ -627,46 +844,90 @@
        for(Consumable_order_details2__c rs : reSet){
            //BarCodeListPandian.add(rs.Bar_Code_search__c);
            for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
                if(rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece){
        if (
          rs.Consumable_Product__c == ass.Prod.Id &&
          rs.Box_Piece__c == ass.boxPiece
        ) {
                    ass.check = true;
                }
            }
            barCodeListPandianMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs));
      barCodeListPandianMap.put(
        rs.Bar_Code_search__c,
        new ConsumableorderdetailsInfo(rs)
      );
            if (rs.Isoverdue__c == 0) {
                consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'该产品已经过有效期,请销存。'));
        consumableorderdetailsRecordserrordummy.add(
          new ConsumableorderdetailsInfo(rs, '该产品已经过有效期,请销存。')
        );
                pandiandetailsMap.put(rs.Id, '该产品已经过有效期,请销存。');
                if (pandianoverdueCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) {
                    pandianoverdueCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1);
        if (
          pandianoverdueCountMap.containsKey(
            rs.Consumable_product__c + rs.Box_Piece__c
          ) == false
        ) {
          pandianoverdueCountMap.put(
            rs.Consumable_Product__c + rs.Box_Piece__c,
            1
          );
                } else {
                    pandianoverdueCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, pandianoverdueCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1);
          pandianoverdueCountMap.put(
            rs.Consumable_Product__c + rs.Box_Piece__c,
            pandianoverdueCountMap.get(
              rs.Consumable_Product__c + rs.Box_Piece__c
            ) + 1
          );
                }
                continue;
            }
            if (pandianProdIdCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) {
                pandianProdIdCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1);
      if (
        pandianProdIdCountMap.containsKey(
          rs.Consumable_product__c + rs.Box_Piece__c
        ) == false
      ) {
        pandianProdIdCountMap.put(
          rs.Consumable_Product__c + rs.Box_Piece__c,
          1
        );
            } else {
                pandianProdIdCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, pandianProdIdCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1);
        pandianProdIdCountMap.put(
          rs.Consumable_Product__c + rs.Box_Piece__c,
          pandianProdIdCountMap.get(
            rs.Consumable_Product__c + rs.Box_Piece__c
          ) + 1
        );
            }
        }
        // 经销商之间或者同一经销商不同工作地调货
        List<Consumable_order_details2__c> reSet1 = [SELECT Id,  Name,Consumable_Product__c,
                        Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Shipment__c,Dealer_Saled__c,
                        Asset_Model_No__c,Isoverdue__c,Box_Piece__c,Dealer_Arrive__c,
                        Bar_Code_search__c,Dealer_Info_text__c
    List<Consumable_order_details2__c> reSet1 = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Dealer_Shipment__c,
        Dealer_Saled__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c,
        Dealer_Arrive__c,
        Bar_Code_search__c,
        Dealer_Info_text__c
                    FROM Consumable_order_details2__c
                    WHERE (Dealer_Arrive__c = TRUE
                    or  Dealer_Shipment__c= TRUE
                    or  Dealer_Saled__c = TRUE)
      WHERE
        (Dealer_Arrive__c = TRUE
        OR Dealer_Shipment__c = TRUE
        OR Dealer_Saled__c = TRUE)
                    AND  Dealer_Returned__c = FALSE
                    AND  Cancellation_Flag__c = FALSE
                    AND  Bar_Code_search__c in :BarCodeListP
        AND Bar_Code_search__c IN :BarCodeListP
                    AND (Dealer_Info_text__c != :accountName
                        OR (Dealer_Info_text__c = :accountName
                            AND Arrive_Owner_Work_Location__c != :userWorkLocation)
                    )
                    ORDER BY Name ];
        AND Arrive_Owner_Work_Location__c != :userWorkLocation))
      ORDER BY Name
    ];
        Map<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>();
        for(Consumable_order_details2__c cod2 :reSet1){
            otherAgProMap.put(cod2.Bar_Code__c,cod2);
@@ -674,62 +935,99 @@
        // 需要入库的产品
        for(Consumable_order_details2__c cod2 : reSet1){
            for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
                if(cod2.Consumable_Product__c == ass.Prod.Id && cod2.Box_Piece__c == ass.boxPiece){
        if (
          cod2.Consumable_Product__c == ass.Prod.Id &&
          cod2.Box_Piece__c == ass.boxPiece
        ) {
                    ass.check = true;
                }
            }
            if(!showproductIdMap.containsKey(cod2.Consumable_product__c + cod2.Box_Piece__c)){
      if (
        !showproductIdMap.containsKey(
          cod2.Consumable_product__c + cod2.Box_Piece__c
        )
      ) {
                reFindProductList.add(cod2);
                proIdNotinpage.put(cod2.Consumable_Product__c, cod2.Box_Piece__c);
            }
            if(!barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c)
                && otherAgProMap.containsKey(cod2.Bar_Code__c)
                && (otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == true
                || otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == true) ){
                consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'无此产品的库存,请入库。'));
      if (
        !barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) &&
        otherAgProMap.containsKey(cod2.Bar_Code__c) &&
        (otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == true ||
        otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == true)
      ) {
        consumableorderdetailsRecordserrordummy.add(
          new ConsumableorderdetailsInfo(cod2, '无此产品的库存,请入库。')
        );
                pandiandetailsMap.put(cod2.Id, '无此产品的库存,请入库。');
            }
        }
        //寻回明细
        List<Consumable_order_details2__c> productAdjust = new List<Consumable_order_details2__c>();
        productAdjust = [select Id,  Name,Consumable_Product__c,
                            Bar_Code__c,Consumable_Product__r.Name__c,Lose_reason__c,
                            Asset_Model_No__c,Box_Piece__c,Bar_Code_search__c,Isoverdue__c
                        from Consumable_order_details2__c
                        where Bar_Code_search__c in :BarCodeListP
                          and Bar_Code__c !=null
                          and Lose_Flag__c = true
                          AND Product_Type__c like : sqlagencyProType
    productAdjust = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Lose_reason__c,
        Asset_Model_No__c,
        Box_Piece__c,
        Bar_Code_search__c,
        Isoverdue__c
      FROM Consumable_order_details2__c
      WHERE
        Bar_Code_search__c IN :BarCodeListP
        AND Bar_Code__c != NULL
        AND Lose_Flag__c = TRUE
        AND Product_Type__c LIKE :sqlagencyProType
                          AND  Dealer_Info_text__c = :accountName
                          AND Arrive_Owner_Work_Location__c =: userWorkLocation
                        order by Name];
      ORDER BY Name
    ];
        for (Consumable_order_details2__c rs : productAdjust){
            // 过期库存销存 20200427 gzw add srart
            if (rs.Isoverdue__c == 0 || rs.Lose_reason__c == '过期库存销存' ) {
                consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'过期或者销存产品,无法寻回入库'));
        consumableorderdetailsRecordserrordummy.add(
          new ConsumableorderdetailsInfo(rs, '过期或者销存产品,无法寻回入库')
        );
                pandiandetailsMap.put(rs.Id, '过期或者销存产品,无法寻回入库');
                carCodeListLose.add(rs.Bar_Code_search__c);
                continue;
            }
            // 过期库存销存 20200427 gzw add end
            for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
                if(rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece){
        if (
          rs.Consumable_Product__c == ass.Prod.Id &&
          rs.Box_Piece__c == ass.boxPiece
        ) {
                    ass.check = true;
                }
            }
            if(!showproductIdMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c)){
      if (
        !showproductIdMap.containsKey(
          rs.Consumable_product__c + rs.Box_Piece__c
        )
      ) {
                reFindProductList.add(rs);
                proIdNotinpage.put(rs.Consumable_Product__c, rs.Box_Piece__c);
            }
            if(barCodeListAdjustMap.containsKey(rs.Bar_Code_search__c)){
                continue;
            }else{
                barCodeListAdjustMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs));
                consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs,'寻回'));
        barCodeListAdjustMap.put(
          rs.Bar_Code_search__c,
          new ConsumableorderdetailsInfo(rs)
        );
        consumableorderdetailsRecordserrordummy.add(
          new ConsumableorderdetailsInfo(rs, '寻回')
        );
                pandiandetailsMap.put(rs.Id, '寻回');
                consumableorderdetailsRecordsAdjust.add(new ConsumableorderdetailsInfo(rs));
        consumableorderdetailsRecordsAdjust.add(
          new ConsumableorderdetailsInfo(rs)
        );
            }
        }
        if(reFindProductList.size() > 0){
@@ -737,50 +1035,101 @@
            List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>();
            Map<String,ConsumableorderdetailsInfo> newMidBoxMap = new Map<String,ConsumableorderdetailsInfo>();
            Map<String,ConsumableorderdetailsInfo> newMidPieceMap = new Map<String,ConsumableorderdetailsInfo>();
            List<Product2__c> product_Refind = [select Id, Name,Name__c,SFDA_Status__c,Packing_list_manual__c,Asset_Model_No__c
                                    from Product2__c
                                    WHERE Id in :proIdNotinpage.keySet()];
      List<Product2__c> product_Refind = [
        SELECT
          Id,
          Name,
          Name__c,
          SFDA_Status__c,
          Packing_list_manual__c,
          Asset_Model_No__c
        FROM Product2__c
        WHERE Id IN :proIdNotinpage.keySet()
      ];
            for(Product2__c pro : product_Refind){
                midMap.put(pro.Id, pro);
            }
            for(Integer i = 0 ; i< reFindProductList.size();i++){
                //然后循环CountDel做Box和piece2个map
                if(MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '盒'){
                    if(newMidBoxMap.containsKey(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c)){
                        ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c).clone();
        if (
          MidMap.containsKey(reFindProductList[i].Consumable_Product__c) &&
          reFindProductList[i].Box_Piece__c == '盒'
        ) {
          if (
            newMidBoxMap.containsKey(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c
            )
          ) {
            ConsumableorderdetailsInfo Jstage = newMidBoxMap.get(
                reFindProductList[i].Consumable_Product__c +
                reFindProductList[i].Box_Piece__c
              )
              .clone();
                        Jstage.countid = 0 ;
                        if(reFindProductList[i].Isoverdue__c == 1){
                            Jstage.limitCount = 0;
                        }
                        Jstage.boxPiece = reFindProductList[i].Box_Piece__c;
                        newMidBoxMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage);
            newMidBoxMap.put(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c,
              Jstage
            );
}else{
                                            ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(reFindProductList[i].Consumable_Product__c));
            ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(
              MidMap.get(reFindProductList[i].Consumable_Product__c)
            );
                        Jstage.countid = 0 ;
                        if(reFindProductList[i].Isoverdue__c == 1){
                            Jstage.limitCount = 0;
                        }
                        Jstage.boxPiece = reFindProductList[i].Box_Piece__c;
                        newMidBoxMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage);
            newMidBoxMap.put(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c,
              Jstage
            );
                    }
                }else if(MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '个'){
                    if(newMidPieceMap.containsKey(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c)){
                        ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(reFindProductList[i].Consumable_product__c+reFindProductList[i].Box_Piece__c).clone();
        } else if (
          MidMap.containsKey(reFindProductList[i].Consumable_Product__c) &&
          reFindProductList[i].Box_Piece__c == '个'
        ) {
          if (
            newMidPieceMap.containsKey(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c
            )
          ) {
            ConsumableorderdetailsInfo Jstage = newMidPieceMap.get(
                reFindProductList[i].Consumable_product__c +
                reFindProductList[i].Box_Piece__c
              )
              .clone();
                        Jstage.countid = 0 ;
                        if(reFindProductList[i].Isoverdue__c == 1){
                            Jstage.limitCount = 0;
                        }
                        Jstage.boxPiece = reFindProductList[i].Box_Piece__c;
                        newMidPieceMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage);
            newMidPieceMap.put(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c,
              Jstage
            );
                    }else{
                        ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(MidMap.get(reFindProductList[i].Consumable_Product__c));
            ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo(
              MidMap.get(reFindProductList[i].Consumable_Product__c)
            );
                        Jstage.countid = 0 ;
                        if(reFindProductList[i].Isoverdue__c == 1){
                            Jstage.limitCount = 0;
                        }
                        Jstage.boxPiece = reFindProductList[i].Box_Piece__c;
                        newMidPieceMap.put(reFindProductList[i].Consumable_Product__c+reFindProductList[i].Box_Piece__c, Jstage);
            newMidPieceMap.put(
              reFindProductList[i].Consumable_Product__c +
              reFindProductList[i].Box_Piece__c,
              Jstage
            );
                    }
                }
            }
@@ -797,13 +1146,17 @@
            for(ConsumableorderdetailsInfo bss : boxRecords){
                consumableorderdetailsRecords.add(bss);
                if(newMidPieceMap.containsKey(bss.Prod.Id + '个')){
                    consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个'));
          consumableorderdetailsRecords.add(
            newMidPieceMap.get(bss.Prod.Id + '个')
          );
                    //newMidPieceMap移除已经添加的Piece
                    newMidPieceMap.remove(bss.Prod.Id + '个');
                }
            }
            for(ConsumableorderdetailsInfo bss : newMidPieceMap.values()){
                consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个'));
        consumableorderdetailsRecords.add(
          newMidPieceMap.get(bss.Prod.Id + '个')
        );
            }
        }
@@ -811,8 +1164,15 @@
        for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
            if(ass.check == true){
                for(integer i = 0 ; i<ProductCount_Res.size();i++){
                    if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){
                        if(barCodeListPandianMap.get(ProductCount_Res[i].Bar_Code_search__c) != null){
          if (
            ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id &&
            ass.boxPiece == ProductCount_Res[i].Box_Piece__c
          ) {
            if (
              barCodeListPandianMap.get(
                ProductCount_Res[i].Bar_Code_search__c
              ) != null
            ) {
                            continue;
                        }else{
                            carCodeListLose.add(ProductCount_Res[i].Bar_Code__c);
@@ -825,19 +1185,29 @@
            }
        }
        //已经出库的产品
        List<Consumable_order_details2__c>  reSet2 = [SELECT Id,  Name,Consumable_Product__c,
                        Bar_Code__c,Consumable_Product__r.Name__c,
                        Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
                        Bar_Code_search__c,Dealer_Info_text__c
    List<Consumable_order_details2__c> reSet2 = [
      SELECT
        Id,
        Name,
        Consumable_Product__c,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Asset_Model_No__c,
        Isoverdue__c,
        Box_Piece__c,
        Bar_Code_search__c,
        Dealer_Info_text__c
                    FROM Consumable_order_details2__c
                    WHERE Dealer_Arrive__c = TRUE
      WHERE
        Dealer_Arrive__c = TRUE
                    AND  (Dealer_Shipment__c= TRUE
                    or  Dealer_Saled__c = TRUE)
        OR Dealer_Saled__c = TRUE)
                    AND  Dealer_Returned__c = FALSE
                    AND  Cancellation_Flag__c = FALSE
                    AND  Bar_Code_search__c in :BarCodeListP
        AND Bar_Code_search__c IN :BarCodeListP
                    AND Dealer_Info_text__c = :accountName
                    ORDER BY Name ];
      ORDER BY Name
    ];
        Map<String,Consumable_order_details2__c> needreturnMap = new Map<String,Consumable_order_details2__c>();
        for(Consumable_order_details2__c cod2 :reSet2){
            needreturnMap.put(cod2.Bar_Code__c,cod2);
@@ -868,43 +1238,101 @@
        for(ConsumableorderdetailsInfo ass : consumableorderdetailsRecords){
            if(ass.check == true){
                for(integer i = 0 ; i<ProductCount_Res.size();i++){
                    if(ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c){
                        if(barCodeListPandianMap.containsKey(ProductCount_Res[i].Bar_Code_search__c)){
          if (
            ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id &&
            ass.boxPiece == ProductCount_Res[i].Box_Piece__c
          ) {
            if (
              barCodeListPandianMap.containsKey(
                ProductCount_Res[i].Bar_Code_search__c
              )
            ) {
                            continue;
                        }
                        if (ProductCount_Res[i].Isoverdue__c == 0) {
                            consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'该产品已经过有效期,请销存。'));
                            pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。');
                            if (pandianoverdueCountMap.containsKey(ProductCount_Res[i].Consumable_product__c + ProductCount_Res[i].Box_Piece__c) == false) {
                                pandianoverdueCountMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, 1);
              consumableorderdetailsRecordserrordummy.add(
                new ConsumableorderdetailsInfo(
                  ProductCount_Res[i],
                  '该产品已经过有效期,请销存。'
                )
              );
              pandiandetailsMap.put(
                ProductCount_Res[i].Id,
                '该产品已经过有效期,请销存。'
              );
              if (
                pandianoverdueCountMap.containsKey(
                  ProductCount_Res[i].Consumable_product__c +
                  ProductCount_Res[i].Box_Piece__c
                ) == false
              ) {
                pandianoverdueCountMap.put(
                  ProductCount_Res[i].Consumable_Product__c +
                  ProductCount_Res[i].Box_Piece__c,
                  1
                );
                            } else {
                                pandianoverdueCountMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, pandianoverdueCountMap.get(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c) + 1);
                pandianoverdueCountMap.put(
                  ProductCount_Res[i].Consumable_Product__c +
                  ProductCount_Res[i].Box_Piece__c,
                  pandianoverdueCountMap.get(
                    ProductCount_Res[i].Consumable_Product__c +
                    ProductCount_Res[i].Box_Piece__c
                  ) + 1
                );
                            }
                            continue;
                        }
                        consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失'));
            consumableorderdetailsRecordserrordummy.add(
              new ConsumableorderdetailsInfo(ProductCount_Res[i], '丢失')
            );
                        pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失');
                    }
                }
                // 同时存在其他经销商库存产品
                for(Consumable_order_details2__c cod2 : reSet1){
                    if(cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c){
                        if(barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c)
                            && otherAgProMap.containsKey(cod2.Bar_Code__c)
                            && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == false
                            && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == false ){
                            consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。'));
                            pandiandetailsMap.put(cod2.Id, '该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。');
          if (
            cod2.Consumable_Product__c == ass.Prod.Id &&
            ass.boxPiece == cod2.Box_Piece__c
          ) {
            if (
              barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) &&
              otherAgProMap.containsKey(cod2.Bar_Code__c) &&
              otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == false &&
              otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == false
            ) {
              consumableorderdetailsRecordserrordummy.add(
                new ConsumableorderdetailsInfo(
                  cod2,
                  '该产品归属于' +
                    otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c +
                    '的库存。'
                )
              );
              pandiandetailsMap.put(
                cod2.Id,
                '该产品归属于' +
                  otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c +
                  '的库存。'
              );
                            continue;
                        }
                    }
                }
                // 需要返品的产品
                for(Consumable_order_details2__c cod2 : reSet2){
                    if(cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c){
          if (
            cod2.Consumable_Product__c == ass.Prod.Id &&
            ass.boxPiece == cod2.Box_Piece__c
          ) {
                        if(needreturnMap.containsKey(cod2.Bar_Code__c)){
                            consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2,'该产品目前出库状态,请返品。'));
              consumableorderdetailsRecordserrordummy.add(
                new ConsumableorderdetailsInfo(
                  cod2,
                  '该产品目前出库状态,请返品。'
                )
              );
                            pandiandetailsMap.put(cod2.Id, '该产品目前出库状态,请返品。');
                            continue;
                        }
@@ -942,44 +1370,69 @@
            }
        }
        //寻回做成
        for(ConsumableorderdetailsInfo ass :consumableorderdetailsRecords){
            for(ConsumableorderdetailsInfo adjust :consumableorderdetailsRecordsAdjust){
                if(ass.Prod.Name__c == adjust.Prod.Name__c && ass.boxPiece == adjust.orderdetails2.Box_Piece__c){
                    if(reFindProduct.containsKey(adjust.orderdetails2.Bar_Code_search__c)){
      for (
        ConsumableorderdetailsInfo adjust : consumableorderdetailsRecordsAdjust
      ) {
        if (
          ass.Prod.Name__c == adjust.Prod.Name__c &&
          ass.boxPiece == adjust.orderdetails2.Box_Piece__c
        ) {
          if (
            reFindProduct.containsKey(adjust.orderdetails2.Bar_Code_search__c)
          ) {
                        continue;
                    }else {
                        ass.Pandian ++;
                        ass.refind ++;
                        reFindProduct.put(adjust.orderdetails2.Bar_Code_search__c,adjust.orderdetails2.Bar_Code_search__c);
            reFindProduct.put(
              adjust.orderdetails2.Bar_Code_search__c,
              adjust.orderdetails2.Bar_Code_search__c
            );
                    }
                }
            }
        }
        if (pandiandetailsMap.keySet().size() > 0) {
            List<Consumable_order_details2__c> showcod2 = [select Id,  Name,Consumable_Product__c,
                                Bar_Code__c,Consumable_Product__r.Name__c,
                                Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
      List<Consumable_order_details2__c> showcod2 = [
        SELECT
          Id,
          Name,
          Consumable_Product__c,
          Bar_Code__c,
          Consumable_Product__r.Name__c,
          Asset_Model_No__c,
          Isoverdue__c,
          Box_Piece__c,
                                Bar_Code_search__c
                            FROM Consumable_order_details2__c
                            WHERE Id in :pandiandetailsMap.keySet()
                            order by Name];
        WHERE Id IN :pandiandetailsMap.keySet()
        ORDER BY Name
      ];
            initStandardController();
            showcod2nid = cod2s();
        }
        for (Consumable_order_details2__c cod2 : showcod2nid) {
            codPageRecords.add(new ConsumableorderdetailsInfo(cod2,pandiandetailsMap.get(cod2.Id)));
      codPageRecords.add(
        new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))
      );
        }
        if(codPageRecords.size() > 0) done = true;
    if (codPageRecords.size() > 0)
      done = true;
        iSinventory = true;
        consumableorderdetailsRecordserrordummy.clear();
        pandiandetailsList = [select Id, Bar_Code__c,Consumable_Product__r.Name__c,
                                Box_Piece__c,Lose_reason__c
    pandiandetailsList = [
      SELECT
        Id,
        Bar_Code__c,
        Consumable_Product__r.Name__c,
        Box_Piece__c,
        Lose_reason__c
                            FROM Consumable_order_details2__c
                            WHERE Id in :pandiandetailsMap.keySet()
                            order by Name];
      WHERE Id IN :pandiandetailsMap.keySet()
      ORDER BY Name
    ];
        for(Consumable_order_details2__c codDet : pandiandetailsList){
            codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id);
        }
@@ -997,11 +1450,15 @@
            //分页
            PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
            totalCount = codPageRecords.size();
            paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
    paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount)
      ? pageToken + pageSize
      : null;
            paginatedAccounts.recordStart = pageToken + 1;
            paginatedAccounts.pageNumber = pageToken / pageSize + 1;
            Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
            paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
    paginatedAccounts.recordEnd = totalCount >= recordEnd
      ? recordEnd
      : totalCount;
            paginatedAccounts.totalRecords = totalCount;
            Integer startIdx;
@@ -1022,16 +1479,27 @@
            //end
            System.debug('=====>codPageRecords2'+codPageRecords);
            System.debug('=====>consumableorderdetailsRecords'+consumableorderdetailsRecords);
    System.debug(
      '=====>consumableorderdetailsRecords' + consumableorderdetailsRecords
    );
            data.put('codPageRecords',JSON.serialize(codPageRecords));
            data.put('consumableorderdetailsRecords',JSON.serialize(consumableorderdetailsRecords));
    data.put(
      'consumableorderdetailsRecords',
      JSON.serialize(consumableorderdetailsRecords)
    );
            System.debug('iSinventory===>'+iSinventory);
            data.put('iSinventory',JSON.serialize(iSinventory));
            System.debug('pandiandetailsMap===>'+pandiandetailsMap);
            data.put('pandiandetailsMap',pandiandetailsMap);
            data.put('reSet',reSet);
            data.put('consumableorderdetailsRecordsview',JSON.serialize(consumableorderdetailsRecordsview));
            System.debug('=====>consumableorderdetailsRecordsview'+consumableorderdetailsRecordsview);
    data.put(
      'consumableorderdetailsRecordsview',
      JSON.serialize(consumableorderdetailsRecordsview)
    );
    System.debug(
      '=====>consumableorderdetailsRecordsview' +
      consumableorderdetailsRecordsview
    );
            res.code = 200;
            res.status = 'Sucess';
            return res;
@@ -1039,8 +1507,18 @@
    
    // 保存按钮
    @AuraEnabled
    public static ResponseBodyLWC save(Boolean iSinventory,String consumableorderdetailsRecordsLWC,String accountid,String agencyProType,Map<Id,String> pandiandetailsMap,List<Consumable_order_details2__c> reSet) {
        List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class);
  public static ResponseBodyLWC save(
    Boolean iSinventory,
    String consumableorderdetailsRecordsLWC,
    String accountid,
    String agencyProType,
    Map<Id, String> pandiandetailsMap,
    List<Consumable_order_details2__c> reSet
  ) {
    List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize(
      consumableorderdetailsRecordsLWC,
      List<ConsumableorderdetailsInfo>.class
    );
        agencyProType = agencyProType;
        accountid =accountid;
        pandiandetailsMap = pandiandetailsMap;
@@ -1073,14 +1551,30 @@
            if(header.check==true){
                //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + '  '+header.prod.Name__c));
                //return null;
                if((header.DiffReason == ''||header.DiffReason ==null)&&header.Diff>0){
                    return new ResponseBodyLWC('Error',500, header.prod.Name__c + '请输入差异原因', '');
        if (
          (header.DiffReason == '' || header.DiffReason == null) &&
          header.Diff > 0
        ) {
          return new ResponseBodyLWC(
            'Error',
            500,
            header.prod.Name__c + '请输入差异原因',
            ''
          );
                    // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + '请输入差异原因'));
                    // return null;
                }else if ((header.DiffReason != ''&&header.DiffReason !=null)&&header.Diff==0){
        } else if (
          (header.DiffReason != '' && header.DiffReason != null) &&
          header.Diff == 0
        ) {
                    // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '无丢失产品,不需要填写差异原因'));
                    // return null;
                    return new ResponseBodyLWC('Error',500, header.prod.Name__c + '无丢失产品,不需要填写差异原因', '');
          return new ResponseBodyLWC(
            'Error',
            500,
            header.prod.Name__c + '无丢失产品,不需要填写差异原因',
            ''
          );
                }
            }
        }
@@ -1097,10 +1591,14 @@
        try{
            insert  Po;
            eSetId = Po.id;
            List<Consumable_order__c> Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id =:Po.id];
            List<Consumable_orderdetails__c> InsList = New List<Consumable_orderdetails__c>();
            List<Consumable_order_details2__c> InsListUp = New List<Consumable_order_details2__c>();
            List<Consumable_order_details2__c> updListAdjust = New List<Consumable_order_details2__c>();
      List<Consumable_order__c> Consumable_order = [
        SELECT Name
        FROM Consumable_order__c
        WHERE id = :Po.id
      ];
      List<Consumable_orderdetails__c> InsList = new List<Consumable_orderdetails__c>();
      List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>();
      List<Consumable_order_details2__c> updListAdjust = new List<Consumable_order_details2__c>();
            Map<String,String> ErrorName = new Map<String,String>();
            Map<String,Boolean> CheckTF = new Map<String,Boolean>();
            for(ConsumableorderdetailsInfo header : consumableorderdetailsRecords){
@@ -1129,13 +1627,21 @@
            if(InsList.size()>0){
                insert InsList;
            }
            List<Consumable_order_details2__c> showcod2 = [select Id,  Name,Consumable_Product__c,
                                Bar_Code__c,Consumable_Product__r.Name__c,
                                Asset_Model_No__c,Isoverdue__c,Box_Piece__c,
      List<Consumable_order_details2__c> showcod2 = [
        SELECT
          Id,
          Name,
          Consumable_Product__c,
          Bar_Code__c,
          Consumable_Product__r.Name__c,
          Asset_Model_No__c,
          Isoverdue__c,
          Box_Piece__c,
                                Bar_Code_search__c
                            FROM Consumable_order_details2__c
                            WHERE Id in :pandiandetailsMap.keySet()
                            order by Name];
        WHERE Id IN :pandiandetailsMap.keySet()
        ORDER BY Name
      ];
            for(Consumable_order_details2__c cod : showcod2){
                Consumable_order_details2__c InsDetail = new Consumable_order_details2__c();
                InsDetail.Id =cod.Id;
@@ -1143,7 +1649,10 @@
                InsDetail.Inventory_date__c = Date.today();
                // 20210224 gzw CHAN-BXF3PG start
                // if(pandiandetailsMap.get(cod.Id) == '丢失' ){
                if(pandiandetailsMap.get(cod.Id) == '丢失' && CheckTF.containsKey(cod.Consumable_product__c)){
        if (
          pandiandetailsMap.get(cod.Id) == '丢失' &&
          CheckTF.containsKey(cod.Consumable_product__c)
        ) {
                // 20210224 gzw CHAN-BXF3PG end
                    InsDetail.Lose_reason__c = ErrorName.get(cod.Consumable_product__c);
                    InsDetail.Lose_Flag__c = true;
@@ -1164,11 +1673,15 @@
            if(InsListUp.size()>0){
                ControllerUtil.updateOrderDetailsSatus(InsListUp);// Commented By DTT - Li Jun for testing 20230407
            }
        }catch (Exception e) {
            Database.rollback(sp);
            // ApexPages.addMessages(ex);
            return new ResponseBodyLWC('Error',500, e.getMessage()+e.getLineNumber(), '');
      return new ResponseBodyLWC(
        'Error',
        500,
        e.getMessage() + e.getLineNumber(),
        ''
      );
            // return null;
        }
        // FIXME impliment BarCodeListAdjust
@@ -1185,7 +1698,9 @@
    //盘点一览
    public PageReference ProS() {
        // 返回盘点一览
        PageReference ref = new Pagereference('/apex/InventoryList?eSetId=' + eSetId);
    PageReference ref = new Pagereference(
      '/apex/InventoryList?eSetId=' + eSetId
    );
        ref.setRedirect(true);
        return ref; 
    }
@@ -1209,6 +1724,7 @@
    }
    // Data Bean
  @TestVisible
    class ConsumableorderdetailsInfo implements Comparable {
        @AuraEnabled
        public Boolean check { get; set; }
@@ -1240,8 +1756,10 @@
        public Decimal overlimitCount { get; set; }
        @AuraEnabled
        public String boxPiece { get; set; }
        public ConsumableorderdetailsInfo(Consumable_order_details2__c e,string str) {
    public ConsumableorderdetailsInfo(
      Consumable_order_details2__c e,
      string str
    ) {
            orderdetails2 = e;
            Prod = e.Consumable_Product__r;
            //e.Lose_reason__c = str;
force-app/main/default/classes/LexInventoryControllerTest.cls
New file
@@ -0,0 +1,1179 @@
@isTest
public class LexInventoryControllerTest {
  static testMethod void InventoryControllerTest_PartBar() {
    user myUser_test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeOrderDetail2Trigger = true;
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '上海'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod09.Id
      );
      insert proF;
      //预制头明细
      Consumable_order__c CreateId = new Consumable_order__c();
      CreateId.Name = 'testMing';
      CreateId.Order_status__c = '草案中';
      CreateId.RecordTypeid = System.Label.RT_ConOrder_Order;
      CreateId.Dealer_Info__c = myAccount1.id;
      CreateId.Inventory_date__c = Date.today();
      CreateId.Order_type__c = '盘点';
      CreateId.Order_ProType__c = 'ET';
      insert CreateId;
      List<Consumable_order_details2__c> conList = new List<Consumable_order_details2__c>();
      //制作Consumable_order_details__c-------ProductCount
      Consumable_order_details2__c dataForProductCount9 = new Consumable_order_details2__c();
      dataForProductCount9.Bar_Code__c = '1234567890';
      dataForProductCount9.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount9.Arrive_date__c = Date.today();
      dataForProductCount9.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount9.Consumable_Product__c = proG.id;
      dataForProductCount9.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount9.Box_Piece__c = '盒';
      dataForProductCount9.Consumable_order_minor__c = CreateId.id;
      dataForProductCount9.Send_Date__c = null;
      dataForProductCount9.Used_date__c = null;
      dataForProductCount9.Lose_Flag__c = false;
      conList.add(dataForProductCount9);
      Consumable_order_details2__c dataForProductCount7 = new Consumable_order_details2__c();
      dataForProductCount7.Bar_Code__c = '1234567892';
      dataForProductCount7.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount7.Arrive_date__c = Date.today();
      dataForProductCount7.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount7.Consumable_Product__c = proH.id;
      dataForProductCount7.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount7.Box_Piece__c = '盒';
      dataForProductCount7.Consumable_order_minor__c = CreateId.id;
      dataForProductCount7.Send_Date__c = null;
      dataForProductCount7.Used_date__c = null;
      dataForProductCount7.Lose_Flag__c = false;
      conList.add(dataForProductCount7);
      Consumable_order_details2__c dataForProductCount = new Consumable_order_details2__c();
      dataForProductCount.Bar_Code__c = '1234567882';
      dataForProductCount.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount.Arrive_date__c = Date.today();
      dataForProductCount.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount.Consumable_Product__c = proG.id;
      dataForProductCount.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount.Box_Piece__c = '盒';
      dataForProductCount.Consumable_order_minor__c = CreateId.id;
      dataForProductCount.Send_Date__c = null;
      dataForProductCount.Used_date__c = null;
      dataForProductCount.Lose_Flag__c = true;
      conList.add(dataForProductCount);
      Consumable_order_details2__c dataForProductCount4 = new Consumable_order_details2__c();
      dataForProductCount4.Bar_Code__c = '1234567884';
      dataForProductCount4.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount4.Arrive_date__c = Date.today();
      dataForProductCount4.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount4.Consumable_Product__c = proF.id;
      dataForProductCount4.Asset_Model_No__c = proF.Asset_Model_No__c;
      dataForProductCount4.Box_Piece__c = '个';
      dataForProductCount4.Consumable_order_minor__c = CreateId.id;
      //dataForProductCount4.Lose_Flag__c = true;
      dataForProductCount4.RemoveBox_No__c = 1;
      conList.add(dataForProductCount4);
      Consumable_order_details2__c dataForProductCount5 = new Consumable_order_details2__c();
      dataForProductCount5.Bar_Code__c = '1234567885';
      dataForProductCount5.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount5.Arrive_date__c = Date.today();
      dataForProductCount5.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount5.Consumable_Product__c = proH.id;
      dataForProductCount5.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount5.Box_Piece__c = '个';
      dataForProductCount5.Consumable_order_minor__c = CreateId.id;
      dataForProductCount5.Lose_Flag__c = true;
      dataForProductCount5.RemoveBox_No__c = 1;
      conList.add(dataForProductCount5);
      insert conList;
      List<Consumable_order_details2__c> productCount_Res = [
        SELECT Id, Name
        FROM Consumable_order_details2__c
        WHERE
          Dealer_Arrive__c = TRUE
          AND Dealer_Shipment__c = FALSE
          AND Dealer_Saled__c = FALSE
          AND Lose_Flag__c = FALSE
          AND Bar_Code__c != NULL
          AND Dealer_Info_text__c = :myAccount1.Name
      ];
      //查询库存 追加返品库存
      List<Consumable_order_details2__c> conList1 = new List<Consumable_order_details2__c>();
      Consumable_order_details2__c con = new Consumable_order_details2__c();
      con.Arrive_date__c = Date.today();
      con.Send_Date__c = null;
      con.Used_date__c = null;
      con.Return_date__c = null;
      con.Lose_Flag__c = false;
      con.Cancellation_Flag__c = false;
      con.Consumable_Product__c = proG.Id;
      con.Asset_Model_No__c = 'Mj-1001';
      con.Sterilization_limit__c = Date.today().addDays(2);
      con.Box_Piece__c = '盒';
      con.Consumable_order_minor__c = CreateId.id;
      con.Bar_Code__c = '1234567885';
      conList1.add(con);
      Consumable_order_details2__c con1 = new Consumable_order_details2__c();
      con1.Arrive_date__c = Date.today();
      con1.Send_Date__c = null;
      con1.Used_date__c = null;
      con1.Return_date__c = null;
      con1.Lose_Flag__c = false;
      con1.Cancellation_Flag__c = false;
      con1.Consumable_Product__c = proG.Id;
      con1.Asset_Model_No__c = 'Mj-1001';
      con1.Sterilization_limit__c = Date.today().addDays(2);
      con1.Box_Piece__c = '个';
      con1.Consumable_order_minor__c = CreateId.id;
      con1.Bar_Code__c = '12345678856';
      conList1.add(con1);
      insert conList1;
      LexInventoryController OwnTest = new LexInventoryController();
      LexInventoryController.init();
      LexInventoryController controller = new LexInventoryController();
      List<LexInventoryController.ConsumableorderdetailsInfo> testList = LexInventoryController.consumableorderdetailsRecords;
      List<LexInventoryController.ConsumableorderdetailsInfo> testList1 = new List<LexInventoryController.ConsumableorderdetailsInfo>();
      System.debug('testCount:' + testList.size());
      for (LexInventoryController.ConsumableorderdetailsInfo ass : testList) {
        System.debug(ass.check);
        ass.check = true;
        testList1.add(ass);
      }
      System.debug('testList1:' + testList1);
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '12345678856\n1234567895\n1234567890\n12345678511\n1234567856\n1234567855\n1234567886\n12345678551\n1234567890\n1234567883\n1234567882\n1234567881\n1234567884\nn123456788412\n1234567885\n123456788512\n1234567891\n1234567892\n1234567893\n1234567894',
        JSON.serialize(testList1),
        1,
        0,
        'Test',
        'ASC'
      );
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '1234567882',
        JSON.serialize(testList1),
        1,
        0,
        'Test',
        'ASC'
      );
      LexInventoryController.barcode = '';
    }
  }
  static testMethod void InventoryControllerTest_PartPan() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'Too001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'Too002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'Too003',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod09.Id
      );
      insert proF;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      InventoryController OwnTest = new InventoryController();
      OwnTest.size = 2;
      OwnTest.init();
      OwnTest.setCon.next();
      OwnTest.refreshPageSize();
      OwnTest.ConsumableorderdetailsRecordsview.sort();
      system.assertEquals(0, OwnTest.consumableorderdetailsCount);
      OwnTest.save();
    }
  }
  static testMethod void InventoryControllerTest_ge() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod09.Id
      );
      insert proF;
      //预制头明细
      Consumable_order__c CreateId = new Consumable_order__c();
      CreateId.Name = 'testMing';
      CreateId.Order_status__c = '草案中';
      CreateId.RecordTypeid = System.Label.RT_ConOrder_Order;
      CreateId.Dealer_Info__c = myAccount1.id;
      CreateId.Inventory_date__c = Date.today();
      CreateId.Order_type__c = '盘点';
      CreateId.Order_ProType__c = 'ET';
      insert CreateId;
      List<Consumable_order_details2__c> orderList = new List<Consumable_order_details2__c>();
      //制作Consumable_order_details__c-------ProductCount
      Consumable_order_details2__c dataForProductCount9 = new Consumable_order_details2__c();
      dataForProductCount9.Bar_Code__c = '1234567890';
      dataForProductCount9.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount9.Arrive_date__c = Date.today();
      dataForProductCount9.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount9.Consumable_Product__c = proG.id;
      dataForProductCount9.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount9.Box_Piece__c = '个';
      dataForProductCount9.RemoveBox_No__c = 1;
      orderList.add(dataForProductCount9);
      Consumable_order_details2__c dataForProductCount8 = new Consumable_order_details2__c();
      dataForProductCount8.Bar_Code__c = '1234567891';
      dataForProductCount8.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount8.Arrive_date__c = Date.today();
      dataForProductCount8.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount8.Consumable_Product__c = proG.id;
      dataForProductCount8.Asset_Model_No__c = proG.Asset_Model_No__c;
      orderList.add(dataForProductCount8);
      Consumable_order_details2__c dataForProductCount7 = new Consumable_order_details2__c();
      dataForProductCount7.Bar_Code__c = '1234567892';
      dataForProductCount7.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount7.Arrive_date__c = Date.today();
      dataForProductCount7.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount7.Consumable_Product__c = proH.id;
      dataForProductCount7.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount7.Box_Piece__c = '个';
      dataForProductCount7.Consumable_order_minor__c = CreateId.id;
      dataForProductCount7.Send_Date__c = null;
      dataForProductCount7.Used_date__c = null;
      dataForProductCount7.Lose_Flag__c = false;
      dataForProductCount7.RemoveBox_No__c = 1;
      orderList.add(dataForProductCount7);
      Consumable_order_details2__c dataForProduct = new Consumable_order_details2__c();
      dataForProduct.Bar_Code__c = '1234567894';
      dataForProduct.Sterilization_limit__c = Date.today().addDays(2);
      dataForProduct.Arrive_date__c = Date.today();
      dataForProduct.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProduct.Consumable_Product__c = proF.id;
      dataForProduct.Asset_Model_No__c = proF.Asset_Model_No__c;
      dataForProduct.Box_Piece__c = '个';
      dataForProduct.Consumable_order_minor__c = CreateId.id;
      dataForProduct.Send_Date__c = null;
      dataForProduct.Used_date__c = null;
      dataForProduct.Lose_Flag__c = false;
      dataForProduct.RemoveBox_No__c = 1;
      orderList.add(dataForProduct);
      Consumable_order_details2__c dataForProductCount3 = new Consumable_order_details2__c();
      dataForProductCount3.Bar_Code__c = '1234567883';
      dataForProductCount3.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount3.Arrive_date__c = Date.today();
      dataForProductCount3.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount3.Consumable_Product__c = proG.id;
      dataForProductCount3.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount3.Consumable_order_minor__c = CreateId.id;
      dataForProductCount3.Lose_Flag__c = true;
      //dataForProductCount3.RemoveBox_No__c = 1;
      orderList.add(dataForProductCount3);
      PageReference page = new Pagereference('/Inventory');
      page.setRedirect(true);
      System.Test.setCurrentPage(page);
      System.Test.startTest();
      LexInventoryController controller = new LexInventoryController();
      LexInventoryController.init();
      System.debug(
        '===>值1' + LexInventoryController.consumableorderdetailsRecords
      );
      System.debug(
        '===>值2' +
        JSON.serialize(LexInventoryController.consumableorderdetailsRecords)
      );
      System.debug(
        '===>2222222' +
        JSON.serialize(LexInventoryController.consumableorderdetailsRecords)
      );
      List<LexInventoryController.ConsumableorderdetailsInfo> testList = LexInventoryController.consumableorderdetailsRecords;
      List<LexInventoryController.ConsumableorderdetailsInfo> testList1 = new List<LexInventoryController.ConsumableorderdetailsInfo>();
      System.debug('testCount:' + testList.size());
      for (LexInventoryController.ConsumableorderdetailsInfo ass : testList) {
        System.debug(ass.check);
        ass.check = true;
        testList1.add(ass);
      }
      System.debug('testList1:' + testList1);
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '12345678856\n1234567895\n1234567890\n12345678511\n1234567856\n1234567855\n1234567886\n12345678551\n1234567890\n1234567883\n1234567882\n1234567881\n1234567884\nn123456788412\n1234567885\n123456788512\n1234567891\n1234567892\n1234567893\n1234567894',
        JSON.serialize(testList1),
        1,
        0,
        'Test',
        'ASC'
      );
      System.Test.stopTest();
    }
  }
  static testMethod void InventoryControllerTest_xunhui() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeOrderDetail2Trigger = true;
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod09.Id
      );
      insert proF;
      //预制头明细
      Consumable_order__c CreateId = new Consumable_order__c();
      CreateId.Name = 'testMing';
      CreateId.Order_status__c = '草案中';
      CreateId.RecordTypeid = System.Label.RT_ConOrder_Order;
      CreateId.Dealer_Info__c = myAccount1.id;
      CreateId.Inventory_date__c = Date.today();
      CreateId.Order_type__c = '盘点';
      CreateId.Order_ProType__c = 'ET';
      insert CreateId;
      List<Consumable_order__c> orderList = new List<Consumable_order__c>();
      //到货
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '到货';
      Order1.Dealer_Info__c = myAccount1.Id;
      Order1.RecordTypeid = '01210000000c9dqAAA';
      Order1.Order_ProType__c = 'ENG';
      orderList.add(Order1);
      //发货
      Consumable_order__c Order2 = new Consumable_order__c();
      Order2.Name = 'OCM_01';
      Order2.Order_status__c = '批准';
      Order2.Order_type__c = '订单 ';
      Order2.Dealer_Info__c = myAccount1.Id;
      Order2.RecordTypeid = '01210000000c9drAAA';
      Order2.Order_ProType__c = 'ENG';
      orderList.add(Order2);
      insert orderList;
      //制作Consumable_order_details__c-------ProductCount
      Consumable_order_details2__c dataForProductCount9 = new Consumable_order_details2__c();
      dataForProductCount9.Bar_Code__c = '1234567890';
      dataForProductCount9.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount9.Arrive_date__c = Date.today();
      dataForProductCount9.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount9.Consumable_Product__c = proG.id;
      dataForProductCount9.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount9.Box_Piece__c = '盒';
      dataForProductCount9.Consumable_order_minor__c = CreateId.id;
      dataForProductCount9.Send_Date__c = null;
      dataForProductCount9.Used_date__c = null;
      dataForProductCount9.Lose_Flag__c = false;
      dataForProductCount9.RemoveBox_No__c = 1;
      insert dataForProductCount9;
      Consumable_order_details2__c dataForProductCount8 = new Consumable_order_details2__c();
      dataForProductCount8.Bar_Code__c = '1234567891';
      dataForProductCount8.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount8.Arrive_date__c = Date.today();
      dataForProductCount8.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount8.Consumable_Product__c = proG.id;
      dataForProductCount8.Asset_Model_No__c = proG.Asset_Model_No__c;
      dataForProductCount8.Box_Piece__c = '盒';
      dataForProductCount8.Consumable_order_minor__c = CreateId.id;
      dataForProductCount8.Send_Date__c = null;
      dataForProductCount8.Used_date__c = null;
      dataForProductCount8.Lose_Flag__c = false;
      dataForProductCount8.RemoveBox_No__c = 1;
      insert dataForProductCount8;
      Consumable_order_details2__c dataForProductCount7 = new Consumable_order_details2__c();
      dataForProductCount7.Bar_Code__c = '1234567892';
      dataForProductCount7.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount7.Arrive_date__c = Date.today();
      dataForProductCount7.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount7.Consumable_Product__c = proH.id;
      dataForProductCount7.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount7.Box_Piece__c = '个';
      dataForProductCount7.Consumable_order_minor__c = CreateId.id;
      dataForProductCount7.Send_Date__c = null;
      dataForProductCount7.Used_date__c = null;
      dataForProductCount7.Lose_Flag__c = false;
      dataForProductCount7.RemoveBox_No__c = 1;
      insert dataForProductCount7;
      Consumable_order_details2__c dataForProductCount6 = new Consumable_order_details2__c();
      dataForProductCount6.Bar_Code__c = '1234567893';
      dataForProductCount6.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount6.Arrive_date__c = Date.today();
      dataForProductCount6.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount6.Consumable_Product__c = proH.id;
      dataForProductCount6.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount6.Box_Piece__c = '个';
      dataForProductCount6.Consumable_order_minor__c = CreateId.id;
      dataForProductCount6.Send_Date__c = null;
      dataForProductCount6.Used_date__c = null;
      dataForProductCount6.Lose_Flag__c = false;
      dataForProductCount6.RemoveBox_No__c = 1;
      insert dataForProductCount6;
      Consumable_order_details2__c dataForProductCount5 = new Consumable_order_details2__c();
      dataForProductCount5.Bar_Code__c = '1234567894';
      dataForProductCount5.Sterilization_limit__c = Date.today().addDays(2);
      dataForProductCount5.Arrive_date__c = Date.today();
      dataForProductCount5.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      dataForProductCount5.Consumable_Product__c = proH.id;
      dataForProductCount5.Asset_Model_No__c = proH.Asset_Model_No__c;
      dataForProductCount5.Box_Piece__c = '个';
      dataForProductCount5.Consumable_order_minor__c = CreateId.id;
      dataForProductCount5.Send_Date__c = null;
      dataForProductCount5.Used_date__c = null;
      dataForProductCount5.Lose_Flag__c = false;
      dataForProductCount5.RemoveBox_No__c = 1;
      insert dataForProductCount5;
      List<Consumable_order_details2__c> conlist = new List<Consumable_order_details2__c>();
      //Barcode检索 所有在库
      Consumable_order_details2__c con1 = new Consumable_order_details2__c();
      con1.Lose_Flag__c = false;
      con1.Arrive_date__c = Date.today();
      con1.Send_Date__c = null;
      con1.Return_date__c = null;
      con1.Lose_Flag__c = false;
      con1.Cancellation_Date__c = null;
      con1.Sterilization_limit__c = Date.today().addDays(2);
      con1.Bar_Code__c = '123';
      con1.Box_Piece__c = '盒';
      con1.Bar_Code__c = '1234567894';
      con1.Sterilization_limit__c = Date.today().addDays(2);
      con1.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      con1.Consumable_Product__c = proH.id;
      con1.Consumable_order_minor__c = CreateId.id;
      conlist.add(con1);
      //查询库存 追加返品库存
      Consumable_order_details2__c con3 = new Consumable_order_details2__c();
      con3.Consumable_Product__c = proH.id;
      con3.Bar_Code__c = '1001';
      con3.Consumable_Arrived_order__c = Order1.id;
      con3.Consumable_order_minor__c = Order2.id;
      con3.Arrive_date__c = Date.today();
      con3.Send_Date__c = null;
      con3.Return_date__c = null;
      con3.Lose_Flag__c = false;
      con3.Cancellation_Flag__c = false;
      con3.Consumable_order_minor__c = CreateId.id;
      con3.Sterilization_limit__c = Date.today().addDays(2);
      con3.Box_Piece__c = '个';
      con3.RecordTypeid = '01210000000kUDKAA2';
      conlist.add(con3);
      //productAdjust
      Consumable_order_details2__c con6 = new Consumable_order_details2__c();
      con6.Consumable_Product__c = proH.id;
      con6.Lose_reason__c = '过期库存销存';
      con6.Box_Piece__c = '盒';
      con6.Sterilization_limit__c = Date.today().addDays(-2);
      con6.Bar_Code__c = '10011';
      con6.Consumable_Arrived_order__c = Order1.id;
      con6.Lose_Flag__c = true;
      con6.RecordTypeid = '01210000000kUDKAA2';
      conlist.add(con6);
      System.debug('conlist===>' + conlist);
      //reset592
      Consumable_order_details2__c con4 = new Consumable_order_details2__c();
      con4.Arrive_date__c = Date.today();
      con4.Send_Date__c = null;
      con4.Return_date__c = null;
      con4.Lose_Flag__c = false;
      con4.Cancellation_Date__c = null;
      con4.Sterilization_limit__c = Date.today().addDays(2);
      con4.Bar_Code__c = '123456';
      con4.Box_Piece__c = '盒';
      // con2.Bar_Code__c               = '1234567894';
      con4.Sterilization_limit__c = Date.today().addDays(2);
      con4.RecordTypeid = System.Label.RT_ConOrderDetail2_Delivery;
      con4.Consumable_Product__c = proH.id;
      // con2.Asset_Model_No__c         = proH.Asset_Model_No__c;
      con4.Consumable_order_minor__c = CreateId.id;
      conlist.add(con4);
      //查询库存 追加返品库存
      Consumable_order_details2__c con5 = new Consumable_order_details2__c();
      con5.Arrive_date__c = Date.today();
      con5.Send_Date__c = null;
      con5.Return_date__c = null;
      con5.Lose_Flag__c = false;
      con5.Cancellation_Flag__c = false;
      con5.Consumable_Product__c = proH.id;
      con5.Consumable_order_minor__c = Order2.id;
      // con5.Sterilization_limit__c    = Date.today().addDays(2);
      con5.Box_Piece__c = '盒';
      con5.Bar_Code__c = '1001';
      conlist.add(con5);
      insert conlist;
      System.Test.startTest();
      LexInventoryController inver = new LexInventoryController();
      LexInventoryController.init();
      List<LexInventoryController.ConsumableorderdetailsInfo> testList = LexInventoryController.consumableorderdetailsRecords;
      List<LexInventoryController.ConsumableorderdetailsInfo> testList1 = new List<LexInventoryController.ConsumableorderdetailsInfo>();
      System.debug('testCount:' + testList.size());
      for (LexInventoryController.ConsumableorderdetailsInfo ass : testList) {
        System.debug(ass.check);
        ass.check = true;
        testList1.add(ass);
      }
      System.debug('testList1:' + testList1);
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '',
        JSON.serialize(testList1),
        20,
        9,
        'Test',
        'ASC'
      );
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '01210000000kUDKAA2\n10011',
        JSON.serialize(testList1),
        20,
        9,
        'Test',
        'ASC'
      );
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '12345678856\n1234567895\n1234567890\n12345678511\n1234567856\n1234567855\n1234567886\n12345678551\n1234567890\n1234567883\n1234567882\n1234567881\n1234567884\nn123456788412\n1234567885\n123456788512\n1234567891\n1234567892\n1234567893\n1234567894\n1001',
        JSON.serialize(testList1),
        1,
        0,
        'Test',
        'ASC'
      );
      LexInventoryController.save(
        true,
        JSON.serialize(testList1),
        myAccount1.Id,
        'ET',
        LexInventoryController.pandiandetailsMap,
        LexInventoryController.reSet
      );
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '',
        '[{"sortBy": null,"refind": 0,"ProdId": "a0l0l000004EisKAAS","Prod": {"attributes": {"type": "Product2__c","url": "/services/data/v58.0/sobjects/Product2__c/a0l0l000004EisKAAS"},"Id": "a0l0l000004EisKAAS","Name": "MH-155:白平衡帽","Name__c": "Test07","SFDA_Status__c": "停止","Packing_list_manual__c": 1,"Asset_Model_No__c": "Test07"},"Pandian": 0,"overlimitCount": 0,"orderdetails2": null,"orderdetails1": null,"limitCount": 2,"DiffReason": null,"Diff": 0,"countid": 2,"check": true,"canSelect": true,"boxPiece": "盒"}]',
        20,
        9,
        'Test',
        'ASC'
      );
      System.Test.stopTest();
    }
  }
  static testMethod void all() {
    user MyUser_Test;
    Account myAccount1;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      Profile prof1 = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET Email)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      StaticParameter.EscapeOrderDetail2Trigger = true;
      StaticParameter.EscapeConsumableOrderDetail2Trigger = true;
      RecordType rectCoO = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '病院'
      ];
      Account olympus = new Account(
        RecordTypeId = rectCoO.Id,
        AgentCode_Ext__c = '9999900',
        Name = 'olympus'
      );
      insert olympus;
      myAccount1 = new Account(
        name = 'Testaccount001',
        Dealer_discount__c = 10,
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '8888888'
      );
      insert myAccount1;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      MyUser_Test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'TestUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof1.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '上海'
      );
      insert MyUser_Test;
    }
    System.runAs(MyUser_Test) {
      Product2 prod07 = new Product2(
        Name = 'Test07',
        ProductCode = 'Test07',
        Asset_Model_No__c = 'Test07',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod08 = new Product2(
        Name = 'Test08',
        ProductCode = 'Test08',
        Asset_Model_No__c = 'Test08',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      Product2 prod09 = new Product2(
        Name = 'Test09',
        ProductCode = 'Test09',
        Asset_Model_No__c = 'Test09',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        Packing_list_manual__c = 1,
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod07, prod08, prod09 };
      //制作产品
      Product2__c proG = new Product2__c(
        Name = 'MH-155:白平衡帽',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod07.Id
      );
      insert proG;
      Product2__c proH = new Product2__c(
        Name = 'MB-677:BNC电缆',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod08.Id
      );
      insert proH;
      Product2__c proF = new Product2__c(
        Name = 'TooMAJ-643R:水囊鞘管003',
        OT_CODE_Text__c = 'Test003',
        Product2__c = prod09.Id
      );
      insert proF;
      List<Consumable_order__c> orderList = new List<Consumable_order__c>();
      //到货
      Consumable_order__c Order1 = new Consumable_order__c();
      Order1.Name = 'OCM_01';
      Order1.Order_status__c = '批准';
      Order1.Order_type__c = '到货';
      Order1.Dealer_Info__c = myAccount1.Id;
      Order1.RecordTypeid = '01210000000c9dqAAA';
      Order1.Order_ProType__c = 'ET';
      orderList.add(Order1);
      //发货
      Consumable_order__c Order2 = new Consumable_order__c();
      Order2.Name = 'OCM_01';
      Order2.Order_status__c = '批准';
      Order2.Order_type__c = '订单 ';
      Order2.Dealer_Info__c = myAccount1.Id;
      Order2.RecordTypeid = '01210000000c9drAAA';
      Order2.Order_ProType__c = 'ET';
      orderList.add(Order2);
      insert orderList;
      //查询库存 追加返品库存
      List<Consumable_order_details2__c> conlist = new List<Consumable_order_details2__c>();
      Consumable_order_details2__c con3 = new Consumable_order_details2__c();
      con3.Arrive_date__c = Date.today();
      con3.Send_Date__c = null;
      con3.Used_date__c = null;
      con3.Return_date__c = null;
      con3.Lose_Flag__c = false;
      con3.Cancellation_Flag__c = false;
      con3.Consumable_order_minor__c = Order1.id;
      con3.Consumable_Arrived_order__c = Order1.id;
      con3.Bar_Code__c = '1001';
      con3.Consumable_Product__c = proH.id;
      conlist.add(con3);
      insert conlist;
      //productAdjust
      Consumable_order_details2__c con6 = new Consumable_order_details2__c();
      // con6.Consumable_Product__c = proH.id;
      con6.Lose_reason__c = '过期库存销存';
      // con6.Box_Piece__c = '盒';
      con6.Sterilization_limit__c = Date.today().addDays(-2);
      con6.Bar_Code__c = '10011';
      // con6.Consumable_Arrived_order__c = Order1.id;
      con6.Lose_Flag__c = true;
      // con6.RecordTypeid = '01210000000kUDKAA2';
      conlist.add(con6);
      System.debug('conlist===>' + conlist);
      LexInventoryController.init();
      List<LexInventoryController.ConsumableorderdetailsInfo> testList = LexInventoryController.consumableorderdetailsRecords;
      List<LexInventoryController.ConsumableorderdetailsInfo> testList1 = new List<LexInventoryController.ConsumableorderdetailsInfo>();
      System.debug('testCount:' + testList.size());
      for (LexInventoryController.ConsumableorderdetailsInfo ass : testList) {
        System.debug(ass.check);
        ass.check = true;
        testList1.add(ass);
      }
      System.debug('testList1:' + testList1);
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '1001\n10011',
        JSON.serialize(testList1),
        20,
        9,
        'Test',
        'ASC'
      );
      LexInventoryController.searchConsumableorderdetails(
        'ET',
        '上海',
        'Testaccount001',
        '',
        JSON.serialize(testList1),
        20,
        9,
        'Test',
        'ASC'
      );
    }
  }
}
Diff truncated after the above file
force-app/main/default/classes/LexInventoryControllerTest.cls-meta.xml force-app/main/default/classes/LexInventoryListController.cls force-app/main/default/classes/LexInventoryListControllerTest.cls force-app/main/default/classes/LexInventoryListControllerTest.cls-meta.xml force-app/main/default/classes/LexInventoryViewControllerTest.cls force-app/main/default/classes/LexInventoryViewControllerTest.cls-meta.xml force-app/main/default/classes/LexLicenceReminderControllerTest.cls force-app/main/default/classes/LexLicenceReminderControllerTest.cls-meta.xml force-app/main/default/classes/LexOutboundorderImportController.cls force-app/main/default/classes/LexOutboundorderImportControllerTest.cls force-app/main/default/classes/LexOutboundorderImportControllerTest.cls-meta.xml force-app/main/default/classes/LexOverdueStockController.cls force-app/main/default/classes/LexOverdueStockControllerTest.cls force-app/main/default/classes/LexOverdueStockControllerTest.cls-meta.xml force-app/main/default/classes/LexProductLimitEditControllerTest.cls force-app/main/default/classes/LexProductLimitEditControllerTest.cls-meta.xml force-app/main/default/classes/LexRemoveBoxControllerTest.cls force-app/main/default/classes/LexRemoveBoxControllerTest.cls-meta.xml force-app/main/default/classes/LexSaleAndDeliveryControllerTest.cls force-app/main/default/classes/LexSaleAndDeliveryControllerTest.cls-meta.xml force-app/main/default/classes/LexSaleOrderController.cls force-app/main/default/classes/LexSaleOrderControllerTest.cls force-app/main/default/classes/LexSaleOrderControllerTest.cls-meta.xml force-app/main/default/classes/LexSearchContractControllerTest.cls force-app/main/default/classes/LexSearchContractControllerTest.cls-meta.xml force-app/main/default/classes/LexSearchHospitalControllerTest.cls force-app/main/default/classes/LexSearchHospitalControllerTest.cls-meta.xml force-app/main/default/classes/LexSummonsCreatController.cls force-app/main/default/classes/LexSummonsCreatControllerTest.cls force-app/main/default/classes/LexSummonsCreatControllerTest.cls-meta.xml force-app/main/default/classes/LexTopPageControllerTest.cls force-app/main/default/classes/LexTopPageControllerTest.cls-meta.xml force-app/main/default/classes/LexUpAccountProLimit.cls force-app/main/default/classes/LexUpAccountProLimitControllerTest.cls force-app/main/default/classes/LexUpAccountProLimitControllerTest.cls-meta.xml force-app/main/default/classes/LexUtilityTest.cls force-app/main/default/classes/LexUtilityTest.cls-meta.xml force-app/main/default/classes/LookupSearchResultTest.cls force-app/main/default/classes/LookupSearchResultTest.cls-meta.xml force-app/main/default/classes/NewAndEditLeadController.cls force-app/main/default/classes/Product2Handler.cls force-app/main/default/classes/RentalApplyEquipmentSetDetailHandler.cls force-app/main/default/classes/ResponseBodyLWCTest.cls force-app/main/default/classes/ResponseBodyLWCTest.cls-meta.xml force-app/main/default/classes/lexSearchAgencyHospitalControllerTest.cls force-app/main/default/classes/lexSearchAgencyHospitalControllerTest.cls-meta.xml force-app/main/default/lwc/lexArriveGoods/lexArriveGoods.html force-app/main/default/lwc/lexArriveGoods/lexArriveGoods.js force-app/main/default/pages/OFSInsReportLayout.page force-app/main/default/pages/StraightBackAddress.page force-app/main/default/pages/StraightBackAddress.page-meta.xml force-app/main/default/permissionsets/Community_Consumable_LEX_PS.permissionset-meta.xml manifest/LEXC01packagelexcommunitynew.xml manifest/LEXC02packagelexcommunityupdate.xml manifest/package.xml