public without sharing class eSignHospitalPageController {
|
//Get Account Records
|
@AuraEnabled
|
public static eSignWrapper geteSigns(String DNName){
|
// 最多只显示200条明细数据
|
List<eSignFormLineItem__c> eSignFormLineItems =
|
[SELECT Id, OTCode__c, Name,
|
Asset_Model_No__c ,
|
productName__c,
|
Count_Text__c,
|
GoodStatus__c,
|
agencyConfirmResult__c,
|
agencyGoodStatus__c,
|
HPConfirmResult__c,
|
HPGoodStatus__c
|
,
|
CaseNumber__c
|
FROM eSignFormLineItem__c
|
where eSignForm__r.DNNameNo0__c =: DNName
|
order by CaseNumber__c asc
|
];
|
eSignForm__c eSignForm =
|
[SELECT Id, Name, supplier__c,
|
supplierNo__c, ContractNO__c, shippingUnit__c,
|
shippingAddress__c, DNNameNo0__c, contactName__c,
|
contactNumber__c, DeliveryDate__c, endUserName__c,
|
totalNumber__c, transportMode__c, totalWeight__c,
|
Hospital_Name__c,account_Name__c,agencySignUpDate__c
|
//CHAN-BWCBL8 精琢技术 wql 20201225 start
|
,HPSignUpStatus__c,HPReject__c,HPDenyReason__c,HPRejectDate__c
|
//CHAN-BWCBL8 精琢技术 wql 20201225 end
|
//GoodDetails__c, weight__c,
|
FROM eSignForm__c
|
where DNNameNo0__c =: DNName];
|
eSignWrapper eSignWrapper = new eSignWrapper();
|
eSignWrapper.eSignFormLineItems = loadeSignFormEntry(eSignFormLineItems, '医院收货', eSignForm.ID );
|
|
List<Decimal> caseList = new List<Decimal>();
|
//存放 id,签收单明细
|
Map<String,eSignFormLineItem__c> eSignFormLineItemMap = new Map<String,eSignFormLineItem__c>();
|
//定义一个变量 去判断箱号是否相同
|
Decimal str ;
|
for(eSignFormLineItem__c efli : eSignFormLineItems){
|
|
if(str ==null){
|
str = efli.CaseNumber__c;
|
caseList.add(efli.CaseNumber__c);
|
eSignFormLineItemMap.put(efli.id,efli);
|
}else{
|
if(!caseList.contains(efli.CaseNumber__c)){
|
caseList.add(efli.CaseNumber__c);
|
eSignFormLineItemMap.put(efli.id,efli);
|
}
|
}
|
|
|
}
|
//外层遍历所有的
|
for(eSignFormLineItem__c eflitem : eSignFormLineItems){
|
//eSignFormLineItemMap是需要显示的
|
if(eSignFormLineItemMap.containsKey(eflitem.id)){
|
eflitem.isBlockButton__c = 'block';
|
}else{
|
eflitem.isBlockButton__c = 'none';
|
}
|
|
}
|
|
eSignWrapper.eSignFormLineItems =eSignFormLineItems;
|
eSignWrapper.eSignForm = loadeSignForm(eSignForm,'医院收货',eSignForm.ID);
|
return eSignWrapper;
|
}
|
|
|
@AuraEnabled
|
public static saveeSignFormEntryResult saveeSignFormEntry(
|
list<eSignFormLineItem__c> eSignFormLineItems, eSignForm__c eSignForm
|
, string entryType, boolean IsSubmit,boolean IsHPSubmit,boolean IsHPScan,Date agencyScanDayBack,
|
Date agencySignUpDateBack,Date agencyConfirmDateBack,String HPWorkflowEmailBack){
|
saveeSignFormEntryResult tempResult = new saveeSignFormEntryResult();
|
try{
|
eSignFormEntry__c tempeSignFormEntry = new eSignFormEntry__c();
|
tempeSignFormEntry.Name = eSignForm.Name + '-' + entryType;
|
tempeSignFormEntry.entryType__c = entryType;
|
// tempeSignFormEntry.IsSubmit__c = IsSubmit;
|
tempeSignFormEntry.IsHPScan__c = IsHPScan;
|
tempeSignFormEntry.IsHPSubmit__c = IsHPSubmit;
|
tempeSignFormEntry.eSignForm__c = eSignForm.ID;
|
|
List<eSignFormEntry__c> lastESignFormEntryList = [select id,agencyScanDayBack__c,agencySignUpDateBack__c,agencyConfirmDateBack__c,
|
HPScanDayBack__c,HPSignUpDateBack__c,entryType__c,AgencyWorkflowEmailBack__c,HPWorkflowEmailBack__c,agencyAutoSignUpStatus__c,agencyReject__c,HPReject__c,IsAgencyScan__c,IsHPScan__c,IsHandled__c,IsSubmit__c
|
from eSignFormEntry__c
|
where eSignForm__c = :eSignForm.ID
|
order by createddate desc limit 1];
|
|
if(lastESignFormEntryList.size()>0){
|
//经销商扫描日
|
tempeSignFormEntry.agencyScanDayBack__c = lastESignFormEntryList[0].agencyScanDayBack__c;
|
//经销商签收日
|
tempeSignFormEntry.agencySignUpDateBack__c = lastESignFormEntryList[0].agencySignUpDateBack__c;
|
//经销商确认日
|
tempeSignFormEntry.agencyConfirmDateBack__c = lastESignFormEntryList[0].agencyConfirmDateBack__c;
|
//经销商邮箱
|
tempeSignFormEntry.AgencyWorkflowEmailBack__c = lastESignFormEntryList[0].AgencyWorkflowEmailBack__c;
|
//医院扫描日
|
tempeSignFormEntry.HPScanDayBack__c = lastESignFormEntryList[0].HPScanDayBack__c;
|
//医院签收日
|
tempeSignFormEntry.HPSignUpDateBack__c = lastESignFormEntryList[0].HPSignUpDateBack__c;
|
//如果上一条经销商已处理,但是签收单被驳回了,那么医院签收的中间表就不应该有这两个经销商的勾
|
//其它情况都应该带着
|
if(lastESignFormEntryList[0].IsHandled__c && lastESignFormEntryList[0].agencyAutoSignUpStatus__c == '不批准'){
|
tempeSignFormEntry.IsSubmit__c = false;
|
tempeSignFormEntry.IsAgencyScan__c = false;
|
}else{
|
tempeSignFormEntry.IsSubmit__c = lastESignFormEntryList[0].IsSubmit__c;
|
tempeSignFormEntry.IsAgencyScan__c = lastESignFormEntryList[0].IsAgencyScan__c;
|
}
|
|
|
}
|
//医院扫描日
|
tempeSignFormEntry.HPScanDayBack__c = Date.today();
|
//医院邮箱
|
tempeSignFormEntry.HPWorkflowEmailBack__c = HPWorkflowEmailBack;
|
//医院签收日
|
if(IsHPSubmit){
|
tempeSignFormEntry.HPSignUpDateBack__c = Date.today();
|
}
|
|
|
|
|
insert tempeSignFormEntry;
|
list<eSignFormLineItemEntry__c> eSignFormLineItemEntryList =
|
new list<eSignFormLineItemEntry__c>();
|
for(eSignFormLineItem__c tempeSignFormLineItem : eSignFormLineItems){
|
eSignFormLineItemEntry__c tempeSignFormLineItemEntry =
|
new eSignFormLineItemEntry__c();
|
tempeSignFormLineItemEntry.eSignFormEntry__c = tempeSignFormEntry.id;
|
tempeSignFormLineItemEntry.Name = tempeSignFormLineItem.Name;
|
tempeSignFormLineItemEntry.eSignFormLineItem__c = tempeSignFormLineItem.id;
|
|
tempeSignFormLineItemEntry.HPGoodStatus__c = tempeSignFormLineItem.HPGoodStatus__c;
|
//更新之前的经销商的操作流程信息 货物情况(经销商)、处理意见(经销商)、确认结果(经销商)
|
tempeSignFormLineItemEntry.agencyGoodStatus__c = tempeSignFormLineItem.agencyGoodStatus__c;
|
tempeSignFormLineItemEntry.agencyConfirmResult__c = tempeSignFormLineItem.agencyConfirmResult__c;
|
//如果医院货物情况为完好,默认赋值为同意
|
if(tempeSignFormLineItem.HPGoodStatus__c == '完好'){
|
tempeSignFormLineItemEntry.HPConfirmResult__c = '同意';
|
}
|
eSignFormLineItemEntryList.add(tempeSignFormLineItemEntry);
|
}
|
if(eSignFormLineItemEntryList.size() > 0 ){
|
insert eSignFormLineItemEntryList;
|
}
|
tempResult.isSuccess = true;
|
tempResult.result = tempeSignFormEntry.id;
|
}catch(Exception e){
|
tempResult.result = e.getMessage();
|
}
|
|
return tempResult;
|
}
|
|
public static List<eSignFormLineItem__c> loadeSignFormEntry(
|
List<eSignFormLineItem__c> eSignFormLineItems, string entryType, string eSignFormID ){
|
list<eSignFormEntry__c> tempeSignFormEntryList =
|
[select id
|
from eSignFormEntry__c
|
where eSignForm__c = :eSignFormID
|
// and entryType__c =: entryType
|
order by createddate desc limit 1
|
];
|
if( tempeSignFormEntryList.size() == 0){
|
for( eSignFormLineItem__c tempEsignItem: eSignFormLineItems){
|
|
if(tempEsignItem.HPGoodStatus__c == null){
|
tempEsignItem.HPGoodStatus__c = '完好';
|
}
|
}
|
return eSignFormLineItems;
|
}
|
list<eSignFormLineItemEntry__c> eSignFormLineItemEntryList =
|
[select id ,GoodStatus__c,HPGoodStatus__c,eSignFormLineItem__c,HPConfirmResult__c,agencyGoodStatus__c,agencyConfirmResult__c,CaseNumber__c
|
from eSignFormLineItemEntry__c
|
where eSignFormEntry__c =: tempeSignFormEntryList[0].id
|
];
|
map<ID, eSignFormLineItemEntry__c> eSignFormLineItemEntryMap =
|
new map<ID, eSignFormLineItemEntry__c>();
|
for( eSignFormLineItemEntry__c tempESignEntryItem : eSignFormLineItemEntryList){
|
eSignFormLineItemEntryMap.put(tempESignEntryItem.eSignFormLineItem__c, tempESignEntryItem);
|
}
|
for( eSignFormLineItem__c tempEsignItem: eSignFormLineItems){
|
eSignFormLineItemEntry__c tempESignEntryItem =
|
eSignFormLineItemEntryMap.get(tempEsignItem.id);
|
tempEsignItem.agencyGoodStatus__c = tempESignEntryItem.agencyGoodStatus__c;
|
tempEsignItem.agencyConfirmResult__c =tempESignEntryItem.agencyConfirmResult__c;
|
//如果经销商货物情况为完好,默认赋值为同意
|
// tempEsignItem.CaseNumber__c = tempESignEntryItem.CaseNumber__c;
|
if(tempESignEntryItem.HPGoodStatus__c != null){
|
tempEsignItem.HPGoodStatus__c = tempESignEntryItem.HPGoodStatus__c;
|
}else{
|
tempEsignItem.HPGoodStatus__c = '完好';
|
}
|
}
|
|
return eSignFormLineItems;
|
}
|
//获取上一次的录入表 主要为了获取邮箱
|
public static eSignForm__c loadESignForm(eSignForm__c eSignForm,string entryType,string eSignFormID ){
|
list<eSignFormEntry__c> tempeSignFormEntryList =
|
[select id,AgencyWorkflowEmailBack__c,HPWorkflowEmailBack__c
|
from eSignFormEntry__c
|
where eSignForm__c = :eSignFormID
|
and entryType__c =: entryType
|
order by createddate desc limit 1
|
];
|
if( tempeSignFormEntryList.size() > 0){
|
eSignForm.HPWorkflowEmail__c= tempeSignFormEntryList[0].HPWorkflowEmailBack__c;
|
}
|
|
return eSignForm;
|
}
|
public class saveeSignFormEntryResult{
|
@AuraEnabled
|
public Boolean isSuccess;
|
@AuraEnabled
|
public string result;
|
public saveeSignFormEntryResult(){
|
isSuccess = false;
|
result = '';
|
}
|
}
|
public class eSignWrapper{
|
@AuraEnabled
|
public List<eSignFormLineItem__c> eSignFormLineItems;
|
|
@AuraEnabled
|
public eSignForm__c eSignForm;
|
public eSignWrapper(){
|
eSignFormLineItems = new List<eSignFormLineItem__c>();
|
eSignForm = new eSignForm__c();
|
}
|
|
}
|
//文件上传
|
@AuraEnabled
|
public static Id saveChunk(Id parentId, String fileName, String base64Data, String contentType, String fileId) {
|
// check if fileId id ''(Always blank in first chunk), then call the saveTheFile method,
|
// which is save the check data and return the attachemnt Id after insert,
|
// next time (in else) we are call the appentTOFile() method
|
// for update the attachment with reamins chunks
|
if (fileId == '') {
|
fileId = saveTheFile(parentId, fileName, base64Data, contentType);
|
} else {
|
appendToFile(fileId, base64Data);
|
}
|
|
return Id.valueOf(fileId);
|
}
|
|
public static Id saveTheFile(Id parentId, String fileName, String base64Data, String contentType) {
|
base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
|
|
Attachment oAttachment = new Attachment();
|
oAttachment.parentId = parentId;
|
|
oAttachment.Body = EncodingUtil.base64Decode(base64Data);
|
oAttachment.Name = fileName;
|
oAttachment.ContentType = contentType;
|
|
insert oAttachment;
|
|
return oAttachment.Id;
|
}
|
|
private static void appendToFile(Id fileId, String base64Data) {
|
base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
|
|
Attachment a = [
|
SELECT Id, Body
|
FROM Attachment
|
WHERE Id =: fileId
|
];
|
|
String existingBody = EncodingUtil.base64Encode(a.Body);
|
|
a.Body = EncodingUtil.base64Decode(existingBody + base64Data);
|
|
update a;
|
}
|
|
//文件删除功能 精琢技术 thh 2021-09-26 start
|
@AuraEnabled
|
public static void deleteChunk(Id AttachmentId) {
|
Attachment attachment = new Attachment();
|
attachment.id = AttachmentId;
|
|
delete attachment;
|
}
|
//文件删除功能 精琢技术 thh 2021-09-26 end
|
}
|