Commit 3f5d0f82 authored by 鲁鑫's avatar 鲁鑫

废品销售单完成后,生成放行条

parent 6a0c2432
...@@ -5,6 +5,7 @@ import com.huigou.topsun.sap.fixedAssets.domain.TmpFixedRetirementData; ...@@ -5,6 +5,7 @@ import com.huigou.topsun.sap.fixedAssets.domain.TmpFixedRetirementData;
import com.huigou.topsun.sap.fixedAssets.domain.query.SapFixedRetirementQueryRequest; import com.huigou.topsun.sap.fixedAssets.domain.query.SapFixedRetirementQueryRequest;
import com.huigou.topsun.sap.permit.domain.SapPermit; import com.huigou.topsun.sap.permit.domain.SapPermit;
import com.huigou.topsun.sap.permit.domain.query.SapPermitQueryRequest; import com.huigou.topsun.sap.permit.domain.query.SapPermitQueryRequest;
import com.huigou.topsun.sap.permit.vo.SapPermitVo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -26,4 +27,6 @@ public interface SapPermitApplication { ...@@ -26,4 +27,6 @@ public interface SapPermitApplication {
void deleteByIds(List<String> ids); void deleteByIds(List<String> ids);
// List<TmpPermitData> importExcelData(String batchNumber) ; // List<TmpPermitData> importExcelData(String batchNumber) ;
void saveSapPermitVo(SapPermitVo sapPermitVo);
} }
package com.huigou.topsun.sap.permit.application.impl; package com.huigou.topsun.sap.permit.application.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONArray;
import com.huigou.cache.DictUtil; import com.huigou.cache.DictUtil;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.query.model.QueryDescriptor; import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel; import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.base.coderule.application.CodeRuleApplication;
import com.huigou.topsun.sap.fixedAssets.domain.SapRetirement;
import com.huigou.topsun.sap.fixedAssets.domain.SapRetirementItem;
import com.huigou.topsun.sap.permit.application.SapPermitApplication; import com.huigou.topsun.sap.permit.application.SapPermitApplication;
import com.huigou.topsun.sap.permit.application.SapPermitItemApplication; import com.huigou.topsun.sap.permit.application.SapPermitItemApplication;
import com.huigou.topsun.sap.permit.domain.SapPermit; import com.huigou.topsun.sap.permit.domain.SapPermit;
...@@ -15,18 +15,30 @@ import com.huigou.topsun.sap.permit.domain.SapPermitItem; ...@@ -15,18 +15,30 @@ import com.huigou.topsun.sap.permit.domain.SapPermitItem;
import com.huigou.topsun.sap.permit.domain.query.SapPermitQueryRequest; import com.huigou.topsun.sap.permit.domain.query.SapPermitQueryRequest;
import com.huigou.topsun.sap.permit.repository.SapPermitItemRepository; import com.huigou.topsun.sap.permit.repository.SapPermitItemRepository;
import com.huigou.topsun.sap.permit.repository.SapPermitRepository; import com.huigou.topsun.sap.permit.repository.SapPermitRepository;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo; import com.huigou.topsun.sap.permit.vo.SapPermitItemVo;
import com.huigou.topsun.sap.permit.vo.SapPermitVo;
import com.huigou.uasp.bmp.common.BizBillStatus; import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.doc.attachment.application.AttachmentApplication; import com.huigou.uasp.bmp.operator.OperatorApplication;
import com.huigou.uasp.bpm.FlowBroker; import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.uasp.bpm.ProcessAction;
import com.huigou.uasp.bpm.ProcessStartModel;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.util.ClassHelper; import com.huigou.util.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.JSONUtil;
import com.huigou.util.SDO;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Auther: Lxh * @Auther: Lxh
...@@ -41,13 +53,10 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp ...@@ -41,13 +53,10 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp
private SapPermitItemRepository sapPermitItemRepository; private SapPermitItemRepository sapPermitItemRepository;
@Autowired @Autowired
private SapPermitItemApplication sapPermitItemApplication; private SapPermitItemApplication sapPermitItemApplication;
// @Autowired
// private SapPermitItemRepository sapPermitItemRepository;
@Autowired @Autowired
private AttachmentApplication attachmentApplication; private WorkflowApplication workflowApplication;
@Autowired @Autowired
private CodeRuleApplication codeRuleApplication; private OperatorApplication operatorApplication;
@Override @Override
public Map<String, Object> getPermitList(SapPermitQueryRequest queryRequest) { public Map<String, Object> getPermitList(SapPermitQueryRequest queryRequest) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPermit"); QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPermit");
...@@ -158,6 +167,60 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp ...@@ -158,6 +167,60 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp
return permit.getId(); return permit.getId();
} }
@Override
public void saveSapPermitVo(SapPermitVo sapPermitVo){
SapPermit sapPermit = new SapPermit();
BeanUtil.copyProperties(sapPermitVo,sapPermit);
//初始化用户信息
Operator operator = operatorApplication.createOperatorByPersonMemberId(sapPermitVo.getApplyPerson());
sapPermit.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
Map<String, Object> formData = BeanUtil.beanToMap(sapPermit);
//保存明细
List<SapPermitItemVo> itemVos = sapPermitVo.getItemVos();
List<SapPermitItem> sapPermitItems = new ArrayList<>();
if (!CollectionUtils.isEmpty(itemVos)){
sapPermitItems= itemVos
.stream()
.map(itemVo -> {
SapPermitItem sapPermitItem = new SapPermitItem();
BeanUtil.copyProperties(itemVo, sapPermitItem);
return sapPermitItem;
}).collect(Collectors.toList());
formData.put("items", JSONUtil.toString(sapPermitItems));
//启动流程实例
this.startProcessInstance(SapPermitApplication.PROCESS_DEFINITION_KEY, formData);
//sapPermit.setId(bizId);
//this.sapPermitRepository.save(sapPermit);
}
}
public String startProcessInstance(String processDefinitionKey,Map<String, Object> formData){
Map<String, Object> variables = new HashMap();
SDO localSdo = this.buildSDO(formData);
ThreadLocalUtil.putVariable(Constants.SDO, localSdo);
variables.put("startModel", ProcessStartModel.MANUAL.getId());
Operator operator = localSdo.getOperator();
variables.put("executorFullId", operator.getFullId());
variables.put("executorFullName", operator.getFullName());
ThreadLocalUtil.putOperator(operator);
ThreadLocalUtil.putVariable("client.ip", "127.0.0.1");
ProcessInstance processInstance = this.workflowApplication.startProcessInstanceByKey(processDefinitionKey, variables);
String businessKey = processInstance.getBusinessKey();
return businessKey;
}
private SDO buildSDO(Map<String, Object> formData) {
String createdById = (String) formData.get("applyPerson");
Operator operator = operatorApplication.createOperatorByPersonMemberId(createdById);
SDO localSdo = new SDO();
// 将业务数据传递给工作流
formData.forEach(localSdo::putProperty);
// 将业务流程信息传递给工作流
localSdo.putProperty("processAction", ProcessAction.SAVE);
localSdo.putProperty("procUnitId", "Apply");
localSdo.setOperator(operator);
return localSdo;
}
} }
...@@ -34,7 +34,7 @@ public class SapPermitItem extends AbstractEntity { ...@@ -34,7 +34,7 @@ public class SapPermitItem extends AbstractEntity {
* 数量 * 数量
*/ */
@Column(name = "quantity") @Column(name = "quantity")
private Integer quantity; private BigDecimal quantity;
/** /**
* 单位 * 单位
......
package com.huigou.topsun.sap.permit.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* SAP放行条
*
* @TableName sap_permit_item
*/
@Data
public class SapPermitItemVo {
/**
* 携带物名称
*/
private String belongings;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单位
*/
private String unit;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.huigou.topsun.sap.permit.vo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/04/17/17:08
* @Description:
*/
@Data
public class SapPermitVo {
/**
* 公司
*/
private String company;
/**
* 责任部门
*/
private String dutyDepart;
private String dutyDepartName;
/**
* 申请人
*/
private String applyPerson;
private String applyPersonName;
/**
* 携出人
*/
private String belongPerson;
/**
* 日期
*/
private Date permitDate;
List<SapPermitItemVo> itemVos;
}
...@@ -8,6 +8,9 @@ import com.huigou.data.query.model.QueryModel; ...@@ -8,6 +8,9 @@ import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.common.HttpClient; import com.huigou.topsun.sap.common.HttpClient;
import com.huigou.topsun.sap.common.domain.SapResult; import com.huigou.topsun.sap.common.domain.SapResult;
import com.huigou.topsun.sap.costReimbursement.domain.SapCostReimbursement; import com.huigou.topsun.sap.costReimbursement.domain.SapCostReimbursement;
import com.huigou.topsun.sap.permit.application.SapPermitApplication;
import com.huigou.topsun.sap.permit.vo.SapPermitItemVo;
import com.huigou.topsun.sap.permit.vo.SapPermitVo;
import com.huigou.topsun.sap.wasteSale.domain.WasteSale; import com.huigou.topsun.sap.wasteSale.domain.WasteSale;
import com.huigou.topsun.sap.wasteSale.domain.WasteSaleItem; import com.huigou.topsun.sap.wasteSale.domain.WasteSaleItem;
import com.huigou.topsun.sap.wasteSale.application.WasteSaleApplication; import com.huigou.topsun.sap.wasteSale.application.WasteSaleApplication;
...@@ -23,6 +26,7 @@ import com.huigou.util.DateUtil; ...@@ -23,6 +26,7 @@ import com.huigou.util.DateUtil;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -46,6 +50,10 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp ...@@ -46,6 +50,10 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp
private WasteSaleItemApplication wasteSaleItemApplication; private WasteSaleItemApplication wasteSaleItemApplication;
@Autowired @Autowired
private HttpClient httpClient; private HttpClient httpClient;
@Autowired
private SapPermitApplication sapPermitApplication;
@Autowired
private TaskExecutor asyncWriteExecutor;
@Override @Override
public WasteSale findWasteSaleById(String id) { public WasteSale findWasteSaleById(String id) {
return wasteSaleRepository.findOne(id); return wasteSaleRepository.findOne(id);
...@@ -124,6 +132,32 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp ...@@ -124,6 +132,32 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
asyncWriteExecutor.execute(()->
//创建放行条
this.startSapPermit(wasteSale,saleItemList)
);
}
public void startSapPermit(WasteSale wasteSale,List<WasteSaleItem> saleItemList){
SapPermitVo sapPermitVo = new SapPermitVo();
sapPermitVo.setCompany(wasteSale.getBktxt());
sapPermitVo.setApplyPerson(wasteSale.getPersonMemberId());
sapPermitVo.setApplyPersonName(wasteSale.getPersonMemberName());
sapPermitVo.setDutyDepart(wasteSale.getDeptId());
sapPermitVo.setDutyDepartName(wasteSale.getDeptName());
sapPermitVo.setPermitDate(new Date());
List<SapPermitItemVo> sapPermitItemVos = new ArrayList<>();
for (WasteSaleItem wasteSaleItem : saleItemList) {
SapPermitItemVo sapPermitItemVo = new SapPermitItemVo();
sapPermitItemVo.setBelongings(wasteSaleItem.getSaleGoods());
sapPermitItemVo.setUnit(wasteSaleItem.getUnit());
sapPermitItemVo.setQuantity(wasteSaleItem.getQuantity());
sapPermitItemVos.add(sapPermitItemVo);
}
sapPermitVo.setItemVos(sapPermitItemVos);
//创建放行条
sapPermitApplication.saveSapPermitVo(sapPermitVo);
} }
@Override @Override
...@@ -195,8 +229,10 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp ...@@ -195,8 +229,10 @@ public class WasteSaleApplicationImpl extends FlowBroker implements WasteSaleApp
WasteSale wasteSale = wasteSaleRepository.findOne(bizId); WasteSale wasteSale = wasteSaleRepository.findOne(bizId);
wasteSale.setStatusId(status.getId()); wasteSale.setStatusId(status.getId());
wasteSaleRepository.save(wasteSale); wasteSaleRepository.save(wasteSale);
if (status == BizBillStatus.COMPLETED){
this.sendWasteSaleData(wasteSale); this.sendWasteSaleData(wasteSale);
} }
}
@Override @Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) { protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment