Commit e07ebc52 authored by 1650842865's avatar 1650842865

客供料计划订单查询接口和删除功能

parent 351f1e2d
...@@ -12,23 +12,24 @@ function initUI() { ...@@ -12,23 +12,24 @@ function initUI() {
function loadGrid() { function loadGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({ var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: addHandler,
deleteHandler: deleteHandler
// exportExcelHandler:exportExcelHandler, // exportExcelHandler:exportExcelHandler,
// exportModelHandler:{id:'exportModelHandler',img:'fa-cloud-download',text:'导出模板',click:exportModelHandler}, deleteHandler:{id:'deleteHandler',img:'fa-cloud-delete',text:'删除订单',click:deleteHandler},
}); });
gridManager = UICtrl.grid("#maingrid", { gridManager = UICtrl.grid("#maingrid", {
columns: [ columns: [
{display: "单据编号", name: "billCode", width: 150, minWidth: 60, type: "string", align: "left"}, {display: "客供料", name: "matnr", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "创建日期", name: "fillinDate", width: 120, minWidth: 60, type: "string", align: "left"}, {display: "客供料名称", name: "maktx", width: 200, minWidth: 60, type: "string", align: "left"},
{display: "申请状态", name: "statusTextView", width: 60, minWidth: 60, type: "string", align: "left"}, {display: "期初日期", name: "pertr", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "创建人", name: "personMemberName", width: 120, minWidth: 60, type: "string", align: "left"}, {display: "订单开始日期", name: "psttr", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "申请部门", name: "deptName", width: 120, minWidth: 60, type: "string", align: "left"}, {display: "订单完成日期", name: "pedtr", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "部门", name: "departName", width: 200, minWidth: 60, type: "string", align: "left"}, {display: "订货数量", name: "gsmng", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "人员", name: "applyPersonName", width: 120, minWidth: 60, type: "string", align: "left"}, {display: "单位", name: "meins", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "用途", name: "usedTextView", width: 100, minWidth: 60, type: "string", align: "left"}, {display: "计划订单", name: "plnum", width: 60, minWidth: 60, type: "string", align: "left"},
{display: "情况说明", name: "remark", width: 260, minWidth: 60, type: "string", align: "left"}, {display: "销售订单", name: "kdauf", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "行项次", name: "kdpos", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "生产订单", name: "aufnr", width: 200, minWidth: 60, type: "string", align: "left"},
{display: "是否删除", name: "closedTextView", width: 100, minWidth: 60, type: "string", align: "left"},
], ],
dataAction: "server", dataAction: "server",
url: web_app.name + '/clientMaterials/slicedClientMaterialsList.ajax', url: web_app.name + '/clientMaterials/slicedClientMaterialsList.ajax',
...@@ -41,9 +42,6 @@ function loadGrid() { ...@@ -41,9 +42,6 @@ function loadGrid() {
checkbox: true, checkbox: true,
fixedCellHeight: true, fixedCellHeight: true,
selectRowButtonOnly: true, selectRowButtonOnly: true,
onDblClickRow: function (data, rowindex, rowobj) {
doView(data.id);
},
}); });
UICtrl.setSearchAreaToggle(gridManager); UICtrl.setSearchAreaToggle(gridManager);
} }
...@@ -60,42 +58,20 @@ function resetForm(obj) { ...@@ -60,42 +58,20 @@ function resetForm(obj) {
$(obj).formClean(); $(obj).formClean();
} }
function deleteHandler(){
//删除按钮 var row = gridManager.getSelectedRow();
function deleteHandler() { if (!row) {
let result=DataUtil.getUpdateRow(gridManager); return;
if(result.status!==0){
Public.tip("请选择申请状态的数据!")
return false;
} }
if (row.closed == '1') {
// var message = "您确认要删除选择的数据?"; Public.tip('订单已删除!');
// UICtrl.confirm(message, function () { return;
DataUtil.del({ }
action: 'clientMaterials/deleteClientMaterials.ajax', Public.ajax(web_app.name + '/clientMaterials/deleteClientMaterials.ajax', {row:$.toJSON(row)}, function () {
gridManager: gridManager, idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
// });
}
function addHandler() {
UICtrl.addTabItem({
tabid: 'addClientMaterials',
text: "新增客户供料通知",
url: web_app.name + '/clientMaterials/forwardClientMaterialsDetail.job'
}); });
} }
function doView(id) {
UICtrl.addTabItem({
tabid: 'viewClientMaterials'+id,
text: "客户供料通知",
url: web_app.name + '/clientMaterials/showClientMaterials.job?bizId='+id+"&isReadOnly=true"
});
}
...@@ -15,12 +15,9 @@ ...@@ -15,12 +15,9 @@
<div position="center" title="客户供料通知"> <div position="center" title="客户供料通知">
<x:title title="common.button.search" hideTable="queryMainForm" isHide="true"/> <x:title title="common.button.search" hideTable="queryMainForm" isHide="true"/>
<form class="hg-form ui-hide" method="post" action="" id="queryMainForm"> <form class="hg-form ui-hide" method="post" action="" id="queryMainForm">
<x:hidden name="templetId" value=""/> <x:inputC name="matnr" required="false" label="客供料" labelCol="1"/>
<x:hidden name="batchNumber" value=""/> <x:inputC name="plnum" label="计划订单" labelCol="1" fieldCol="2"/>
<x:hidden name="fullId"/> <x:selectC name="closed" label="查询删除订单" labelCol="1" fieldCol="2" dictionary="yesorno"/>
<x:inputC name="billCode" required="false" label="申请单号" labelCol="1"/>
<x:selectC name="used" label="用途" labelCol="1" fieldCol="2" dictionary="materialUse"/>
<x:selectC name="status" label="审批状态" labelCol="1" fieldCol="2" dictionary="bizBillStatus"/>
<x:searchButtons/> <x:searchButtons/>
</form> </form>
<div class="blank_div clearfix"></div> <div class="blank_div clearfix"></div>
......
...@@ -3,9 +3,6 @@ package com.huigou.topsun.sap.clientMaterials.application; ...@@ -3,9 +3,6 @@ package com.huigou.topsun.sap.clientMaterials.application;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials; import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest; import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.topsun.sap.clientMaterials.vo.ClientMaterialsVo; import com.huigou.topsun.sap.clientMaterials.vo.ClientMaterialsVo;
import com.huigou.topsun.sap.componentSupply.domain.ComponentSupply;
import com.huigou.topsun.sap.componentSupply.domain.query.ComponentSupplyQueryRequest;
import com.huigou.topsun.sap.componentSupply.vo.ComponentSupplyVo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -22,11 +19,11 @@ public interface ClientMaterialsApplication { ...@@ -22,11 +19,11 @@ public interface ClientMaterialsApplication {
Map<String, Object> getClientMaterialsList(ClientMaterialsQueryRequest sapPermitVo); Map<String, Object> getClientMaterialsList(ClientMaterialsQueryRequest sapPermitVo);
ClientMaterials getClientMaterialsById(String id); Map<String, Object> getClientMaterialsListFromSap(ClientMaterialsQueryRequest queryRequest);
void deleteByIds(List<String> ids); ClientMaterials getClientMaterialsById(String id);
void saveClientMaterialsVo(ClientMaterialsVo clientMaterialsVoVo); void deleteFromSap(ClientMaterials clientMaterials);
// ByteArrayOutputStream printInfo(HttpServletResponse response, String id); // ByteArrayOutputStream printInfo(HttpServletResponse response, String id);
} }
package com.huigou.topsun.sap.clientMaterials.application;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterialsItem;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.topsun.sap.componentSupply.domain.ComponentSupplyItem;
import com.huigou.topsun.sap.componentSupply.domain.query.ComponentSupplyQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: LXH
* @Date: 2024/07/25/10:35
* @Description:
*/
public interface ClientMaterialsItemApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/clientMaterials/clientMaterialsItem.xml";
void saveClientMaterialsItems(String clientMaterialsId, List<ClientMaterialsItem> items);
Map<String,Object> queryClientMaterialsItems(ClientMaterialsQueryRequest queryRequest);
void deleteByIds(List<String> ids);
List<ClientMaterialsItem> findByClientMaterialsId(String clientMaterialsId);
}
package com.huigou.topsun.sap.clientMaterials.application.impl; package com.huigou.topsun.sap.clientMaterials.application.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
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.sap.clientMaterials.application.ClientMaterialsApplication; import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsApplication;
import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsApplication;
import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsItemApplication;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials; import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterialsItem;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest; import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.topsun.sap.clientMaterials.repository.ClientMaterialsItemRepository;
import com.huigou.topsun.sap.clientMaterials.repository.ClientMaterialsRepository; import com.huigou.topsun.sap.clientMaterials.repository.ClientMaterialsRepository;
import com.huigou.topsun.sap.clientMaterials.vo.ClientMaterialsVo; import com.huigou.topsun.sap.clientMaterials.vo.ClientMaterialsVo;
import com.huigou.topsun.sap.componentSupply.domain.ComponentSupplyItem; import com.huigou.topsun.sap.common.HttpClient;
import com.huigou.uasp.bmp.common.BizBillStatus; import com.huigou.topsun.sap.common.domain.SapResult;
import com.huigou.uasp.bmp.operator.OperatorApplication; import com.huigou.topsun.util.SAPUtils;
import com.huigou.uasp.bpm.FlowBroker; import com.huigou.uasp.bmp.common.application.BaseApplication;
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.Constants;
import com.huigou.util.JSONUtil; import com.huigou.util.JSONUtil;
import com.huigou.util.SDO;
import org.activiti.engine.delegate.DelegateExecution;
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.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; 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
...@@ -50,196 +34,80 @@ import java.util.stream.Collectors; ...@@ -50,196 +34,80 @@ import java.util.stream.Collectors;
* @Description: * @Description:
*/ */
@Service("clientMaterialsApplication") @Service("clientMaterialsApplication")
public class ClientMaterialsApplicationImpl extends FlowBroker implements ClientMaterialsApplication { public class ClientMaterialsApplicationImpl extends BaseApplication implements ClientMaterialsApplication {
@Autowired @Autowired
private ClientMaterialsRepository clientMaterialsRepository; private ClientMaterialsRepository clientMaterialsRepository;
@Autowired @Autowired
private ClientMaterialsItemRepository clientMaterialsItemRepository; private HttpClient httpClient;
@Autowired
private ClientMaterialsItemApplication clientMaterialsItemApplication;
@Autowired
private WorkflowApplication workflowApplication;
@Autowired
private OperatorApplication operatorApplication;
@Override @Override
public Map<String, Object> getClientMaterialsList(ClientMaterialsQueryRequest queryRequest) { public Map<String, Object> getClientMaterialsList(ClientMaterialsQueryRequest queryRequest) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "clientMaterials"); Map<String, Object> map = new HashMap<>();
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest); //如果是查询已关单的数据,从bpm获取数据
if (queryRequest.getStatus() != null) { if ("1".equals(queryRequest.getClosed())){
queryModel.addCriteria(" and t.status =:status"); QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "clientMaterials");
queryModel.putParam("status", queryRequest.getStatus()); QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
} queryModel.putDictionary("closed", DictUtil.getDictionary("yesorno"));
if (queryRequest.getBillCode() != null) { map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
queryModel.addCriteria(" and t.bill_code like:billCode"); }else {
queryModel.putLikeParam("billCode", queryRequest.getBillCode()); map = this.getClientMaterialsListFromSap(queryRequest);
}
if (queryRequest.getRemark() != null) {
queryModel.addCriteria(" and t.remark like:remark");
queryModel.putLikeParam("remark", queryRequest.getRemark());
} }
if (queryRequest.getUsed() != null) {
queryModel.addCriteria(" and t.used =:used");
queryModel.putParam("used", queryRequest.getUsed());
}
queryModel.putDictionary("status", DictUtil.getDictionary("bizBillStatus"));
queryModel.putDictionary("used", DictUtil.getDictionary("materialUse"));
queryModel.addCriteria(" order by bill_code desc ");
Map<String, Object> map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
return map; return map;
} }
@Override @Override
public ClientMaterials getClientMaterialsById(String id) { public Map<String, Object> getClientMaterialsListFromSap(ClientMaterialsQueryRequest queryRequest) {
return clientMaterialsRepository.findOne(id); List<ClientMaterials> sapClientMaterialsList = new ArrayList<>();
} Map<String, Object> dataMap = new HashMap<>();
Map<String, Object> queryMap = new HashMap<>();
@Override ArrayList<Map<String, Object>> maps = new ArrayList<>();
public void deleteByIds(List<String> ids) { String json = null;
ids.forEach(id->{ try {
clientMaterialsRepository.delete(id); //http://192.168.3.109:8000/sap/bc/erp_ep/search/sch_planorder?sap-client=300
List<ClientMaterialsItem> list=clientMaterialsItemRepository.findByClientMaterialsId(id); json = httpClient.execute(queryMap, "search/sch_planorder");
for (ClientMaterialsItem clientMaterialsItem:list){ Map<String, Object> map = JSONUtil.toMap(json);
clientMaterialsItemRepository.delete(clientMaterialsItem); SapResult sapResult = JSONObject.parseObject(JSONUtil.toString(map.get("MSG")), SapResult.class);
if ("S".equals(sapResult.getTYPE())){
ObjectMapper objectMapper = SAPUtils.objectMapper();
//忽略不存在
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//忽略大小写
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
sapClientMaterialsList = objectMapper.readValue(JSONUtil.toString(map.get("RDATA")), new TypeReference<List<ClientMaterials>>() {});
maps = objectMapper.convertValue(sapClientMaterialsList, new TypeReference<ArrayList<Map<String, Object>>>() {
});
} }
}); } catch (IOException e) {
} throw new RuntimeException(e);
@Override
protected void onBeforeComplete(DelegateTask delegateTask) {
super.onBeforeComplete(delegateTask);
String bizId = delegateTask.getExecution().getProcessBusinessKey();
if (this.isApplyProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()) {
ClientMaterials clientMaterials = clientMaterialsRepository.findOne(bizId);
clientMaterials.setStatusId(BizBillStatus.APPROVING.getId());
clientMaterialsRepository.save(clientMaterials);
} }
dataMap.put("Rows",maps);
return dataMap;
} }
@Override @Override
protected void onEnd(DelegateExecution delegateExecution) { public ClientMaterials getClientMaterialsById(String id) {
super.onEnd(delegateExecution); return clientMaterialsRepository.findOne(id);
String bizId = delegateExecution.getProcessBusinessKey();
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
ClientMaterials clientMaterials = clientMaterialsRepository.findOne(bizId);
clientMaterials.setStatusId(status.getId());
clientMaterialsRepository.save(clientMaterials);
}
@Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
super.onAbortProcessInstance(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
ClientMaterials clientMaterials = clientMaterialsRepository.findOne(bizId);
clientMaterials.setStatusId(BizBillStatus.ABORTED.getId());
clientMaterialsRepository.save(clientMaterials);
}
@Override
protected void onBack(DelegateTask delegateTask, String destActivityId) {
super.onBack(delegateTask, destActivityId);
if ("Apply".equalsIgnoreCase(destActivityId)) {
String bizId = delegateTask.getExecution().getProcessBusinessKey();
ClientMaterials clientMaterials = clientMaterialsRepository.findOne(bizId);
clientMaterials.setStatusId(BizBillStatus.APPLYING.getId());
clientMaterialsRepository.save(clientMaterials);
}
}
@Override
protected Map<String, Object> getProcessBizParams(String bizId) {
return ClassHelper.toMap(clientMaterialsRepository.getOne(bizId));
} }
@Override @Override
protected String saveBizAndApprovalData() { public void deleteFromSap(ClientMaterials clientMaterials) {
super.saveBizAndApprovalData(); Map<String, Object> map = new HashMap<>();
ClientMaterials clientMaterials = getBizEntity(ClientMaterials.class); map.put("PLANNEDORDER",clientMaterials.getPlnum());
if (clientMaterials.isNew()) { //http://192.168.3.109:8000/sap/bc/erp_ep/del_planorder?sap-client=300
clientMaterials.setStatusId(BizBillStatus.APPLYING.getId()); String json = null;
} else { try {
clientMaterials = (ClientMaterials) commonDomainService.loadAndFillinProperties(clientMaterials); //http://192.168.3.109:8000/sap/bc/erp_ep/del_planorder?sap-client=300
} json = httpClient.execute(map,"del_planorder");
clientMaterials = clientMaterialsRepository.save(clientMaterials); Map<String, Object> resultMap = JSONUtil.toMap(json);
List<ClientMaterialsItem> items = getBizEntities(ClientMaterialsItem.class, "items"); SapResult sapResult = JSONObject.parseObject(JSONUtil.toString(resultMap.get("MSG")), SapResult.class);
if (items.size()<1){ if ("S".equals(sapResult.getTYPE())){
throw new IllegalArgumentException("没有客户供料通知明细信息!"); //删除成功,保存数据
clientMaterials.setClosed("1");
clientMaterialsRepository.save(clientMaterials);
}
} catch (IOException e) {
throw new RuntimeException(e);
} }
clientMaterialsItemApplication.saveClientMaterialsItems(clientMaterials.getId(),items);
// List<ClientMaterialsItem> items = getBizEntities(ClientMaterialsItem.class, "items");
// if (items.size()<1){
// throw new IllegalArgumentException("没有补充发料明细信息!");
// }
// ClientMaterialsItemApplication.saveClientMaterialsItems(ClientMaterials.getId(),items);
//更新附件ID为主键ID
// if (!(ClientMaterials.getId().equals(ClientMaterials.getAttbizId()))) {
// List<Attachment> attachmentList = attachmentApplication.queryAttachments("sapRetirementInfo", ClientMaterials.getAttbizId());
// for (Attachment attachment : attachmentList) {
// attachment.setBizId(ClientMaterials.getId());
// attachmentApplication.saveAttachment(attachment);
// }
// }
return clientMaterials.getId();
}
@Override
public void saveClientMaterialsVo(ClientMaterialsVo clientMaterialsVo){
ClientMaterials clientMaterials = new ClientMaterials();
BeanUtil.copyProperties(clientMaterialsVo,clientMaterials);
//初始化用户信息
Operator operator = operatorApplication.createOperatorByPersonMemberId(clientMaterialsVo.getApplyPerson());
clientMaterials.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
Map<String, Object> formData = BeanUtil.beanToMap(clientMaterials);
//保存明细
// List<ClientMaterialsItemVo> itemVos = ClientMaterialsVo.getItemVos();
// List<ClientMaterialsItem> ClientMaterialsItems = new ArrayList<>();
// if (!CollectionUtils.isEmpty(itemVos)){
// ClientMaterialsItems= itemVos
// .stream()
// .map(itemVo -> {
// ClientMaterialsItem ClientMaterialsItem = new ClientMaterialsItem();
// BeanUtil.copyProperties(itemVo, ClientMaterialsItem);
// return ClientMaterialsItem;
// }).collect(Collectors.toList());
// formData.put("items", JSONUtil.toString(ClientMaterialsItems));
//启动流程实例
this.startProcessInstance(ClientMaterialsApplication.PROCESS_DEFINITION_KEY, formData);
//ClientMaterials.setId(bizId);
//this.ClientMaterialsRepository.save(ClientMaterials);
//}
} }
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;
}
} }
package com.huigou.topsun.sap.clientMaterials.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsItemApplication;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterialsItem;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.topsun.sap.clientMaterials.repository.ClientMaterialsItemRepository;
import com.huigou.topsun.sap.componentSupply.application.ComponentSupplyItemApplication;
import com.huigou.topsun.sap.componentSupply.domain.ComponentSupplyItem;
import com.huigou.topsun.sap.componentSupply.domain.query.ComponentSupplyQueryRequest;
import com.huigou.topsun.sap.componentSupply.repository.ComponentSupplyItemRepository;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Auther: LXH
* @Date: 2024/07/25/10:16
* @Description:
*/
@Service("clientMaterialsItemApplication")
public class ClientMaterialsItemApplicationImpl extends BaseApplication implements ClientMaterialsItemApplication {
@Autowired
private ClientMaterialsItemRepository clientMaterialsItemRepository;
@Override
public void saveClientMaterialsItems(String clientMaterialsId, List<ClientMaterialsItem> items){
for (ClientMaterialsItem item : items) {
item.setClientMaterialsId(clientMaterialsId);
clientMaterialsItemRepository.save(item);
}
}
@Override
public Map<String, Object> queryClientMaterialsItems(ClientMaterialsQueryRequest queryRequest){
Map<String, Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getClientMaterialsId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "clientMaterialsItems");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
if (queryRequest.getClientMaterialsId() != null) {
queryModel.addCriteria(" and t.client_materials_id =:clientMaterialsId");
queryModel.putParam("clientMaterialsId", queryRequest.getClientMaterialsId());
}
// queryModel.putDictionary("unit", DictUtil.getDictionary("ComponentSupplyUnit"));
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
}
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
clientMaterialsItemRepository.delete(id);
});
}
@Override
public List<ClientMaterialsItem> findByClientMaterialsId(String clientMaterialsId) {
return clientMaterialsItemRepository.findByClientMaterialsId(clientMaterialsId);
}
}
package com.huigou.topsun.sap.clientMaterials.controller; package com.huigou.topsun.sap.clientMaterials.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsApplication; import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsApplication;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials; import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterials;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest; import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping; import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.client.CommonController; import com.huigou.uasp.client.CommonController;
import com.huigou.util.CommonUtil; import com.huigou.util.JSONUtil;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import org.springframework.beans.factory.annotation.Autowired; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.Date;
import java.util.Map; import java.util.Map;
/**客户供料通知 /**客户供料通知
...@@ -25,6 +23,7 @@ import java.util.Map; ...@@ -25,6 +23,7 @@ import java.util.Map;
@Controller @Controller
@ControllerMapping("/clientMaterials") @ControllerMapping("/clientMaterials")
public class ClientMaterialsController extends CommonController { public class ClientMaterialsController extends CommonController {
private final static Logger LOG = LoggerFactory.getLogger(ClientMaterialsController.class);
@Override @Override
protected String getPagePath() { protected String getPagePath() {
return "/biz/topsun/sap/clientMaterials/"; return "/biz/topsun/sap/clientMaterials/";
...@@ -33,7 +32,6 @@ public class ClientMaterialsController extends CommonController { ...@@ -33,7 +32,6 @@ public class ClientMaterialsController extends CommonController {
@Resource @Resource
private ClientMaterialsApplication clientMaterialsApplication; private ClientMaterialsApplication clientMaterialsApplication;
public String forwardClientMaterialsList(){ public String forwardClientMaterialsList(){
return forward("clientMaterialsList"); return forward("clientMaterialsList");
} }
...@@ -45,37 +43,19 @@ public class ClientMaterialsController extends CommonController { ...@@ -45,37 +43,19 @@ public class ClientMaterialsController extends CommonController {
return toResult(map); return toResult(map);
} }
public String forwardClientMaterialsDetail(){
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("processDefinitionKey", ClientMaterialsApplication.PROCESS_DEFINITION_KEY);
this.putAttribute("procUnitId", "Apply");
ClientMaterials clientMaterials = new ClientMaterials();
clientMaterials.setStatusId(BizBillStatus.APPLYING.getId());
/**c
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
clientMaterials.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
clientMaterials.setAttbizId(CommonUtil.createGUID()); // 自动生成附件id
// ExcelImportTemplate excelImportTemplate=excelImportApplication.loadExcelImportTemplateByCode("ClientMaterialsData");
return forward("clientMaterialsDetail",clientMaterials);
}
public String showClientMaterials(){
SDO sdo = this.getSDO();
String id = sdo.getBizId();
// this.putAttribute("attbizId", id); // 设置附件id
ClientMaterials clientMaterials = clientMaterialsApplication.getClientMaterialsById(id);
// sapRetirement.setAttbizId(id);
return forward("clientMaterialsDetail",clientMaterials);
}
/** /**
* 删除组件补充发料 * 删除组件补充发料
*/ */
public String deleteClientMaterials() { public String deleteClientMaterials() {
List<String> ids = this.getSDO().getIds(); SDO sdo = this.getSDO();
clientMaterialsApplication.deleteByIds(ids); String row = sdo.getString("row");
ClientMaterials materials = JSONUtil.toBean(row, ClientMaterials.class);
String personMemberName = sdo.getOperator().getPersonMemberName();
String personMemberId = sdo.getOperator().getPersonMemberId();
materials.setDeleteTime(new Date());
materials.setPersonMemberId(personMemberId);
materials.setPersonMemberName(personMemberName);
clientMaterialsApplication.deleteFromSap(materials);
return success(); return success();
} }
......
package com.huigou.topsun.sap.clientMaterials.controller;
import com.huigou.topsun.sap.clientMaterials.application.ClientMaterialsItemApplication;
import com.huigou.topsun.sap.clientMaterials.domain.query.ClientMaterialsQueryRequest;
import com.huigou.topsun.sap.componentSupply.application.ComponentSupplyItemApplication;
import com.huigou.topsun.sap.componentSupply.domain.query.ComponentSupplyQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.List;
import java.util.Map;
/**
* @Auther: LXH
* @Date: 2024/07/25 10:10
* @Description:
*/
@Controller
@ControllerMapping("/clientMaterials")
public class ClientMaterialsItemController extends CommonController {
@Autowired
private ClientMaterialsItemApplication clientMaterialsItemApplication;
public String queryClientMaterialsItems(){
SDO sdo = this.getSDO();
ClientMaterialsQueryRequest queryRequest = sdo.toQueryRequest(ClientMaterialsQueryRequest.class);
Map<String, Object> map = clientMaterialsItemApplication.queryClientMaterialsItems(queryRequest);
return toResult(map);
}
public String deleteClientMaterialsItems(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
clientMaterialsItemApplication.deleteByIds(ids);
return success();
}
}
package com.huigou.topsun.sap.clientMaterials.domain; package com.huigou.topsun.sap.clientMaterials.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.huigou.data.domain.model.AbstractEntity;
import com.huigou.data.domain.model.FlowBillAbstractEntity; import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data; import lombok.Data;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import java.math.BigDecimal;
import java.util.Date;
/** /**
* @Auther: LXH * @Auther: LXH
* @Date: 2024/06/05/10:45 * @Date: 2024/06/05/10:45
* @Description:客户供料通知 * @Description:客户供料通知
*/ */
@JsonInclude(JsonInclude.Include.ALWAYS)
@JsonIgnoreProperties(ignoreUnknown = true)
@Table(name = "sap_client_materials") @Table(name = "sap_client_materials")
@Entity @Entity
@Data @Data
public class ClientMaterials extends FlowBillAbstractEntity { public class ClientMaterials extends AbstractEntity {
/**
* 工厂
*/
@Column(name = "werks")
private String werks;
/** /**
* 责任部门 * 客供料
*/ */
@Column(name = "depart") @Column(name = "matnr")
private String depart; private String matnr;
@Column(name = "depart_name") /**
private String departName; * 客供料名称
*/
@Column(name = "maktx")
private String maktx;
/** /**
* 人员 * 期初日期
*/ */
@Column(name = "apply_person") @Column(name = "pertr")
private String applyPerson; private String pertr;
@Column(name = "apply_person_name") /**
private String applyPersonName; * 订单开始日期
*/
@Column(name = "psttr")
private String psttr;
/**
* 订单完成日期
*/
@Column(name = "pedtr")
private String pedtr;
/* /**
* 用途 * 订货数量
*/ */
@Column(name = "used") @Column(name = "gsmng")
private String used; private BigDecimal gsmng;
/**
* 单位
*/
@Column(name = "meins")
private String meins;
/* /**
* 供应商名称 * 计划订单
*/ */
//// @Column(name = "suppliers_name") @Column(name = "plnum")
// private String suppliersName; private String plnum;
@Column(name = "remark") /**
private String remark; * 销售订单
*/
@Column(name = "kdauf")
private String kdauf;
/**
* 行项次
*/
@Column(name = "kdpos")
private String kdpos;
/**
* 生产订单
*/
@Column(name = "aufnr")
private String aufnr;
@Column(name = "attbiz_id") /**
private String attbizId; * 已关单
*/
@Column(name = "closed")
private String closed;
@Column(name = "person_member_name")
private String personMemberName;
@Column(name = "sale_order") @Column(name = "person_member_id")
private String saleOrder; private String personMemberId;
@Column(name = "produce_order") @Column(name = "delete_time")
private String produceOrder; private Date deleteTime;
@Override
protected String getCodeRuleId() {
return "clientMaterials";
}
} }
package com.huigou.topsun.sap.clientMaterials.domain;
import com.huigou.data.domain.model.AbstractEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* SAP客户供料通知明细
*
* @TableName sap_client_materials_item
*/
@Table(name = "sap_client_materials_item")
@Entity
@Data
public class ClientMaterialsItem extends AbstractEntity {
/**
* SAP客户供料通知id
*/
@Column(name = "client_materials_id")
private String clientMaterialsId;
/**
* 产品物料
*/
@Column(name = "product_material")
private String productMaterial;
/**
* 产品物料名称
*/
@Column(name = "product_material_name")
private String productMaterialName;
/**
* 供给物料
*/
@Column(name = "supply_material")
private String supplyMaterial;
/**
* 供给物料名称
*/
@Column(name = "supply_material_name")
private String supplyMaterialName;
/**
* 补发数量
*/
@Column(name = "quantity")
private BigDecimal quantity;
/**
* 提货方式
*/
@Column(name = "delivery_method")
private String deliveryMethod;
/**
* 备注
*/
@Column(name = "remark")
private String remark;
}
\ No newline at end of file
...@@ -10,9 +10,5 @@ import lombok.Data; ...@@ -10,9 +10,5 @@ import lombok.Data;
*/ */
@Data @Data
public class ClientMaterialsQueryRequest extends QueryAbstractRequest { public class ClientMaterialsQueryRequest extends QueryAbstractRequest {
private String used; private String closed;
private String billCode;
private String remark;
private String status;
private String clientMaterialsId;
} }
package com.huigou.topsun.sap.clientMaterials.repository;
import com.huigou.topsun.sap.clientMaterials.domain.ClientMaterialsItem;
import com.huigou.topsun.sap.componentSupply.domain.ComponentSupplyItem;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: LXH
* @Date: 2024/07/25 16:33
* @Description:
*/
public interface ClientMaterialsItemRepository extends JpaRepository<ClientMaterialsItem,String> {
List<ClientMaterialsItem> findByClientMaterialsId(String clientMaterialsId);
}
package com.huigou.topsun.sap.clientMaterials.vo; package com.huigou.topsun.sap.clientMaterials.vo;
import com.huigou.topsun.sap.componentSupply.vo.ComponentSupplyItemVo; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/** /**
* @Auther: lxh * @Auther: lxh
* @Date: 2024/06/05/14:08 * @Date: 2024/06/05/14:08
* @Description: * @Description:
*/ */
@Data public class ClientMaterialsVo implements Serializable {
public class ClientMaterialsVo {
/**
* 工厂
*/
@JsonProperty("WERKS")
private String werks;
/**
* 客供料
*/
@JsonProperty("MATNR")
private String matnr;
/**
* 客供料名称
*/
@JsonProperty("MAKTX")
private String maktx;
/** /**
* 公司 * 期初日期
*/ */
private String company; @JsonProperty("PERTR")
private String pertr;
/** /**
* 责任部门 * 订单开始日期
*/ */
private String dutyDepart; @JsonProperty("PSTTR")
private String psttr;
private String dutyDepartName; /**
* 订单完成日期
*/
@JsonProperty("PEDTR")
private String pedtr;
/**
* 订货数量
*/
@JsonProperty("GSMNG")
private BigDecimal gsmng;
/** /**
* 申请人 * 单位
*/ */
private String applyPerson; @JsonProperty("MEINS")
private String meins;
private String applyPersonName;
/** /**
* 携出人 * 计划订单
*/ */
private String belongPerson; @JsonProperty("PLNUM")
private String plnum;
/** /**
* 日期 * 销售订单
*/ */
private Date permitDate; @JsonProperty("KDAUF")
private String kdauf;
/**
* 行项次
*/
@JsonProperty("KDPOS")
private String kdpos;
/**
* 生产订单
*/
@JsonProperty("AUFNR")
private String aufnr;
public String getWerks() {
return werks;
}
public void setWerks(String werks) {
this.werks = werks;
}
public String getMatnr() {
return matnr;
}
public void setMatnr(String matnr) {
this.matnr = matnr;
}
public String getMaktx() {
return maktx;
}
public void setMaktx(String maktx) {
this.maktx = maktx;
}
public String getPertr() {
return pertr;
}
public void setPertr(String pertr) {
this.pertr = pertr;
}
public String getPsttr() {
return psttr;
}
public void setPsttr(String psttr) {
this.psttr = psttr;
}
public String getPedtr() {
return pedtr;
}
public void setPedtr(String pedtr) {
this.pedtr = pedtr;
}
public BigDecimal getGsmng() {
return gsmng;
}
public void setGsmng(BigDecimal gsmng) {
this.gsmng = gsmng;
}
public String getMeins() {
return meins;
}
public void setMeins(String meins) {
this.meins = meins;
}
public String getPlnum() {
return plnum;
}
public void setPlnum(String plnum) {
this.plnum = plnum;
}
public String getKdauf() {
return kdauf;
}
public void setKdauf(String kdauf) {
this.kdauf = kdauf;
}
public String getKdpos() {
return kdpos;
}
public void setKdpos(String kdpos) {
this.kdpos = kdpos;
}
public String getAufnr() {
return aufnr;
}
List<ComponentSupplyItemVo> itemVos; public void setAufnr(String aufnr) {
this.aufnr = aufnr;
}
} }
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