Commit 98236001 authored by 鲁鑫's avatar 鲁鑫

工序外协申请流程,放行条待办任务优化

parent 0ab66938
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree,date,attachment"/>
<x:script src='/biz/topsun/sap/processOutsource/processOutsourceDetail.js'/>
</head>
<body>
<x:billTitle title="工序外协申请" needStatus="false" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<x:hidden name="sId"/>
<x:hidden name="applyType"/>
<x:hidden name="billCode"/>
<x:hidden name="fillinDate" type="datetime"/>
<x:hidden name="fullId"/>
<x:hidden name="organId"/>
<x:hidden name="organName"/>
<x:hidden name="deptId"/>
<x:hidden name="deptName"/>
<x:hidden name="positionId"/>
<x:hidden name="positionName"/>
<x:hidden name="personMemberId"/>
<x:hidden name="statusId"/>
<x:hidden name="personMemberName"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:hidden name="werks"/>
<x:inputC name="werksName" label="工厂" labelCol="2" fieldCol="2" required="true" wrapper="select"/>
</div>
<div class="hg-form-row">
<x:textareaC name="situationDesc" label="情况说明" labelCol="2" fieldCol="10" required="true" rows="3"/>
</div>
</div>
<div class="blank_div clearfix"></div>
<x:title title="行项目" name="group"/>
<div id="orderItemGrid" style="margin: 2px;"></div>
<div class="blank_div clearfix"></div>
<x:title title="组件" name="group"/>
<div id="materialGrid" style="margin: 2px;"></div>
</form>
</body>
</html>
var gridManager = null;
var refreshFlag = false;
$(document).ready(function () {
initializateUI()
loadProcessOutsourceOrderListGrid();
})
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3});
}
function loadProcessOutsourceOrderListGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function (){
addHandler()
}
});
gridManager = UICtrl.grid("#processOutsourceOrderGrid", {
columns: [
{display: "申请单编号", name: "billCode", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "申请状态", name: "statusTextView", width: 60, minWidth: 60, type: "string", align: "left"},
{display: "申请日期", name: "fillinDate", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "工厂", name: "werks", width: 80, minWidth: 60, type: "string", align: "left"},
{display: "采购订单", name: "ebeln", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "订单行项目号", name: "ebelp", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "序号", name: "sequence", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "工单", name: "aufnr", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "工序号", name: "wempf", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "工序描述", name: "txz01", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "同一工序外发次数", name: "ablad", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "单价", name: "kbetr", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "数量", name: "menge", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "单位", name: "meinsName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "定价基数", name: "kpein", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "币别", name: "waersTextView", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "税码", name: "purchaseMwskzTextView", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "需求到货日期", name: "eeind", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "供应商", name: "lifnrName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "申请人", name: "personMemberName", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "申请部门", name: "deptName", width: 120, minWidth: 60, type: "string", align: "left"},
],
dataAction: "server",
url: web_app.name + '/processOutsource/slicedProcessOutsourceList.ajax',
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
sortName:"fillinDate",
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
async: false,
fixedCellHeight: true,
selectRowButtonOnly: true,
onDblClickRow: function (data, rowindex, rowobj) {
doView(data.processOutsourceId);
},
});
UICtrl.setSearchAreaToggle(gridManager);
}
function query(obj) {
var param = $(obj).formToJSON();
UICtrl.gridSearch(gridManager, param);
}
function reloadGrid() {
gridManager.loadData();
}
function resetForm(obj) {
$(obj).formClean();
}
function addHandler() {
UICtrl.addTabItem({
tabid: 'processOutsourceApply',
text: "工序外协申请",
url: web_app.name + '/processOutsource/forwardProcessOutsourceDetail.job'
});
}
function doView(processOutsourceId) {
UICtrl.addTabItem({
tabid: 'processOutsource'+processOutsourceId,
text: "工序外协申请明细",
url: web_app.name + '/processOutsource/showProcessOutsourceDetail.job?isReadOnly=true&bizId='+processOutsourceId
});
}
\ No newline at end of file
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree"/>
<x:script src='/biz/topsun/sap/processOutsource/processOutsourceList.js'/>
</head>
<body>
<div class="container-fluid">
<div id="layout">
<div position="center" title="工序外协申请查询">
<x:title title="common.button.search" hideTable="queryMainForm" isHide="true"/>
<form class="hg-form ui-hide" method="post" action="" id="queryMainForm">
<x:inputC name="billCode" required="false" label="申请单号" labelCol="1"/>
<x:searchButtons/>
</form>
<div class="blank_div clearfix"></div>
<div id="processOutsourceOrderGrid" style="margin: 2px;"></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
...@@ -25,9 +25,6 @@ import com.huigou.uasp.bpm.ProcessAction; ...@@ -25,9 +25,6 @@ import com.huigou.uasp.bpm.ProcessAction;
import com.huigou.uasp.bpm.ProcessStartModel; import com.huigou.uasp.bpm.ProcessStartModel;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication; import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.util.*; import com.huigou.util.*;
import com.itextpdf.text.*;
import com.itextpdf.text.html.simpleparser.HTMLWorker;
import com.itextpdf.text.pdf.*;
import freemarker.template.Template; import freemarker.template.Template;
...@@ -199,6 +196,29 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp ...@@ -199,6 +196,29 @@ public class SapPermitApplicationImpl extends FlowBroker implements SapPermitApp
return permit.getId(); return permit.getId();
} }
/**
* 设置任务名称
*/
@Override
protected void setTaskDescription(DelegateTask delegateTask) {
String bizId = delegateTask.getExecution().getProcessBusinessKey();
delegateTask.setDescription(this.getApprovalSubjectName(bizId));
}
/**
* 获取任务标题
*
* @param bizId
* @return
*/
private String getApprovalSubjectName(String bizId) {
SapPermit sapPermit = this.sapPermitRepository.findOne(bizId);
//查询 单据日期
String fillinDateStr = DateUtil.getDateFormat("yyyy-MM-dd HH:mm:ss", sapPermit.getFillinDate());
//设置标题
return String.format("%s-%s(%s)", "放行条", sapPermit.getBillCode(), fillinDateStr);
}
@Override @Override
public void saveSapPermitVo(SapPermitVo sapPermitVo){ public void saveSapPermitVo(SapPermitVo sapPermitVo){
SapPermit sapPermit = new SapPermit(); SapPermit sapPermit = new SapPermit();
......
package com.huigou.topsun.sap.processOutsource.application;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsource;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/10:01
* @Description:
*/
public interface ProcessOutsourceApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/processOutsource/processOutsource.xml";
String PROCESS_DEFINITION_KEY = "processOutsourceProc";
Map<String,Object> slicedProcessOutsourceList(ProcessOutsourceQueryRequest queryRequest);
ProcessOutsource loadProcessOutsource(String id);
}
package com.huigou.topsun.sap.processOutsource.application;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceMaterial;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/10:01
* @Description:
*/
public interface ProcessOutsourceMaterialApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/processOutsource/processOutsource.xml";
void saveProcessOutsourceMaterials(String sapPurchaseId, List<ProcessOutsourceMaterial> processOutsourceMaterials);
Map<String,Object> queryProcessOutsourceMaterials(ProcessOutsourceQueryRequest queryRequest);
void deleteByIds(List<String> ids);
List<ProcessOutsourceMaterial> findByProcessOutsourceId(String processOutsourceId);
}
package com.huigou.topsun.sap.processOutsource.application;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceOrderItem;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/10:01
* @Description:
*/
public interface ProcessOutsourceOrderItemApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/processOutsource/processOutsource.xml";
void saveProcessOutsourceOrderItems(String sapPurchaseId, List<ProcessOutsourceOrderItem> processOutsourceOrderItems);
Map<String,Object> queryProcessOutsourceOrderItems(ProcessOutsourceQueryRequest queryRequest);
void deleteByIds(List<String> ids);
List<ProcessOutsourceOrderItem> findByProcessOutsourceId(String processOutsourceId);
}
package com.huigou.topsun.sap.processOutsource.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.processOutsource.application.ProcessOutsourceMaterialApplication;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceMaterial;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import com.huigou.topsun.sap.processOutsource.repository.ProcessOutsourceMaterialRepository;
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: xin.lu
* @Date: 2024/08/02/10:02
* @Description:
*/
@Service("processOutsourceMaterialApplication")
public class ProcessOutsourceMaterialApplicationImpl extends BaseApplication implements ProcessOutsourceMaterialApplication {
@Autowired
private ProcessOutsourceMaterialRepository processOutsourceMaterialRepository;
@Override
public void saveProcessOutsourceMaterials(String processOutsourceMaterialId, List<ProcessOutsourceMaterial> processOutsourceMaterialItems) {
processOutsourceMaterialItems.forEach(processOutsourceMaterialItem->{
processOutsourceMaterialItem.setProcessOutsourceId(processOutsourceMaterialId);
processOutsourceMaterialRepository.save(processOutsourceMaterialItem);
});
}
@Override
public Map<String, Object> queryProcessOutsourceMaterials(ProcessOutsourceQueryRequest queryRequest) {
Map<String, Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getProcessOutsourceId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "processOutsourceMaterialItems");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
}
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
processOutsourceMaterialRepository.delete(id);
});
}
@Override
public List<ProcessOutsourceMaterial> findByProcessOutsourceId(String processOutsourceId) {
return processOutsourceMaterialRepository.findByProcessOutsourceId(processOutsourceId);
}
}
package com.huigou.topsun.sap.processOutsource.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.processOutsource.application.ProcessOutsourceOrderItemApplication;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceOrderItem;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import com.huigou.topsun.sap.processOutsource.repository.ProcessOutsourceOrderItemRepository;
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: xin.lu
* @Date: 2024/08/02/10:02
* @Description:
*/
@Service("processOutsourceOrderItemApplication")
public class ProcessOutsourceOrderItemApplicationImpl extends BaseApplication implements ProcessOutsourceOrderItemApplication {
@Autowired
private ProcessOutsourceOrderItemRepository processOutsourceOrderItemRepository;
@Override
public void saveProcessOutsourceOrderItems(String processOutsourceOrderItemId, List<ProcessOutsourceOrderItem> processOutsourceOrderItemItems) {
processOutsourceOrderItemItems.forEach(processOutsourceOrderItemItem->{
processOutsourceOrderItemItem.setProcessOutsourceId(processOutsourceOrderItemId);
processOutsourceOrderItemRepository.save(processOutsourceOrderItemItem);
});
}
@Override
public Map<String, Object> queryProcessOutsourceOrderItems(ProcessOutsourceQueryRequest queryRequest) {
Map<String, Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getProcessOutsourceId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "processOutsourceOrderItems");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
}
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
processOutsourceOrderItemRepository.delete(id);
});
}
@Override
public List<ProcessOutsourceOrderItem> findByProcessOutsourceId(String processOutsourceId) {
return processOutsourceOrderItemRepository.findByProcessOutsourceId(processOutsourceId);
}
}
package com.huigou.topsun.sap.processOutsource.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.processOutsource.application.ProcessOutsourceApplication;
import com.huigou.topsun.sap.processOutsource.application.ProcessOutsourceMaterialApplication;
import com.huigou.topsun.sap.processOutsource.application.ProcessOutsourceOrderItemApplication;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsource;
import com.huigou.topsun.sap.processOutsource.domain.query.ProcessOutsourceQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.BizBillStatus;
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: xin.lu
* @Date: 2024/08/02/10:43
* @Description:
*/
@Controller
@ControllerMapping("/processOutsource")
public class ProcessOutsourceController extends CommonController {
@Override
protected String getPagePath() {
return "/biz/topsun/sap/processOutsource/";
}
@Autowired
private ProcessOutsourceApplication processOutsourceApplication;
@Autowired
private ProcessOutsourceMaterialApplication processOutsourceMaterialApplication;
@Autowired
private ProcessOutsourceOrderItemApplication processOutsourceOrderItemApplication;
public String forwardProcessOutsourceList(){
return forward("processOutsourceList");
}
public String slicedProcessOutsourceList(){
SDO sdo = this.getSDO();
ProcessOutsourceQueryRequest queryRequest = sdo.toQueryRequest(ProcessOutsourceQueryRequest.class);
Map<String, Object> map = processOutsourceApplication.slicedProcessOutsourceList(queryRequest);
return toResult(map);
}
public String forwardProcessOutsourceDetail(){
this.putAttribute("processDefinitionKey", ProcessOutsourceApplication.PROCESS_DEFINITION_KEY);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("procUnitId", "Apply");
ProcessOutsource processOutsource = new ProcessOutsource();
processOutsource.setStatusId(BizBillStatus.APPLYING.getId());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
processOutsource.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
return forward("processOutsourceDetail",processOutsource);
}
public String showProcessOutsourceDetail(){
SDO sdo = this.getSDO();
String id = sdo.getBizId();
ProcessOutsource processOutsource = processOutsourceApplication.loadProcessOutsource(id);
return forward("processOutsourceDetail",processOutsource);
}
public String queryProcessOutsourceOrderItems(){
SDO sdo = this.getSDO();
ProcessOutsourceQueryRequest queryRequest = sdo.toQueryRequest(ProcessOutsourceQueryRequest.class);
Map<String, Object> map = this.processOutsourceOrderItemApplication.queryProcessOutsourceOrderItems(queryRequest);
return toResult(map);
}
public String deleteProcessOutsourceOrderItem(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
processOutsourceOrderItemApplication.deleteByIds(ids);
return success();
}
public String queryProcessOutsourceMaterials(){
SDO sdo = this.getSDO();
ProcessOutsourceQueryRequest queryRequest = sdo.toQueryRequest(ProcessOutsourceQueryRequest.class);
Map<String, Object> map = this.processOutsourceMaterialApplication.queryProcessOutsourceMaterials(queryRequest);
return toResult(map);
}
public String deleteProcessOutsourceMaterial(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
processOutsourceOrderItemApplication.deleteByIds(ids);
return success();
}
}
package com.huigou.topsun.sap.processOutsource.domain;
import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:42
* @Description: 工序外协申请单
*/
@Data
@Entity
@Table(name = "sap_process_outsource")
public class ProcessOutsource extends FlowBillAbstractEntity {
@Column(name = "werks")
private String werks;
@Column(name = "werks_name")
private String werksName;
/**
* 情况说明
*/
@Column(name = "situation_desc")
private String situationDesc;
@Override
protected String getCodeRuleId() {
return "processOutsource";
}
}
package com.huigou.topsun.sap.processOutsource.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;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:52
* @Description: 工序外协申请组件
*/
@Data
@Entity
@Table(name = "sap_process_outsource_material")
public class ProcessOutsourceMaterial extends AbstractEntity {
@Column(name = "process_outsource_id")
private String processOutsourceId;
@Column(name = "material_name")
private String materialName;
@Column(name = "num")
private BigDecimal num;
@Column(name = "unit")
private String unit;
@Column(name = "unit_name")
private String unitName;
@Column(name = "delivery_method")
private String deliveryMethod;
}
package com.huigou.topsun.sap.processOutsource.domain;
import com.huigou.data.domain.model.AbstractEntity;
import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:42
* @Description: 工序外协申请单订单明细
*/
@Data
@Entity
@Table(name = "sap_process_outsource_order_item")
public class ProcessOutsourceOrderItem extends AbstractEntity {
@Column(name = "process_outsource_id")
private String processOutsourceId;
/**
* SAP采购订单
*/
@Column(name = "EBELN")
private String ebeln;
/**
* 订单行项目号
*/
@Column(name = "EBELP")
private String ebelp;
/**
* 序号
*/
@Column(name = "sequence")
private String sequence;
/**
* 工单
*/
@Column(name = "AUFNR")
private String aufnr;
/**
* 工序号
*/
@Column(name = "WEMPF")
private String wempf;
/**
* 工序描述
*/
@Column(name = "TXZ01")
private String txz01;
/**
* 同一工序外发次数
* 自动计数器,匹配条件为“如果之前状态为通过的申请中有相同工单+工序,则计数器+1,起始为1”
*/
@Column(name = "ABLAD")
private String ablad;
/**
* 数量
*/
@Column(name = "MENGE")
private BigDecimal menge;
/**
* 单位
*/
@Column(name = "MEINS")
private String meins;
/**
* 单位描述
*/
@Column(name = "MEINS_NAME")
private String meinsName;
/**
* 需求到货日期
*/
@Column(name = "EEIND")
private Date eeind;
/**
* 供应商编码
*/
@Column(name = "LIFNR")
private String lifnr;
/**
* 供应商名称
*/
@Column(name = "LIFNR_NAME")
private String lifnrName;
/**
* 单价
*/
@Column(name = "KBETR")
private BigDecimal kbetr;
/**
* 税码
*/
@Column(name = "PURCHASE_MWSKZ")
private String purchaseMwskz;
/**
* 定价基数 默认为1,可修改
*/
@Column(name = "KPEIN")
private BigDecimal kpein;
/**
* 币别
*/
@Column(name = "WAERS")
private String waers;
}
package com.huigou.topsun.sap.processOutsource.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/10:04
* @Description:
*/
@Data
public class ProcessOutsourceQueryRequest extends QueryAbstractRequest {
private String billCode;
private String processOutsourceId;
}
package com.huigou.topsun.sap.processOutsource.domain.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.ws.rs.DefaultValue;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:42
* @Description: 工序外协申请单
*/
@Data
public class ProcessOutsourceItemVo implements Serializable {
/**
* SAP采购订单
*/
@JsonProperty("EBELN")
private String ebeln;
/**
* 订单行项目号
*/
@JsonProperty("EBELP")
private String ebelp;
/**
* 物料编码
*/
@JsonProperty("MATNR")
private String matnr;
/**
* 物料描述
*/
@JsonProperty("MAKTX")
private String txz01;
/**
* 数量
*/
@JsonProperty("MENGE")
private BigDecimal menge;
/**
* 单位
*/
@JsonProperty("MEINS")
private String meins;
/**
* 需求到货日期
*/
@JsonProperty("EEIND")
private String eeind;
/**
* 工厂
*/
@JsonProperty("WERKS")
private String werks;
/**
* 存储地点
*/
@JsonProperty("LGORT")
private String lgort;
/**
* 工单
*/
@JsonProperty("AUFNR")
private String aufnr;
/**
* 操作/活动编号
*/
@JsonProperty("VORNR")
private String vornr;
/**
* 收货方
*/
@JsonProperty("WEMPF")
private String wempf;
/**
* 同一工序外发次数
* 自动计数器,匹配条件为“如果之前状态为通过的申请中有相同工单+工序,则计数器+1,起始为1”
*/
@JsonProperty("ABLAD")
private String ablad;
/**
* 单价
*/
@JsonProperty("KBETR")
private BigDecimal kbetr;
/**
* 税码
*/
@JsonProperty("MWSKZ")
private String purchaseMwskz;
/**
* 物料组
*/
@JsonProperty("MATKL")
private String matkl;
/**
* 科目分配类别
*/
@JsonProperty("KNTTP")
private String knttp;
/**
* 条件定价单位
*/
@JsonProperty("KPEIN")
private BigDecimal kpein;
/**
*货币码
*/
@JsonProperty("WAERS")
private String waers;
}
package com.huigou.topsun.sap.processOutsource.domain.vo;
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: xin.lu
* @Date: 2024/08/02/9:42
* @Description: 工序外协申请单
*/
@Data
public class ProcessOutsourceVo implements Serializable {
@JsonProperty("ZTYPE")
private String ztype;
/**
* 订单类型
*/
@JsonProperty("BSART")
private String bsart;
/**
* 申请人
*/
// @JsonProperty("AFNAM")
// private String personMemberName;
/**
* 公司代码
*/
@JsonProperty("BUKRS")
private String bukrs;
/**
* 采购组织
*/
@JsonProperty("EKORG")
private String ekorg;
/**
* 采购组
*/
@JsonProperty("EKGRP")
private String ekgrp;
/**
* 供应商编码
*/
@JsonProperty("LIFNR")
private String lifnr;
@JsonProperty("ITEM")
private List<ProcessOutsourceItemVo> item;
}
package com.huigou.topsun.sap.processOutsource.repository;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceMaterial;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:55
* @Description:
*/
public interface ProcessOutsourceMaterialRepository extends JpaRepository<ProcessOutsourceMaterial,String> {
List<ProcessOutsourceMaterial> findByProcessOutsourceId(String processOutsourceId);
}
package com.huigou.topsun.sap.processOutsource.repository;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsourceOrderItem;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/10:00
* @Description:
*/
public interface ProcessOutsourceOrderItemRepository extends JpaRepository<ProcessOutsourceOrderItem,String> {
List<ProcessOutsourceOrderItem> findByProcessOutsourceId(String processOutsourceId);
List<ProcessOutsourceOrderItem> findByAufnrAndWempf(String aufnr,String wempf);
}
package com.huigou.topsun.sap.processOutsource.repository;
import com.huigou.topsun.sap.processOutsource.domain.ProcessOutsource;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/08/02/9:55
* @Description:
*/
public interface ProcessOutsourceRepository extends JpaRepository<ProcessOutsource,String> {
}
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="processOutsourceProc" name="工序外协" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{processOutsourceApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{processOutsourceApplication}"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="Apply" name="工序外协申请" activiti:formKey="processOutsource/showProcessOutsourceDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{processOutsourceApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{processOutsourceApplication}"></activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="Approve" name="工序外协审批" activiti:assignee="${assignee} " activiti:formKey="processOutsource/showProcessOutsourceDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{processOutsourceApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{processOutsourceApplication}"></activiti:taskListener>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="handlerList" activiti:elementVariable="assignee">
<completionCondition>${chiefApprovePassed}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="Apply"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="Apply" targetRef="Approve"></sequenceFlow>
<exclusiveGateway id="ApproveFinished" name="审批结束"></exclusiveGateway>
<sequenceFlow id="flow3" name="审批通过" sourceRef="ApprovePassed" targetRef="ApproveFinished">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${approvePassed}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow4" name="审批结束" sourceRef="ApproveFinished" targetRef="endevent1">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${approveFinished}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow5" name="审批未结束" sourceRef="ApproveFinished" targetRef="Approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approveFinished}]]></conditionExpression>
</sequenceFlow>
<exclusiveGateway id="ApprovePassed" name="审批通过"></exclusiveGateway>
<sequenceFlow id="flow6" sourceRef="Approve" targetRef="ApprovePassed"></sequenceFlow>
<sequenceFlow id="flow9" name="审批未通过" sourceRef="ApprovePassed" targetRef="Apply">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approvePassed}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_processOutsourceProc">
<bpmndi:BPMNPlane bpmnElement="processOutsourceProc" id="BPMNPlane_processOutsourceProc">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="355.0" y="50.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="355.0" y="550.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Apply" id="BPMNShape_Apply">
<omgdc:Bounds height="55.0" width="161.0" x="292.0" y="140.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Approve" id="BPMNShape_Approve">
<omgdc:Bounds height="55.0" width="161.0" x="292.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ApproveFinished" id="BPMNShape_ApproveFinished">
<omgdc:Bounds height="40.0" width="40.0" x="352.0" y="440.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ApprovePassed" id="BPMNShape_ApprovePassed">
<omgdc:Bounds height="40.0" width="40.0" x="352.0" y="349.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="372.0" y="85.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="140.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="372.0" y="195.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="240.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
<omgdi:waypoint x="372.0" y="389.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="440.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="48.0" x="320.0" y="396.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
<omgdi:waypoint x="372.0" y="480.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="550.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="48.0" x="382.0" y="489.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
<omgdi:waypoint x="392.0" y="460.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="459.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="317.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="267.0"></omgdi:waypoint>
<omgdi:waypoint x="489.0" y="267.0"></omgdi:waypoint>
<omgdi:waypoint x="453.0" y="267.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="60.0" x="459.0" y="411.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
<omgdi:waypoint x="372.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="349.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9">
<omgdi:waypoint x="352.0" y="369.0"></omgdi:waypoint>
<omgdi:waypoint x="231.0" y="369.0"></omgdi:waypoint>
<omgdi:waypoint x="231.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="292.0" y="167.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="60.0" x="257.0" y="376.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<query-mappings>
<query name="slicedProcessOutsourceList" table="sap_process_outsource">
<sql-query>
SELECT
ot.*,
t.werks_name,
t.fillin_date,
t.bill_code,
t.`status`,
t.person_member_name
FROM sap_process_outsource_order_item ot
LEFT JOIN sap_process_outsource t ON t.id = ot.process_outsource_id where 1=1
</sql-query>
<condition column="bill_code" name="billCode" type="java.lang.String" symbol="like" alias="t"/>
</query>
<query name="processOutsourceMaterialItems" label="组件明细" table="sap_process_outsource_material">
<sql-query>
select t.* from sap_process_outsource_material t where 1=1
</sql-query>
<condition column="process_outsource_id" name="processOutsourceId" type="java.lang.String" symbol="=" alias="t"/>
</query>
<query name="processOutsourceOrderItems" label="订单明细" table="sap_process_outsource_order_item">
<sql-query>
select t.* from sap_process_outsource_order_item t where 1=1
</sql-query>
<condition column="process_outsource_id" name="processOutsourceId" type="java.lang.String" symbol="=" alias="t"/>
</query>
<query name="countProcessOutsourceOrderItem" table="sap_process_outsource_order_item">
<sql-query>
select count(t.id) as num from sap_process_outsource_order_item t where t.aufnr = ? and t.wempf = ?
</sql-query>
</query>
</query-mappings>
\ No newline at end of file
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