public with sharing class InventoryResultRecordCopyController { // 检索区域 public String fixtureModelNo {get; set;} // 备品配套明细型号 Fixture_Model_No__c public String assetStatus {get; set;} // 备品状态 Asset_Status__c public String assetCategory {get; set;} // 备品类别 耗材/备品 public String salesdepartment {get; set;} // 所在地区本部 Salesdepartment__c public String salesProvince {get; set;} // 所在地区省 SalesProvince__c public String whLocation {get; set;} // 货架号 WH_location__c public String internal_Asset_Flg {get; set;} // 固定资产 Internal_Asset_Flg__c public String inventory_Deviation {get; set;} // 盘点误差 Inventory_Deviation__c public Date consumable_Guaranteen_end {get; set;} // 消耗品有效期至 public String bpPankuiYing { get; set; } // 盘亏/盘盈 public String ifInternalAsset { get; set; } // 是否固定资产 public String keyword { get; set; } public Boolean hasConsumAsset {get;set;} //add by rentx 20210901 start public List allHCCodelist {get;set;} //add by rentx 20210901 end public String consumable_Guaranteen_endStr { get; set{ consumable_Guaranteen_endStr = value; if (String.isNotBlank(consumable_Guaranteen_endStr)) { consumable_Guaranteen_end = Date.valueOf(consumable_Guaranteen_endStr.replace('/', '-')); } else { consumable_Guaranteen_end = null; } } } // 消耗品有效期至 public static final String NONE = system.label.StartTrading_None; // 「なし」ラベル [Chinese:--无--] public static bp3_Setting__c conf = bp3_Setting__c.getOrgDefaults(); private String mainAstQR = ''; public boolean doneFlg {get; set;} public boolean canDoFlg {get; set;} public List assetStatusOptionList { get { // FIXME StartTrading_None を使う、--なし-- はNGでしょう List selectOptions = new List { new SelectOption(NONE, NONE) }; selectOptions.add(new SelectOption('未盘点', '未盘点')); selectOptions.add(new SelectOption('已盘点', '已盘点')); return selectOptions; } } public List assetCategoryOptionList { get { //默认不展示 --无-- updatebyrentx 20210824 List selectOptions = new List { /*new SelectOption(NONE, NONE)*/ }; selectOptions.add(new SelectOption('备品', '备品')); selectOptions.add(new SelectOption('耗材', '耗材')); return selectOptions; } } // 所在地区(本部)PlickList public List salesdepartmentOpts { get { if (salesdepartmentOpts == null) { salesdepartmentOpts = getPlickList('Asset', 'Salesdepartment__c'); } return salesdepartmentOpts; } set; } // 所在地区(省)PlickList public List salesProvinceOpts { get { if (salesProvinceOpts == null) { salesProvinceOpts = getPlickList('Asset', 'SalesProvince__c'); } return salesProvinceOpts; } set; } //public Asset assetQuery {get; set;} // 查询用 public List inventoryDetailList {get; set;} // 查看全部保有设备结果 public List consumInventoryDetailList {get; set;} // 查看全部保有设备结果 public String bieCunFangDi { get; set; } //别存放地, 肯定有值 不为null public String deptCheck_PIC { get; set; } //办事处的确认人 20210618 1650 you public String qrType {get; set;} public String qrError {get; set;} public String qrId {get; set;} public List accsessaryNameList {get; set;} public boolean canStartFlg {get; set;} private Map> statusMap {get; set;} //private Set inventoryModelNo {get; set;} // 查看全部保有设备结果 public Inventory_Detail_Copy__c id_dummy {get; set;} // 查看全部保有设备结果 public String inventoryUser1 {get; set;} // 查看全部保有设备结果 public String inventoryUser2 {get; set;} // 查看全部保有设备结果 public String inventoryUser3 {get; set;} // 查看全部保有设备结果 public Inventory_Header_Copy__c inventoryHeader {get; set;} // 查看全部保有设备结果 public Inventory_Header_Copy__c consumInventoryHeader {get; set;} // 查看全部保有设备结果 public Map unfixAssetMap {get; set;} public Map fixAssetMap {get; set;} public Map consumAssetMap {get; set;} public Map sumRateMap {get; set;} // 合计进展率&合计实盘率Map private Map oldCountMap {get; set;} private List inventoryUserList {get; set;} public String descStr {get; set;} public String descSHStr {get; set;} public String descNotSHStr {get; set;} public Boolean angecylookrole {get; set;} // 只读权限 1650 20210628 public InventoryResultRecordCopyController() { } public InventoryResultRecordCopyController(ApexPages.StandardController controller) { } //别存放地 SelectOption public List getbieCunFangDiOps() { if (UserInfo.getProfileId() == System.Label.ProfileId_SystemAdmin || System.Label.ProfileId_EquCenAdmin.contains(UserInfo.getProfileId())) { List sl; //简档 2B3_备品中心管理者(照片) 在开始盘点的时候能看到所有的办事处信息 if(UserInfo.getProfileId() == System.Label.ProfileId_EquCenAdminPic){//20211217 you 课题C9Q9JQ sl = getPlickList('Asset', 'Internal_asset_location__c'); }else{ sl = FixtureUtil.bieCunFangDiOpsMap.get('备品管理中心'); if (sl[0].getValue() == 'All') sl.remove(0); } return sl; } else { return new List{ new SelectOption(bieCunFangDi, bieCunFangDi) }; } } //盘点人 SelectOption public List getInventoryUserOps() { if (inventoryUserList.size() > 0) { List selectOptions = new List{ new SelectOption(NONE, NONE) }; for (User iuser : inventoryUserList) { selectOptions.add(new SelectOption(iuser.Id, iuser.Name)); } return selectOptions; } else { return new List { new SelectOption(NONE, NONE) }; } } // 画面初始化 public void init() { angecylookrole = false; bpPankuiYing = NONE; ifInternalAsset = NONE; assetStatus = NONE; assetCategory = NONE; salesdepartment = NONE; salesProvince = NONE; whLocation = null; keyword = null; consumable_Guaranteen_endStr = null; sumRateMap = getRateMap(0, 0, 0); User currUser = [ Select Id, Name,Dept__c, Default_Referable_Apply_Equipment_Center__c, JingliEquipmentId__c From User Where Id = :UserInfo.getUserId()]; if (String.isBlank(currUser.Default_Referable_Apply_Equipment_Center__c)) { ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '当前用户所在地不能为空')); return; } bieCunFangDi = currUser.Default_Referable_Apply_Equipment_Center__c; deptCheck_PIC = currUser.Dept__c; //20210618 1650 you String cunFangDi = ApexPages.currentPage().getParameters().get('cunFangDi'); hasConsumAsset = false; system.debug(cunFangDi+'==177=='+bieCunFangDi); if (cunFangDi != null) bieCunFangDi = cunFangDi; //20210628 you 1650 办事处看不到 货架号 if (bieCunFangDi=='广州 备品中心' || bieCunFangDi=='北京 备品中心' || bieCunFangDi=='上海 备品中心') { angecylookrole =true; } //inventoryModelNo = new Set(); accsessaryNameList = new List(); id_dummy = new Inventory_Detail_Copy__c(); //Asset ast = [select Id from Asset limit 1]; //assetQuery = new Asset(Id=ast.Id); inventoryDetailList = new List(); consumInventoryDetailList = new List(); //add by rentx 20210901 start allHCCodelist = new List(); //add by rentx 20210901 end descStr = conf.BeiPin_Desc__c; descSHStr = conf.SH_BeiPin_Desc__c; descNotSHStr = conf.Not_SH_BeiPin_Desc__c; List usrList = [select InventoryUser__c from Inventory_User_Permission__mdt where Label = :bieCunFangDi]; if(null!=usrList && usrList.size()>0){//20211217 you 课题C9Q9JQ Id[] usrArray = usrList[0].InventoryUser__c.split(','); inventoryUserList = [select id, name from user where id in :usrArray]; inventoryUser1 = usrList[0].InventoryUser__c.contains(UserInfo.getUserId()) ? UserInfo.getUserId() : NONE; } statusMap = new Map>(); //备品搬家 20210706 SFDC-C5CC5S 暂停 Date today = Date.today(); List ihList = [ select Id, Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c, Fixture_Header__c from Inventory_Header_Copy__c where Inventory_Status__c <> '已批准' and Internal_asset_location__c =:bieCunFangDi // 20220225 ljh 113盘点 // and Inventory_Start_Date__c = LAST_N_DAYS:30 and Inventory_Start_Date__c = :today // 20220225 ljh 113盘点 ORDER BY Fixture_Header__c NULLS FIRST]; // List ihList = [ // select Id, Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c, Fixture_Header__c // from Inventory_Header_Copy__c // where Inventory_Status__c <> '已批准' and Internal_asset_location__c =:bieCunFangDi // and Inventory_Start_Date__c = LAST_N_DAYS:1 // ORDER BY Fixture_Header__c NULLS FIRST]; inventoryHeader = null; consumInventoryHeader = null; canDoFlg = false; unfixAssetMap = getInitData(new List(), 'unfix'); fixAssetMap = getInitData(new List(), 'fix'); consumAssetMap = getInitData(new List(), 'consum'); if (ihList.size() == 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '没有开始中的盘点,请点击开始盘点')); } for(Inventory_Header_Copy__c ih:ihList){ if(String.isBlank(ih.Fixture_Header__c)) { if( String.isNotBlank(ih.Inventory_Status__c)){ if (ih.Inventory_Status__c == '处理中') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '盘点处理中,请等待Batch处理完毕。Batch处理完毕后会发送处理结果邮件。')); } else{ inventoryHeader = ih; canDoFlg = canDoFlg || !System.Approval.isLocked(inventoryHeader.Id); List fixAssetList = [ Select Internal_Asset_Flg__c fix, Asset_Status__c status, sum(toAbandon_amount__c) abAmount, sum(Amount__c) amount, sum(Inventory_Count__c) acAmount From Inventory_Detail_Copy__c//20210525 you 1650 Where Inventory_Header_Copy__c = :inventoryHeader.Id AND Asset_Status__c <> '丢失借出明细' AND Asset_Status__c <> '丢失调拨明细' group by Internal_Asset_Flg__c, Asset_Status__c]; unfixAssetMap = getInitData(fixAssetList, 'unfix'); fixAssetMap = getInitData(fixAssetList, 'fix'); } } else{ unfixAssetMap = getInitData(new List(), 'unfix'); fixAssetMap = getInitData(new List(), 'fix'); } } else { hasConsumAsset = true; if (String.isNotBlank(ih.Inventory_Status__c)) { if (ih.Inventory_Status__c == '处理中') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '耗材盘点处理中,请等待Batch处理完毕。Batch处理完毕后会发送处理结果邮件。')); } else{ consumInventoryHeader = ih; canDoFlg = canDoFlg || !System.Approval.isLocked(consumInventoryHeader.Id); // 113 耗材不需要 /*List consumAssetList = [ Select Internal_Asset_Flg__c fix, Asset_Status__c status, sum(toAbandon_amount__c) abAmount, sum(Amount__c) amount, sum(Inventory_Count__c) acAmount From Consum_Inventory_Detail__c Where Inventory_Header_Copy__c = :consumInventoryHeader.Id AND Asset_Status__c != '已消耗明细' group by Internal_Asset_Flg__c, Asset_Status__c]; consumAssetMap = getInitData(consumAssetList, 'consum');*/ } } else{ consumAssetMap = getInitData(new List(), 'consum'); } } } //System.assertEquals('qyj','unfixAssetMap'+unfixAssetMap); //System.assertEquals('qyj','fixAssetMap'+fixAssetMap); //System.assertEquals('qyj','consumAssetMap'+consumAssetMap); sumRateMap = getRateMap(unfixAssetMap.get('allsum')+fixAssetMap.get('allsum')+consumAssetMap.get('allsum') , unfixAssetMap.get('dsum')+fixAssetMap.get('dsum')+consumAssetMap.get('dsum') , unfixAssetMap.get('acsum')+fixAssetMap.get('acsum')+consumAssetMap.get('acsum')); } //public void checkQRCode() { // String soqlWhere = ''; // if (!String.isBlank(assetQuery.WH_Location__c)) { // soqlWhere += ' AND WH_Location__c = \'' + assetQuery.WH_Location__c + '\' '; // } // 货架号 // if (!String.isBlank(id_dummy.VWH_Location__c)) { // if (id_dummy.VWH_Location__c == '待报废') { // soqlWhere += 'AND toAbandon_amount__c > 0 '; // } else { // soqlWhere += 'AND VWH_Location__c = \'' + id_dummy.VWH_Location__c + '\' '; // } // } // 虚拟货架号 // if (assetStatus != NONE) { // if (assetStatus == '未盘点') soqlWhere += 'AND Inventory_Time__c = null '; // if (assetStatus == '已盘点') soqlWhere += 'AND Inventory_Time__c <> null '; // } // 备品状态 // if (!String.isBlank(assetQuery.Salesdepartment__c)) { // soqlWhere += 'AND Asset__r.Salesdepartment__c = \'' + assetQuery.Salesdepartment__c + '\' '; // } // 所在地区 本部 Saless_Department__c // if (!String.isBlank(assetQuery.SalesProvince__c)) { // soqlWhere += 'AND Asset__r.SalesProvince__c = \'' + assetQuery.SalesProvince__c + '\' '; // } // 所在地区 省 Sales_Province__c // if (assetQuery.Consumable_Guaranteen_end__c != NULL) { // Date tempDate = assetQuery.Consumable_Guaranteen_end__c; // //System.debug('====:tempDate' + tempDate); // soqlWhere += 'AND Asset__r.Consumable_Guaranteen_end__c = :tempDate '; // } // //附属品扫描状态 // String scanType = ApexPages.currentPage().getParameters().get('scanType'); // String qrcode = ApexPages.currentPage().getParameters().get('qrcode'); // String headId = inventoryHeader.Id; // String searchSql = ''; // if (scanType == '2') { // searchSql = 'select id, Asset__c, Main_Asset__c, Asset__r.Manage_type__c ' + // 'from Inventory_Detail_Copy__c '+ // 'where Asset__r.Fixture_QRCode__c = :qrcode and OneToOne_Accsessary__c = true and Main_Asset__c = :mainAstQR ' + // 'and Inventory_Header_Copy__c = :headId and Asset_Status__c = \'在库\' and Amount__c > 0' + // soqlWhere; // List accList = Database.query(searchSql); // if (accList.size() > 0) { // qrError = ''; // qrId = accList[0].Main_Asset__c + ':' + accList[0].Asset__c; // qrType = accList[0].Asset__r.Manage_type__c != '数量管理' ? '4' : '5'; // } else { // qrError = '不存在此附属品'; // } // return; // } // mainAstQR = ''; // //是否一对一主体 // searchSql = 'select id, Main_Asset__c ' + // 'from Inventory_Detail_Copy__c '+ // 'where Main_Asset__r.Fixture_QRCode__c = :qrcode and OneToOne_Body__c = true ' + // 'and Inventory_Header_Copy__c = :headId and Asset_Status__c = \'在库\' and Amount__c > 0' + // soqlWhere; // List idList = Database.query(searchSql); // if (idList.size() > 0) { // qrError = ''; // qrType = '2'; // qrId = idList[0].Main_Asset__c; // mainAstQR = idList[0].Main_Asset__c; // //searchSql = 'select id, Main_Asset__c, Fixture_Model_No__c, Amount__c ' + // // 'from Inventory_Detail_Copy__c '+ // // 'where Main_Asset__c = :qrId and OneToOne_Accsessary__c = true ' + // // 'and Inventory_Header_Copy__c = :headId and Asset_Status__c = \'在库\' and Amount__c > 0' + // // soqlWhere; // //List accsessaryList = Database.query(searchSql); // //accsessaryNameList = new List(); // //for (Inventory_Detail_Copy__c accsessary : accsessaryList) { // // accsessaryNameList.add(accsessary.Fixture_Model_No__c); // //} // return; // } // //查找当前画面中非一对一附属品 // searchSql = 'select id, Fixture_Model_No__c, Asset__r.Manage_type__c, Asset__c ' + // 'from Inventory_Detail_Copy__c '+ // 'where Asset__r.Fixture_QRCode__c = :qrcode and Inventory_Header_Copy__c = :headId ' + // 'and OneToOne_Accsessary__c = false and Asset_Status__c = \'在库\' and Amount__c > 0' + // soqlWhere; // List ast = Database.query(searchSql); // System.debug(ast); // if (ast.size() > 0) { // qrError = ''; // if (ast[0].Asset__r.Manage_type__c == '数量管理') { // qrType = '1'; // } else { // qrType = '3'; // } // qrId = ast[0].Asset__c; // } else { // searchSql = 'select id, Fixture_Model_No__c, Asset__r.Manage_type__c, Asset__c ' + // 'from Inventory_Detail_Copy__c '+ // 'where Asset__r.Fixture_QRCode__c = :qrcode and Inventory_Header_Copy__c = :headId ' + // 'and OneToOne_Accsessary__c = true and Asset_Status__c = \'在库\' and Amount__c > 0' + // soqlWhere; // ast = Database.query(searchSql); // if (ast.size() > 0) { // qrError = '一对一附属品请先扫描主体'; // } else { // qrError = '不存在此备品'; // } // } //} public void startInventory() { String userStr = ''; String submitPIC = ''; String checkPIC = ''; if (bieCunFangDi == '北京 备品中心') { userStr = conf.BJ_Start_Inventory_User__c; submitPIC = conf.BJ_InventorySubmit_PIC__c; checkPIC = conf.BJ_InventoryCheck_PIC__c; } else if (bieCunFangDi == '上海 备品中心') { userStr = conf.SH_Start_Inventory_User__c; submitPIC = conf.SH_InventorySubmit_PIC__c; checkPIC = conf.SH_InventoryCheck_PIC__c; } else if (bieCunFangDi == '广州 备品中心') { userStr = conf.GZ_Start_Inventory_User__c; submitPIC = conf.GZ_InventorySubmit_PIC__c; checkPIC = conf.GZ_InventoryCheck_PIC__c; } else{ if (bieCunFangDi == '青岛') {//20210423 you 1650 userStr = conf.QD_Start_Inventory_User__c; submitPIC = conf.QD_InventorySubmit_PIC__c; //checkPIC = conf.QD_InventoryCheck_PIC__c; } else if (bieCunFangDi == '沈阳') {//20210604 you 1650 userStr = conf.SY_Start_Inventory_User__c; submitPIC = conf.SY_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '呼和浩特') {//20210604 you 1650 userStr = conf.HHHT_Start_Inventory_User__c; submitPIC = conf.HHHT_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '济南') { userStr = conf.JN_Start_Inventory_User__c; submitPIC = conf.JN_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '郑州') { userStr = conf.ZZ_Start_Inventory_User__c; submitPIC = conf.ZZ_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '太原') { userStr = conf.TY_Start_Inventory_User__c; submitPIC = conf.TY_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '西安') { userStr = conf.XA_Start_Inventory_User__c; submitPIC = conf.XA_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '兰州') { userStr = conf.LZ_Start_Inventory_User__c; submitPIC = conf.LZ_InventorySubmit_PIC__c; //checkPIC = conf.SY_InventoryCheck_PIC__c; } else if (bieCunFangDi == '乌鲁木齐') { userStr = conf.WLMQ_Start_Inventory_User__c; submitPIC = conf.WLMQ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '大连') { userStr = conf.DL_Start_Inventory_User__c; submitPIC = conf.DL_InventorySubmit_PIC__c; } else if (bieCunFangDi == '哈尔滨') { userStr = conf.HEB_Start_Inventory_User__c; submitPIC = conf.HEB_InventorySubmit_PIC__c; } else if (bieCunFangDi == '长春') { userStr = conf.CC_Start_Inventory_User__c; submitPIC = conf.CC_InventorySubmit_PIC__c; } else if (bieCunFangDi == '银川') { userStr = conf.YC_Start_Inventory_User__c; submitPIC = conf.YC_InventorySubmit_PIC__c; } else if (bieCunFangDi == '西宁') { userStr = conf.XN_Start_Inventory_User__c; submitPIC = conf.XN_InventorySubmit_PIC__c; } else if (bieCunFangDi == '天津') { userStr = conf.TJ_Start_Inventory_User__c; submitPIC = conf.TJ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '上海') { userStr = conf.SH_Start_Inventory_User_Agency__c; submitPIC = conf.SH_InventorySubmit_PIC_Agency__c; } else if (bieCunFangDi == '福州') { userStr = conf.FZ_Start_Inventory_User__c; submitPIC = conf.FZ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '杭州') { userStr = conf.HZ_Start_Inventory_User__c; submitPIC = conf.HZ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '南京') { userStr = conf.NJ_Start_Inventory_User__c; submitPIC = conf.NJ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '南昌') { userStr = conf.NC_Start_Inventory_User__c; submitPIC = conf.NC_InventorySubmit_PIC__c; } else if (bieCunFangDi == '合肥') { userStr = conf.HF_Start_Inventory_User__c; submitPIC = conf.HF_InventorySubmit_PIC__c; } else if (bieCunFangDi == '长沙') { userStr = conf.CS_Start_Inventory_User__c; submitPIC = conf.CS_InventorySubmit_PIC__c; } else if (bieCunFangDi == '贵阳') { userStr = conf.GY_Start_Inventory_User__c; submitPIC = conf.GY_InventorySubmit_PIC__c; } else if (bieCunFangDi == '武汉') { userStr = conf.WH_Start_Inventory_User__c; submitPIC = conf.WH_InventorySubmit_PIC__c; } else if (bieCunFangDi == '昆明') { userStr = conf.KM_Start_Inventory_User__c; submitPIC = conf.KM_InventorySubmit_PIC__c; } else if (bieCunFangDi == '南宁') { userStr = conf.NN_Start_Inventory_User__c; submitPIC = conf.NN_InventorySubmit_PIC__c; } else if (bieCunFangDi == '重庆') { userStr = conf.CQ_Start_Inventory_User__c; submitPIC = conf.CQ_InventorySubmit_PIC__c; } else if (bieCunFangDi == '成都') { userStr = conf.CD_Start_Inventory_User__c; submitPIC = conf.CD_InventorySubmit_PIC__c; } else if (bieCunFangDi == '广州') { userStr = conf.GZ_Start_Inventory_User_Agency__c; submitPIC = conf.GZ_InventorySubmit_PIC_Agency__c; } else if (bieCunFangDi == '石家庄') { userStr = conf.SJZ_Start_Inventory_User__c; submitPIC = conf.SJZ_InventorySubmit_PIC__c; } //20210618 1650 you 办事处的确认人为这几个 if(deptCheck_PIC=='医疗东北营业本部'){ checkPIC = '00510000001O6HoAAK'; }else if(deptCheck_PIC=='医疗华北营业本部'){ checkPIC = '00510000001O6I2AAK'; }else if(deptCheck_PIC=='医疗西北营业本部'){ checkPIC = '00510000000gW9pAAE'; }else if(deptCheck_PIC=='医疗华东营业本部'){ checkPIC = '00510000000gW9BAAU'; }else if(deptCheck_PIC=='医疗西南营业本部'){ checkPIC = '00510000008pVbWAAU'; }else if(deptCheck_PIC=='医疗华南营业本部'){ checkPIC = '00510000001OOMjAAO'; } } if (!userStr.contains(UserInfo.getUserId().left(15))) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '没有开始盘点的权限')); return; } User currUser1 = [ Select Id, JingliEquipmentId__c From User Where Id = :UserInfo.getUserId()]; if (null==currUser1.JingliEquipmentId__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品审批流为空,无法开始盘点,请维护。')); return; } // 备品搬家 SFDC-C5CC5S 暂停 // 20220225 ljh 113盘点 // List ihList = [select Id, Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c from Inventory_Header_Copy__c where Internal_asset_location__c =:bieCunFangDi and Inventory_Start_Date__c = LAST_N_DAYS:30]; Date today = Date.today(); List ihList = [select Id, Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c from Inventory_Header_Copy__c where Internal_asset_location__c =:bieCunFangDi and Inventory_Start_Date__c =:today]; if (ihList.size() > 0) { if (ihList[0].Inventory_Status__c == null) { //do nothing // InventoryStartAssetSnapshotBatch istarter = new InventoryStartAssetSnapshotBatch(bieCunFangDi, ihList[0]); InventoryStartAssetSnapshotCopyBatch istarter = new InventoryStartAssetSnapshotCopyBatch(bieCunFangDi, ihList[0]); Database.executeBatch(istarter, 50); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '开始盘点处理,请等待Batch处理结束')); return; } else { if (ihList[0].Inventory_Status__c <> '已批准') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '有未结束的盘点')); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '本仓库本月已进行过盘点')); } return; } } Inventory_Header_Copy__c ih_new = new Inventory_Header_Copy__c(); ih_new.Internal_asset_location__c = bieCunFangDi; ih_new.Inventory_Status__c = '处理中'; ih_new.InventoryPIC__c = UserInfo.getUserId(); ih_new.Inventory_Start_Date__c = Date.today(); ih_new.InventorySubmit_PIC__c = String.isBlank(submitPIC) ? null : submitPIC; ih_new.InventoryCheck_PIC__c = String.isBlank(checkPIC) ? null : checkPIC; // ih_new.UniqueKey__c = bieCunFangDi+':'+Date.today().toStartOfMonth(); ih_new.UniqueKey__c = bieCunFangDi+':'+Date.today(); //.toStartOfMonth(); 备品搬家 uniqueKey保证唯一 SFDC-C5CC5S // FixtureUtil.withoutUpsertIh(new List {ih_new}); FixtureUtil.withoutUpsertIhCopy(new List {ih_new}); // InventoryStartAssetSnapshotBatch istarter = new InventoryStartAssetSnapshotBatch(bieCunFangDi, ih_new); InventoryStartAssetSnapshotCopyBatch istarter = new InventoryStartAssetSnapshotCopyBatch(bieCunFangDi, ih_new); Database.executeBatch(istarter, 50); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '开始盘点处理,请等待Batch处理结束')); } /*public void save() { doneFlg = false; // 类别为备品或为空 <=> 类别!=耗材 if (assetCategory != '耗材' && inventoryHeader!=null && String.isNotBlank(inventoryHeader.Id) && System.Approval.isLocked(inventoryHeader.Id)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '此盘点已锁定,不能修改盘点数据')); return ; } // 类别为耗材或为空 <=> 类别!=备品 if (assetCategory != '备品' && consumInventoryHeader!=null && String.isNotBlank(consumInventoryHeader.Id) && System.Approval.isLocked(consumInventoryHeader.Id)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '此耗材盘点已锁定,不能修改盘点数据')); return ; } try { List upsertList = new List(); Set cleanInventoryTimeSet = new Set(); for(Inventory_Detail_Copy__c idc : inventoryDetailList) { //只保存有变化的盘点数量 if (!oldCountMap.containsKey(idc.Id)) continue; Decimal oldCount = oldCountMap.get(idc.Id); Decimal oldCount_int = oldCount == null ? 0 : oldCount; Decimal newCount = idc.Inventory_Count__c; Decimal newCount_int = newCount == null ? 0 : newCount; if (oldCount_int == newCount_int && !((oldCount == null && newCount == 0) || (oldCount == 0 && newCount == null))) continue; if (idc.Inventory_Count__c != null) { idc.InventoryPerson1__c = inventoryUser1 == NONE ? null : inventoryUser1; idc.InventoryPerson2__c = inventoryUser2 == NONE ? null : inventoryUser2; idc.InventoryPerson3__c = inventoryUser3 == NONE ? null : inventoryUser3; idc.Inventory_Time__c = System.now(); } else { idc.InventoryPerson1__c = null; idc.InventoryPerson2__c = null; idc.InventoryPerson3__c = null; idc.Inventory_Time__c = null; cleanInventoryTimeSet.add(idc.Asset__c); } upsertList.add(idc); } for(Consum_Inventory_Detail__c idc : consumInventoryDetailList) { //只保存有变化的盘点数量 if (!oldCountMap.containsKey(idc.Id)) continue; Decimal oldCount = oldCountMap.get(idc.Id); Decimal oldCount_int = oldCount == null ? 0 : oldCount; Decimal newCount = idc.Inventory_Count__c; Decimal newCount_int = newCount == null ? 0 : newCount; if (oldCount_int == newCount_int && !((oldCount == null && newCount == 0) || (oldCount == 0 && newCount == null))) continue; if (idc.Inventory_Count__c != null) { idc.InventoryPerson1__c = inventoryUser1 == NONE ? null : inventoryUser1; idc.InventoryPerson2__c = inventoryUser2 == NONE ? null : inventoryUser2; idc.InventoryPerson3__c = inventoryUser3 == NONE ? null : inventoryUser3; idc.Inventory_Time__c = System.now(); } else { idc.InventoryPerson1__c = null; idc.InventoryPerson2__c = null; idc.InventoryPerson3__c = null; idc.Inventory_Time__c = null; cleanInventoryTimeSet.add(idc.Asset__c); } upsertList.add(idc); } if (upsertList.size() > 0) { FixtureUtil.withoutUpdate(upsertList); //清空的情况,也要清空asset单位的盘点状态 if (cleanInventoryTimeSet.size() > 0) { List cleanInventoryTimeList = [select Id, Asset_Inventory_Flg__c from Inventory_Detail_Copy__c where Asset__c in :cleanInventoryTimeSet and Sync_Asset_Record_Flag__c = true]; List cleanConsumInventoryTimeList = [select Id, Asset_Inventory_Flg__c from Consum_Inventory_Detail__c where Asset__c in :cleanInventoryTimeSet and Sync_Asset_Record_Flag__c = true]; upsertList = new List(); for (Inventory_Detail_Copy__c cit : cleanInventoryTimeList) { cit.Asset_Inventory_Flg__c = false; upsertList.add(cit); } for (Consum_Inventory_Detail__c cit : cleanConsumInventoryTimeList) { cit.Asset_Inventory_Flg__c = false; upsertList.add(cit); } FixtureUtil.withoutUpdate(upsertList); } searchBtn(); } doneFlg = true; } catch (exception e) { doneFlg = false; System.debug(e.getStackTraceString()); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,e.getMessage())); } } public void searchBtn() { // 类别为备品或为空 <=> 类别!=耗材 if (assetCategory != '耗材' && inventoryHeader!=null && String.isNotBlank(inventoryHeader.Id) && System.Approval.isLocked(inventoryHeader.Id)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '此盘点已锁定,不能修改盘点数据')); return ; } // 类别为耗材或为空 <=> 类别!=备品 if (assetCategory != '备品' && consumInventoryHeader!=null && String.isNotBlank(consumInventoryHeader.Id) && System.Approval.isLocked(consumInventoryHeader.Id)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '此耗材盘点已锁定,不能修改盘点数据')); return ; } //add by rentx 20210901 start allHCCodelist = new List(); //add by rentx 20210901 end List ihList = new List(); //备品搬家 SFDC-C5CC5S ihList = [select Id,Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c , Fixture_Header__c from Inventory_Header_Copy__c where Inventory_Status__c <> null and Inventory_Status__c <> '已批准' and Internal_asset_location__c =:bieCunFangDi // 20220225 ljh 113盘点 // and Inventory_Start_Date__c = LAST_N_DAYS:30 and Inventory_Start_Date__c = LAST_N_DAYS:1 // 20220225 ljh 113盘点 ORDER BY Fixture_Header__c nulls first ]; // ihList = [select Id,Inventory_Status__c, Name, Internal_asset_location__c, Inventory_Start_Date__c // , Fixture_Header__c // from Inventory_Header_Copy__c // where Inventory_Status__c <> null and Inventory_Status__c <> '已批准' and Internal_asset_location__c =:bieCunFangDi // and Inventory_Start_Date__c = LAST_N_DAYS:1 // ORDER BY Fixture_Header__c nulls first // ]; oldCountMap = new Map(); if(ihList.isEmpty()) { inventoryDetailList = new List(); consumInventoryDetailList = new List(); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '没有开始中的盘点,请点击开始盘点')); unfixAssetMap = getInitData(new List(), 'unfix'); fixAssetMap = getInitData(new List(), 'fix'); consumAssetMap = getInitData(new List(), 'consum'); } system.debug('==='+ihList.size()); for(Inventory_Header_Copy__c ih:ihList){ Boolean isConsum = String.isNotBlank(ih.Fixture_Header__c); String ihId = ih.Id; if(assetCategory == '耗材' && !isConsum) continue; //选耗材时,忽略备品的表头 if(assetCategory == '备品' && isConsum) continue; // 选备品时,忽略耗材的表头 if (ih.Inventory_Status__c == '处理中') { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '盘点处理中,请等待Batch处理完毕。Batch处理完毕后会发送处理结果邮件。')); return; } String soqlAsset = 'select ' + 'Id, Asset__r.SerialNumber, Inventory_Count__c, Asset__c, Asset__r.Manage_type__c, ' + ' Fixture_Model_No__c, Fixture_QRCode__c, Asset_Status__c, WH_location__c, Amount__c, Salesdepartment__c,Asset__r.Product2.Packing_list_Fixture_F__c'; if(isConsum){ soqlAsset += ', Barcode__c, Asset__r.Product_Serial_No__c '; //add by rentx 20210823 start 耗材盘点时记录code ---- soqlAsset += ', HCCodes__c '; //add by rentx 20210823 end 耗材盘点时记录code soqlAsset += 'from Consum_Inventory_Detail__c '; } else{ soqlAsset += ', OneToOne_Accsessary__c, OneToOne_Body__c, Main_Asset__c, VWH_Location__c '; soqlAsset += 'from Inventory_Detail_Copy__c '; } soqlAsset += 'where Inventory_Header_Copy__c = :ihId and Asset_Status__c in (\'在库\',\'冻结\') and Amount__c > 0 '; if (!String.isBlank(fixtureModelNo)) { String[] vals = fixtureModelNo.split(' '); system.debug(vals); soqlAsset += 'AND ('; String fmodelno = ''; for (String v : vals) { // 关键字 -- 备品配套明细型号 fmodelno += ' Fixture_Model_No__c LIKE \'%' + String.escapeSingleQuotes(v.replaceAll('%', '\\%')) + '%\''; fmodelno += 'OR'; } fmodelno = fmodelno.removeEnd('OR'); soqlAsset += fmodelno + ' )'; } // 备品配套明细型号 if (!String.isBlank(whLocation)) { soqlAsset += 'AND WH_Location__c = \'' + String.escapeSingleQuotes(whLocation) + '\' '; } // 货架号 if (!String.isBlank(id_dummy.VWH_Location__c)) { if (id_dummy.VWH_Location__c == '待报废') { soqlAsset += 'AND toAbandon_amount__c > 0 '; } else { soqlAsset += 'AND VWH_Location__c = \'' + String.escapeSingleQuotes(id_dummy.VWH_Location__c) + '\' '; } } // 虚拟货架号 if (assetStatus != NONE) { if (assetStatus == '未盘点') soqlAsset += 'AND Inventory_Time__c = null '; if (assetStatus == '已盘点') soqlAsset += 'AND Inventory_Time__c <> null '; } // 备品状态 if (internal_Asset_Flg != NONE && String.isNotBlank(internal_Asset_Flg)) { soqlAsset += ' AND internal_Asset_Flg__c = ' + internal_Asset_Flg; } if (inventory_Deviation != NONE && String.isNotBlank(inventory_Deviation)) { soqlAsset += ' AND Inventory_Time__c != null AND Inventory_Deviation__c ' + inventory_Deviation; } //if (!String.isBlank(assetQuery.EquipmentSet_Managment_Code__c)) { // soqlAsset += 'AND Asset__r.EquipmentSet_Managment_Code__c = \'' + assetQuery.EquipmentSet_Managment_Code__c + '\' '; //} // 备品管理编码 //if (!String.isBlank(assetQuery.Internal_Asset_number__c)) { // soqlAsset += 'AND Asset__r.Internal_Asset_number__c = \'' + assetQuery.Internal_Asset_number__c + '\' '; //} // 固定资产编号 //if (!String.isBlank(assetQuery.SerialNumber)) { // soqlAsset += 'AND Asset__r.SerialNumber = \'' + assetQuery.SerialNumber + '\' '; //} // 机身号 シリアル番号 //if (financeBranchNo != NONE) { // soqlAsset += 'AND Asset__r.Finance_of_Branch__c = \'' + financeBranchNo + '\' '; //} // 财务所属分公司 //if (bodyOrAccessory != NONE) { // if (bodyOrAccessory == '主体') { // soqlAsset += 'AND Asset__r.Loaner_accsessary__c = false '; // } else { // soqlAsset += 'AND Asset__r.Loaner_accsessary__c = true '; // } //} // 主体/附属品 //if (!String.isBlank(assetQuery.Product_category__c)) { // soqlAsset += 'AND Asset__r.Product_category__c = \'' + assetQuery.Product_category__c + '\' '; //} // 产品分类 //if (!String.isBlank(assetQuery.Equipment_Type__c)) { // soqlAsset += 'AND Asset__r.Equipment_Type__c = \'' + assetQuery.Equipment_Type__c + '\' '; //} // 备品分类 //if (!String.isBlank(assetQuery.Manage_type__c)) { // soqlAsset += 'AND Asset__r.Manage_type__c = \'' + assetQuery.Manage_type__c + '\' '; //} // 管理种类 if (!String.isBlank(salesdepartment) && salesdepartment != NONE) { soqlAsset += ' AND Asset__r.Salesdepartment__c = \'' + String.escapeSingleQuotes(salesdepartment) + '\' '; } // 所在地区 本部 Saless_Department__c if (!String.isBlank(salesProvince) && salesProvince != NONE) { soqlAsset += ' AND Asset__r.SalesProvince__c = \'' + String.escapeSingleQuotes(salesProvince) + '\' '; } // 所在地区 省 Sales_Province__c if (consumable_Guaranteen_end != null) { Date tempDate = consumable_Guaranteen_end; //System.debug('====:tempDate' + tempDate); soqlAsset += ' AND Asset__r.Consumable_Guaranteen_end__c = :tempDate '; } // 消耗品有效期至 Consumable_Guaranteen_End__c if (isConsum){ soqlAsset += ' ORDER BY Asset__r.Fixture_Model_No_F__c nulls last, Asset__r.SerialNumber nulls last, Fixture_Model_No__c, SerialNumber__c limit 1001'; } else{ soqlAsset += ' ORDER BY Main_Asset__r.Fixture_Model_No_F__c nulls last, Main_Asset__r.SerialNumber nulls last, OneToOne_Accsessary__c, Fixture_Model_No__c, SerialNumber__c limit 1001'; } system.debug('--盘点查询sql--'+soqlAsset); if(isConsum) { consumInventoryDetailList = Database.query(soqlAsset); if (consumInventoryDetailList.size() > 1000) { consumInventoryDetailList.remove(1000); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品数量超过1000条,请按货架号盘点或增加检索条件。')); } for (Consum_Inventory_Detail__c idl : consumInventoryDetailList) { // 冻结的数据不可扫码 //if (!idl.OneToOne_Accsessary__c && idl.Asset_Status__c != '冻结') inventoryModelNo.add(idl.Fixture_Model_No__c); oldCountMap.put(idl.Id, idl.Inventory_Count__c); //add by rentx 20210901 start allHCCodelist.add(idl.HCCodes__c); //add by rentx 20210901 end } // 113 盘点Copy // List consumAssetList = [ // Select Internal_Asset_Flg__c fix, Asset_Status__c status, sum(toAbandon_amount__c) abAmount, sum(Amount__c) amount, sum(Inventory_Count__c) acAmount // From Consum_Inventory_Detail__c // Where Inventory_Header_Copy__c = : ih.Id // and Asset_Status__c != '已消耗明细' // group by Internal_Asset_Flg__c, Asset_Status__c]; // consumAssetMap = getInitData(consumAssetList, 'consum'); } else{ inventoryDetailList = Database.query(soqlAsset); system.debug('--在这里--'+inventoryDetailList.size()); if (inventoryDetailList.size() > 1000) { inventoryDetailList.remove(1000); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '备品数量超过1000条,请按货架号盘点或增加检索条件。')); } for (Inventory_Detail_Copy__c idl : inventoryDetailList) { // 冻结的数据不可扫码 //if (!idl.OneToOne_Accsessary__c && idl.Asset_Status__c != '冻结') inventoryModelNo.add(idl.Fixture_Model_No__c); oldCountMap.put(idl.Id, idl.Inventory_Count__c); } List fixAssetList = [ Select Internal_Asset_Flg__c fix, Asset_Status__c status, sum(toAbandon_amount__c) abAmount, sum(Amount__c) amount, sum(Inventory_Count__c) acAmount From Inventory_Detail_Copy__c //20210525 you 1650 Where Inventory_Header_Copy__c = :ih.Id AND Asset_Status__c <> '丢失借出明细' AND Asset_Status__c <> '丢失调拨明细' group by Internal_Asset_Flg__c, Asset_Status__c]; unfixAssetMap = getInitData(fixAssetList, 'unfix'); fixAssetMap = getInitData(fixAssetList, 'fix'); } } sumRateMap = getRateMap(unfixAssetMap.get('allsum')+fixAssetMap.get('allsum')+consumAssetMap.get('allsum') , unfixAssetMap.get('dsum')+fixAssetMap.get('dsum')+consumAssetMap.get('dsum') , unfixAssetMap.get('acsum')+fixAssetMap.get('acsum')+consumAssetMap.get('acsum')); //System.assertEquals('qyj',''+sumRateMap); List usrList = [select InventoryUser__c from Inventory_User_Permission__mdt where Label = :bieCunFangDi]; Id[] usrArray = usrList[0].InventoryUser__c.split(','); inventoryUserList = [select id, name from user where id in :usrArray]; }*/ /** * 获取初始化时页面显示的数据 * @param arList 查询盘点明细表后得到的符合地区与盘点状态的List * @param category 类型'fix' 'unfix' 'consum' * @return Map 排列后的盘点明细 */ private Map getInitData(List arList, String category) { Map assetMap = new Map{'all' => 0, 'stock' => 0, 'acAmount' => 0, 'abandon' => 0, 'inventory' => 0, 'repair' => 0, 'lend' => 0, 'transfer' => 0,// 20210520 you 1650 'lost' => 0, 'percent' => 0, 'percent2' => 0, 'panying' => 0, 'pankui' => 0, 'allsum' => 0, 'dsum' => 0, 'acsum' => 0 }; //for (String yy : this.yAxis) { // for (String xx : this.xAxis) { // // 维修、出借中的不能实盘,也算不了亏盈,所以设-1,加页面判断不显示 // if ((yy != '应盘') && (xx == '维修中' || xx == '出借中' || xx == '遗失')) { // assetMap.put(xx + yy, -1); // } else { // assetMap.put(xx + yy, 0); // } // } //} Integer amount = 0, acAmount = 0, arAmount = 0, arAcAmount = 0, arAbAmount = 0; Boolean fixed = (category == 'fix'); system.debug('=category=='+category+'==fixed=='+fixed); if (arList.size() > 0) { for (AggregateResult ar: arList) { system.debug('盘点明细表中是否是固定资产'+Boolean.valueOf(ar.get('fix'))); boolean aa=Boolean.valueOf(ar.get('fix')) != fixed ; system.debug('总==='+aa+'=='); if (Boolean.valueOf(ar.get('fix')) != fixed) continue; arAmount = ar.get('amount') == null ? 0 : Integer.valueOf(ar.get('amount')); // 应盘 arAbAmount = ar.get('abAmount') == null ? 0 : Integer.valueOf(ar.get('abAmount')); // 丢失 arAcAmount = ar.get('acAmount') == null ? 0 : Integer.valueOf(ar.get('acAmount')); // 实盘 system.debug('是否进来1111=='+aa+''); if (ar.get('status') == '在库' || ar.get('status') == '冻结') { assetMap.put('stock', assetMap.get('stock') + arAmount); // 在库(包含待报废)应盘 assetMap.put('abandon', assetMap.get('abandon') + arAbAmount); assetMap.put('inventory', assetMap.get('inventory') + arAcAmount); // 在库(包含待报废)实盘 } else if (ar.get('status') == '维修中') { assetMap.put('repair', arAmount); // 维修中应盘 } else if (ar.get('status') == '出借中') { assetMap.put('lend', arAmount); // 出借中应盘 } else if (ar.get('status') == '丢失') { assetMap.put('lost', arAmount); // 遗失应盘 } else if (ar.get('status') == '已消耗') { assetMap.put('lost', arAmount); // 已消耗应盘 }else if (ar.get('status') == '调拨中') {// 20210520 you 1650 assetMap.put('transfer', arAmount); // 调拨中应盘 } amount += arAmount; } assetMap.put('all', amount); // 保有数应盘 List deviationCount; List allCount; List doneCount; if(category == 'consum'){ system.debug('是否进来2=='+category); // 113 盘点Copy // deviationCount = [ // Select count(Id) cnt, sum(Inventory_Deviation__c) sum // From Consum_Inventory_Detail__c // Where Inventory_Header_Copy__c = :consumInventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Inventory_Deviation__c >= 0]; Integer deviationcnt = Integer.valueOf(deviationCount[0].get('cnt')); Integer deviationsum = deviationcnt > 0 ? Integer.valueOf(deviationCount[0].get('sum')) : 0; assetMap.put('panying', deviationsum); // 113 盘点Copy // deviationCount = [ // Select count(Id) cnt, sum(Inventory_Deviation__c) sum // From Consum_Inventory_Detail__c // Where Inventory_Header_Copy__c = :consumInventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Inventory_Deviation__c < 0]; deviationcnt = Integer.valueOf(deviationCount[0].get('cnt')); deviationsum = deviationcnt > 0 ? Integer.valueOf(deviationCount[0].get('sum')) : 0; assetMap.put('pankui', 0 - deviationsum); // 113 盘点copy // allCount = [ // Select count(Id) cnt, sum(Amount__c) sum // From Consum_Inventory_Detail__c // Where Inventory_Header_Copy__c = :consumInventoryHeader.Id and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Amount__c > 0]; // doneCount = [ // Select count(Id) cnt, sum(Amount__c) sum, sum(Inventory_Count__c) acAmount // From Consum_Inventory_Detail__c // Where Inventory_Header_Copy__c = :consumInventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Amount__c > 0]; } else { system.debug('是否进来3=='+category+''); deviationCount = [ Select count(Id) cnt, sum(Inventory_Deviation__c) sum From Inventory_Detail_Copy__c Where Inventory_Header_Copy__c = :inventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Inventory_Deviation__c >= 0]; Integer deviationcnt = Integer.valueOf(deviationCount[0].get('cnt')); Integer deviationsum = deviationcnt > 0 ? Integer.valueOf(deviationCount[0].get('sum')) : 0; assetMap.put('panying', deviationsum); deviationCount = [ Select count(Id) cnt, sum(Inventory_Deviation__c) sum From Inventory_Detail_Copy__c Where Inventory_Header_Copy__c = :inventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Inventory_Deviation__c < 0]; deviationcnt = Integer.valueOf(deviationCount[0].get('cnt')); deviationsum = deviationcnt > 0 ? Integer.valueOf(deviationCount[0].get('sum')) : 0; assetMap.put('pankui', 0 - deviationsum); allCount = [ Select count(Id) cnt, sum(Amount__c) sum From Inventory_Detail_Copy__c Where Inventory_Header_Copy__c = :inventoryHeader.Id and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Amount__c > 0]; doneCount = [ Select count(Id) cnt, sum(Amount__c) sum, sum(Inventory_Count__c) acAmount From Inventory_Detail_Copy__c Where Inventory_Header_Copy__c = :inventoryHeader.Id and Inventory_Time__c <> null and Internal_Asset_Flg__c = :fixed and Asset_Status__c in ('在库','冻结') and Amount__c > 0]; } //Integer allcnt = Integer.valueOf(allCount[0].get('cnt')); //Integer dcnt = Integer.valueOf(doneCount[0].get('cnt')); Integer allsum = allCount[0].get('sum') != null ? Integer.valueOf(allCount[0].get('sum')) : 0; Integer dsum = doneCount[0].get('sum') != null ? Integer.valueOf(doneCount[0].get('sum')) : 0; Integer acsum = doneCount[0].get('acAmount') != null ? Integer.valueOf(doneCount[0].get('acAmount')) : 0; if (allsum > 0) { Map rateMap = getRateMap(allsum,dsum,acsum); assetMap.put('percent', rateMap.get('processRate')); // 进展率 assetMap.put('percent2', rateMap.get('inventoryRate')); // 实盘率 assetMap.put('allsum', allsum); // 应盘数量(合计进展率&合计实盘率用) assetMap.put('dsum', dsum); // 盘点过的数量(合计进展率用) assetMap.put('acsum', acsum); // 实盘数量(合计实盘率用) } } return assetMap; } public List getInventory_DeviationOps() { List pickListValuesList= new List(); pickListValuesList.add(new SelectOption(NONE, NONE)); pickListValuesList.add(new SelectOption('> 0', '盘盈')); pickListValuesList.add(new SelectOption('< 0', '盘亏')); return pickListValuesList; } public List getInternal_Asset_FlgOps() { List pickListValuesList= new List(); pickListValuesList.add(new SelectOption(NONE, NONE)); pickListValuesList.add(new SelectOption('True', '是')); pickListValuesList.add(new SelectOption('False', '否')); return pickListValuesList; } public List getPlickList(String objApi, String fieldApi) { Schema.DescribeFieldResult fieldResult = Schema.getGlobalDescribe().get(objApi).getDescribe().fields.getMap().get(fieldApi).getDescribe(); List pickListValuesList= new List(); List ple = fieldResult.getPicklistValues(); pickListValuesList.add(new SelectOption('', NONE)); for( Schema.PicklistEntry pickListVal : ple){ pickListValuesList.add(new SelectOption(pickListVal.getValue(), pickListVal.getLabel())); } return pickListValuesList; } /** * 获取进展率&实盘率 * @param allsum 应盘数量(进展率&实盘率用) * @param dsum 盘点过的数量(进展率用) * @param acsum 实盘数量(实盘率用) */ private Map getRateMap(Integer allsum, Integer dsum, Integer acsum) { Map rateMap = new Map{'processRate' => 0, 'inventoryRate' => 0}; if (allsum != 0) { Decimal sumDeci = Decimal.valueOf(allsum); Decimal p1 = dsum*100/sumDeci; Decimal p2 = acsum*100/sumDeci; Integer processRate = (Integer) p1.setScale(0, RoundingMode.HALF_UP); // 进展率 Integer inventoryRate = (Integer) p2.setScale(0, RoundingMode.HALF_UP); // 实盘率 rateMap.put('processRate', processRate); rateMap.put('inventoryRate', inventoryRate); } return rateMap; } @TestVisible private static void test() { Integer i = 0; i++; i++; i++;//可以多写点 i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }