Commit 9ac80511 authored by 鲁鑫's avatar 鲁鑫

宝绅内部变更申请/通知单(待完善)

parent 943e01c6
var gridManager = null,stockGridManager = null;
$(document).ready(function () {
initialize();
loadGrid();
loadStockGrid();
bindEvent();
});
function initialize(){
UICtrl.layout("#layout", {leftWidth: 3});
$("#deptNameAndPersonName").val($("#deptName").val()+"-"+$("#personMemberName").val())
}
function bindEvent(){
$('#brandName').searchbox({
type: "system", name: "queryBrand",
getParam: function (item) {
return {
//fieldName:"MEINS"
}
},
onChange: function (value, data) {
$('#brandCode').val(data.brandCode);
$('#brandName').val(data.brandName);
}
});
$('#pd').searchbox({
type: "system", name: "queryPd",
getParam: function (item) {
return {
filterValue:$("#brandCode").val()
}
},
onChange: function (value, data) {
$('#pd').val(data.productCode);
$('#productName').val(data.productName);
}
});
}
function loadGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () {
UICtrl.addGridRow(gridManager);
},
deleteHandler: function () {
var _grid = UICtrl.getGridManager('#maingrid');
DataUtil.delSelectedRows({
action: 'epChangeForm/deleteEpChangeFormImplItem.ajax',
param: {},
gridManager: _grid,
idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
}
});
gridManager = UICtrl.grid("#maingrid", {
columns: [
{
display: "部门", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left",
editor: {
type: 'tree',
required: true,
data: {
name: 'org',
filter: 'dpt',
minWidth: 250
},
textField: 'deptName'
}
},
{
display: "执行人", name: "executor", width: 200, minWidth: 60, type: "string", align: "left",
editor: {
type: 'tree',
required: true,
data: {
name: 'org',
filter: 'psm',
minWidth: 250
},
textField: 'executor',
//valueField: 'userCode'
}
},
{
display: "签名确认", name: "confirm", width: 140, minWidth: 60, type: "string", align: "left",
editor: {
type: "text"
}
},
{
display: "日期", name: "date", width: 200, minWidth: 60, type: "date", align: "left",
editor: {
type: "text"
}
}
],
dataAction: "server",
url: web_app.name + '/epChangeForm/slicedEpChangeFormImplItems.ajax',
pageSize: 10,
usePager: true,
parms:{epChangeFormId:getId()},
toolbar: toolbarOptions,
enabledEdit: true,
width: "100%",
height: "200px",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
});
UICtrl.setSearchAreaToggle(gridManager);
}
function loadStockGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () {
UICtrl.addGridRow(stockGridManager);
},
deleteHandler: function () {
var _grid = UICtrl.getGridManager('#stockMainGrid');
DataUtil.delSelectedRows({
action: 'epChangeForm/deleteEpChangeFormStockItem.ajax',
param: {},
gridManager: _grid,
idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
}
});
stockGridManager = UICtrl.grid("#stockMainGrid", {
columns: [
{
display: "部门", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left",
editor: {
type: "text"
}
},
{
display: "专属原材料/半成品/在制品/成品数量(张)", name: "desc", width: 300, minWidth: 60, type: "string", align: "left",
editor: {
type: "text"
}
},
{
display: "确认人", name: "confirm", width: 140, minWidth: 60, type: "string", align: "left",
editor: {
type: "text"
}
},
{
display: "日期", name: "date", width: 200, minWidth: 60, type: "date", align: "left",
editor: {
type: "text"
}
}
],
dataAction: "server",
url: web_app.name + '/epChangeForm/slicedEpChangeFormStockItems.ajax',
pageSize: 10,
usePager: true,
parms:{epChangeFormId:getId()},
toolbar: toolbarOptions,
enabledEdit: true,
width: "100%",
height: "200px",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
});
UICtrl.setSearchAreaToggle(stockGridManager);
}
/**
* 流程引擎回调设置打样的id
* @param value
*/
function setId(id) {
$("#id").val(id);
var _grid=UICtrl.getGridManager('#maingrid');
_grid.options.parms.epChangeFormId = id;
var _stockGrid=UICtrl.getGridManager('#stockMainGrid');
_stockGrid.options.parms.epChangeFormId = id;
}
/**
* 流程引擎获取打样申请id的回掉方法。
* @return
*/
function getId() {
return $("#id").val() || "";
}
function reloadGrid() {
gridManager.loadData();
stockGridManager.loadData();
}
function getExtendedData(processAction) {
//回退、打回、转交时,不需要验证必填项是否已经填写;
if (processAction == ProcessAction.BACK
|| processAction == ProcessAction.REPLENISH
|| processAction == ProcessAction.TRANSMIT) {
//不验证
$('#submitForm').attr('check', false);
}
var extendedData = {};
var _grid = UICtrl.getGridManager('#maingrid');
if (_grid) {
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: true
});
if (!datas) {
return false;
}
extendedData.EpChangeFormImplItem = Public.encodeJSONURI(datas);
}
var _stockGrid = UICtrl.getGridManager('#stockMainGrid');
if (_stockGrid) {
var datas = DataUtil.getGridData({
gridManager: _stockGrid,
isAllData: true
});
if (!datas) {
return false;
}
extendedData.epChangeFormStockItem = Public.encodeJSONURI(datas);
}
return extendedData;
}
<%@ 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,dateTime,combox,attachment,commonTree,comboDialog"/>
<x:script src='/biz/topsun/ep/change/epChangeFormDetail.js'/>
</head>
<body>
<div class="container-fluid">
<x:billTitle title="宝绅内部变更申请/通知单" needStatus="false" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<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="personMemberName"/>
<x:hidden name="statusId"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="fillinDate" required="false" readonly="true" label="日期" labelCol="2" maxLength="64" fieldCol="2"/>
<x:inputC name="brandName" required="true" label="品牌名称" labelCol="2" fieldCol="2" wrapper="select"/>
<x:hidden name="brandCode"/>
<x:inputC name="deptNameAndPersonName" required="false" readonly="true" label="变更申请部门/姓名" labelCol="2" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:checkboxListC name="reasonForChange" dictionary="reasonForChange" required="true" label="变更原因" labelCol="2" fieldCol="6"/>
<x:inputC name="otherReason" required="false" label="其他原因" labelCol="2" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:checkboxListC name="changeEffective" dictionary="changeEffective" required="true" label="生效日期" labelCol="2" fieldCol="10"/>
</div>
<x:title title="CURRENT SPEC 目前产品信息" name="group"/>
<div class="hg-form-row">
<x:inputC name="pd" required="true" label="产品代号" labelCol="2" maxLength="64" fieldCol="10" wrapper="select"/>
</div>
<div class="hg-form-row">
<x:inputC name="productName" required="true" label="产品名称" labelCol="2" fieldCol="10"/>
</div>
<div class="hg-form-row">
<x:inputC name="process" required="true" label="制程工艺" labelCol="2" fieldCol="10"/>
</div>
<div class="hg-form-row">
<x:textareaC name="material" required="true" label="原材料" labelCol="2" fieldCol="10" rows="3"/>
</div>
<div class="hg-form-row">
<x:inputC name="others" required="true" label="其他" labelCol="2" fieldCol="10"/>
</div>
<x:title title="REVISED SPEC 变更后产品信息" name="group"/>
<div class="hg-form-row">
<x:inputC name="changedPd" required="true" label="产品代号" labelCol="2" maxLength="64" fieldCol="10"/>
</div>
<div class="hg-form-row">
<x:inputC name="changedProductName" required="true" label="产品名称" labelCol="2" fieldCol="10"/>
</div>
<div class="hg-form-row">
<x:inputC name="changedProcess" required="true" label="制程工艺" labelCol="2" fieldCol="10"/>
</div>
<div class="hg-form-row">
<x:textareaC name="changedMaterial" required="true" label="原材料" labelCol="2" fieldCol="10" rows="3"/>
</div>
<div class="hg-form-row">
<x:inputC name="changedOthers" required="true" label="其他" labelCol="2" fieldCol="10"/>
</div>
</div>
<div class="blank_div clearfix"></div>
<x:title title="Implementation 执行人(版具/模具等)" name="group"/>
<div id="maingrid" style="margin: 2px;"></div>
<div class="blank_div clearfix"></div>
<x:title title="Stock / Inventory 库存" name="group"/>
<div id="stockMainGrid" style="margin: 2px;"></div>
</form>
</div>
</body>
</html>
var gridManager = null;
$(document).ready(function () {
initUI();
loadGrid();
})
function initUI() {
UICtrl.initDefaultLayout();
}
function loadGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: addHandler,
});
gridManager = UICtrl.grid("#maingrid", {
columns: [
{display: "单据编号", name: "billCode", width: 150, minWidth: 60, type: "string", align: "left"},
{display: "创建日期", name: "fillinDate", width: 120, 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"},
{display: "产品代号", name: "pd", width: 200, minWidth: 60, type: "string", align: "left"},
{display: "产品名称", name: "productName", width: 200, minWidth: 60, type: "string", align: "left"},
{display: "审批状态", name: "statusTextView", width: 100, minWidth: 60, type: "string", align: "left"},
],
dataAction: "server",
url: web_app.name + '/epChangeForm/slicedEpChangeFormList.ajax',
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
onDblClickRow: function (data, rowindex, rowobj) {
doView(data.id);
},
});
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: 'epChangeForm',
text: "新增变更申请/通知单",
url: web_app.name + '/epChangeForm/forwardEpChangeFormDetail.job'
});
}
function doView(id) {
UICtrl.addTabItem({
tabid: 'epChangeForm'+id,
text: "查看变更申请/通知单",
url: web_app.name + '/epChangeForm/showEpChangeFormDetail.job?bizId='+id+"&isReadOnly=true"
});
}
<%@ 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/ep/change/epChangeFormList.js'/>
</head>
<body>
<div class="container-fluid">
<div class="ui-hide">
</div>
<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="maingrid" style="margin: 2px;"></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
package com.huigou.topsun.ep.change.application;
import com.huigou.topsun.ep.change.domain.EpChangeForm;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/10:05
* @Description:
*/
public interface EpChangeFormApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/ep/change/epChangeForm.xml";
String PROCESS_DEFINITION_KEY = "epChangeFormProc";
EpChangeForm findEpChangeFormById(String id);
EpChangeForm saveEpChangeForm(EpChangeForm epChangeForm);
Map<String, Object> slicedEpChangeFormList(EpChangeFormQueryRequest queryRequest);
}
package com.huigou.topsun.ep.change.application;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:43
* @Description:
*/
public interface EpChangeFormImplItemApplication {
List<EpChangeFormImplItem> findByEpChangeFormId(String epChangeFormId);
void saveEpChangeFormImplItems(String epChangeFormId,List<EpChangeFormImplItem> items);
void deleteItems(List<String> ids);
}
package com.huigou.topsun.ep.change.application;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:44
* @Description:
*/
public interface EpChangeFormStockItemApplication {
List<EpChangeFormStockItem> findByEpChangeFormId(String epChangeFormId);
void saveEpChangeFormStockItems(String epChangeFormId,List<EpChangeFormStockItem> epChangeFormStockItems);
void deleteItems(List<String> ids);
}
package com.huigou.topsun.ep.change.application.impl;
import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.ep.change.application.EpChangeFormApplication;
import com.huigou.topsun.ep.change.application.EpChangeFormImplItemApplication;
import com.huigou.topsun.ep.change.application.EpChangeFormStockItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeForm;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import com.huigou.topsun.ep.change.repository.EpChangeFormRepository;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.util.ClassHelper;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/10:06
* @Description:
*/
@Service("epChangeFormApplication")
public class EpChangeFormApplicationImpl extends FlowBroker implements EpChangeFormApplication {
@Autowired
private EpChangeFormRepository epChangeFormRepository;
@Autowired
private EpChangeFormStockItemApplication changeFormStockItemApplication;
@Autowired
private EpChangeFormImplItemApplication changeFormImplItemApplication;
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
EpChangeForm epChangeForm = getBizEntity(EpChangeForm.class);
if (epChangeForm.isNew()) {
epChangeForm.setStatusId(BizBillStatus.APPLYING.getId());
} else {
epChangeForm = (EpChangeForm) commonDomainService.loadAndFillinProperties(epChangeForm);
}
epChangeForm = epChangeFormRepository.save(epChangeForm);
List<EpChangeFormStockItem> changeFormStockItems = getBizEntities(EpChangeFormStockItem.class, "epChangeFormStockItem");
changeFormStockItemApplication.saveEpChangeFormStockItems(epChangeForm.getId(),changeFormStockItems);
List<EpChangeFormImplItem> changeFormImplItems = getBizEntities(EpChangeFormImplItem.class, "EpChangeFormImplItem");
changeFormImplItemApplication.saveEpChangeFormImplItems(epChangeForm.getId(),changeFormImplItems);
return epChangeForm.getId();
}
@Override
protected Map<String, Object> getProcessBizParams(String bizId) {
// 返回业务数据给流程实例,
return ClassHelper.toMap(epChangeFormRepository.getOne(bizId));
}
/**
* 流程撤销事件
**/
@Override
protected void onRecallProcessInstance(DelegateExecution delegateExecution) {
String bizId = delegateExecution.getProcessBusinessKey();
// 修改单据状态为申请
updateStatus(bizId, BizBillStatus.APPLYING);
}
/**
* 任务完成前执行
*/
@Override
protected void onBeforeComplete(DelegateTask delegateTask) {
super.onBeforeComplete(delegateTask);
String bizId = delegateTask.getExecution().getProcessBusinessKey();
if (this.isApplyProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()) {
updateStatus(bizId, BizBillStatus.APPROVING);
}
}
/**
* 回收事件
**/
@Override
protected void onWithdraw(DelegateTask delegateTask, String destActivityId) {
super.onWithdraw(delegateTask, destActivityId);
String bizId = delegateTask.getExecution().getProcessBusinessKey();
if (destActivityId.equalsIgnoreCase("apply")) {
updateStatus(bizId, BizBillStatus.APPLYING);
}
}
@Transactional
private void updateStatus(String bizId, BizBillStatus status) {
Assert.hasText(bizId, CommonDomainConstants.ID_NOT_BLANK);
this.commonDomainService.updateStatus(EpChangeForm.class, bizId, status.getId());
}
@Override
protected void onEnd(DelegateExecution delegateExecution) {
super.onEnd(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
EpChangeForm epChangeForm = epChangeFormRepository.findOne(bizId);
epChangeForm.setStatusId(status.getId());
epChangeFormRepository.save(epChangeForm);
}
@Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
super.onAbortProcessInstance(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
EpChangeForm epChangeForm = epChangeFormRepository.findOne(bizId);
epChangeForm.setStatusId(BizBillStatus.ABORTED.getId());
epChangeFormRepository.save(epChangeForm);
}
/**
* @param delegateTask
* @param destActivityId 回退到的目标节点id
*/
@Override
protected void onBack(DelegateTask delegateTask, String destActivityId) {
//super.onBack(delegateTask, destActivityId);
if ("Apply".equalsIgnoreCase(destActivityId)) {
String bizId = delegateTask.getExecution().getProcessBusinessKey();
EpChangeForm epChangeForm = epChangeFormRepository.findOne(bizId);
epChangeForm.setStatusId(BizBillStatus.APPLYING.getId());
epChangeFormRepository.save(epChangeForm);
}
}
@Override
public EpChangeForm findEpChangeFormById(String id) {
return epChangeFormRepository.findOne(id);
}
@Override
public EpChangeForm saveEpChangeForm(EpChangeForm epChangeForm) {
return epChangeFormRepository.save(epChangeForm);
}
@Override
public Map<String, Object> slicedEpChangeFormList(EpChangeFormQueryRequest queryRequest) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "epChangeForm");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.putDictionary("status", BizBillStatus.getMap());
Map<String, Object> map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
return map;
}
}
package com.huigou.topsun.ep.change.application.impl;
import com.huigou.topsun.ep.change.application.EpChangeFormImplItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import com.huigou.topsun.ep.change.repository.EpChangeFormImplItemRepository;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:48
* @Description:
*/
@Service("epChangeFormImplItemApplication")
public class EpChangeFormImplItemApplicationImpl extends BaseApplication implements EpChangeFormImplItemApplication {
@Autowired
private EpChangeFormImplItemRepository changeFormImplItemRepository;
@Override
public List<EpChangeFormImplItem> findByEpChangeFormId(String epChangeFormId) {
return changeFormImplItemRepository.findByEpChangeFormId(epChangeFormId);
}
@Override
public void saveEpChangeFormImplItems(String epChangeFormId, List<EpChangeFormImplItem> items) {
for (EpChangeFormImplItem item : items) {
item.setEpChangeFormId(epChangeFormId);
}
changeFormImplItemRepository.save(items);
}
@Override
public void deleteItems(List<String> ids) {
for (String id : ids) {
changeFormImplItemRepository.delete(id);
}
}
}
package com.huigou.topsun.ep.change.application.impl;
import com.huigou.topsun.ep.change.application.EpChangeFormStockItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import com.huigou.topsun.ep.change.repository.EpChangeFormStockItemRepository;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:45
* @Description:
*/
@Service("epChangeFormStockItemApplication")
public class EpChangeFormStockItemApplicationImpl extends BaseApplication implements EpChangeFormStockItemApplication {
@Autowired
private EpChangeFormStockItemRepository changeFormStockItemRepository;
@Override
public List<EpChangeFormStockItem> findByEpChangeFormId(String epChangeFormId) {
return changeFormStockItemRepository.findByEpChangeFormId(epChangeFormId);
}
@Override
public void saveEpChangeFormStockItems(String epChangeFormId, List<EpChangeFormStockItem> epChangeFormStockItems) {
for (EpChangeFormStockItem epChangeFormStockItem : epChangeFormStockItems) {
epChangeFormStockItem.setEpChangeFormId(epChangeFormId);
}
changeFormStockItemRepository.save(epChangeFormStockItems);
}
@Override
public void deleteItems(List<String> ids) {
for (String id : ids) {
changeFormStockItemRepository.delete(id);
}
}
}
package com.huigou.topsun.ep.change.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.ep.change.application.EpChangeFormApplication;
import com.huigou.topsun.ep.change.application.EpChangeFormImplItemApplication;
import com.huigou.topsun.ep.change.application.EpChangeFormStockItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeForm;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
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 javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/10:05
* @Description:
*/
@Controller
@ControllerMapping("/epChangeForm")
public class EpChangeFormController extends CommonController {
@Override
protected String getPagePath() {
return "/biz/topsun/ep/change/";
}
@Resource
private EpChangeFormApplication epChangeFormApplication;
@Autowired
private EpChangeFormImplItemApplication changeFormImplItemApplication;
@Autowired
private EpChangeFormStockItemApplication changeFormStockItemApplication;
public String forwardEpChangeFormList(){
return forward("epChangeFormList");
}
public String slicedEpChangeFormList(){
SDO sdo = this.getSDO();
EpChangeFormQueryRequest queryRequest = sdo.toQueryRequest(EpChangeFormQueryRequest.class);
Map<String, Object> map = epChangeFormApplication.slicedEpChangeFormList(queryRequest);
return toResult(map);
}
public String forwardEpChangeFormDetail(){
this.putAttribute("processDefinitionKey", EpChangeFormApplication.PROCESS_DEFINITION_KEY);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("procUnitId", "Apply");
EpChangeForm epChangeForm = new EpChangeForm();
epChangeForm.setStatusId(BizBillStatus.APPLYING.getId());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
epChangeForm.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
return forward("epChangeFormDetail",epChangeForm);
}
public String showEpChangeFormDetail(){
SDO sdo = this.getSDO();
String id = sdo.getBizId();
EpChangeForm epChangeForm = epChangeFormApplication.findEpChangeFormById(id);
return forward("epChangeFormDetail",epChangeForm);
}
public String slicedEpChangeFormImplItems(){
SDO sdo = this.getSDO();
String epChangeFormId = sdo.getString("epChangeFormId");
return packGridDataAndResult(changeFormImplItemApplication.findByEpChangeFormId(epChangeFormId));
}
public String slicedEpChangeFormStockItems(){
SDO sdo = this.getSDO();
String epChangeFormId = sdo.getString("epChangeFormId");
return packGridDataAndResult(changeFormStockItemApplication.findByEpChangeFormId(epChangeFormId));
}
public String deleteEpChangeFormImplItem(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
changeFormImplItemApplication.deleteItems(ids);
return success();
}
public String deleteEpChangeFormStockItem(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
changeFormStockItemApplication.deleteItems(ids);
return success();
}
}
package com.huigou.topsun.ep.change.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/06/19/9:53
* @Description: 宝绅内部变更申请/通知单
*/
@Data
@Entity
@Table(name = "ep_change_form")
public class EpChangeForm extends FlowBillAbstractEntity {
/**
* 品牌编码
*/
@Column(name = "brand_code")
private String brandCode;
/**
* 品牌名称
*/
@Column(name = "brand_name")
private String brandName;
/**
* 变更原因
* REASON FOR CHANGE变更原因:
* □ BRAND CHANGE客户变更 □ BSN PROCESS CHANGE内部工艺变更 □ OTHERS其它
*/
@Column(name = "reason_for_change")
private String reasonForChange;
/**
* 生效日期:
* □ IMMEDIATE立即变更 □ RUNNING CHANGE 正常变更(用完后变更) £ SEASON换季更改
*/
@Column(name = "change_effective")
private String changeEffective;
//CURRENT SPEC 目前产品信息
/**
* 产品代号
*/
@Column(name = "pd")
private String pd;
/**
* 产品名称
*/
@Column(name = "product_name")
private String productName;
/**
* 制程工艺
*/
@Column(name = "process")
private String process;
/**
* 原材料
*/
@Column(name = "material")
private String material;
/**
* 其他
*/
@Column(name = "others")
private String others;
//变更后产品信息
/**
* 产品代号
*/
@Column(name = "changed_pd")
private String changedPd;
/**
* 产品名称
*/
@Column(name = "changed_product_name")
private String changedProductName;
/**
* 制程工艺
*/
@Column(name = "changed_process")
private String changedProcess;
/**
* 原材料
*/
@Column(name = "changed_material")
private String changedMaterial;
/**
* 其他
*/
@Column(name = "changed_others")
private String changedOthers;
@Override
protected String getCodeRuleId() {
return "epChangeForm";
}
}
package com.huigou.topsun.ep.change.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.util.Date;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:31
* @Description: 执行人(版具/模具等)
*/
@Data
@Entity
@Table(name = "ep_change_form_impl_item")
public class EpChangeFormImplItem extends AbstractEntity {
@Column(name = "ep_change_form_id")
private String epChangeFormId;
/**
* 部门
*/
@Column(name = "dept_name")
private String deptName;
/**
* 执行人
*/
@Column(name = "executor")
private String executor;
/**
* 签名确认
*/
@Column(name = "confirm")
private String confirm;
/**
* 日期
*/
@Column(name = "date")
private Date date;
}
package com.huigou.topsun.ep.change.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.util.Date;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:31
* @Description: 库存
*/
@Data
@Entity
@Table(name = "ep_change_form_stock_item")
public class EpChangeFormStockItem extends AbstractEntity {
@Column(name = "ep_change_form_id")
private String epChangeFormId;
/**
* 部门
*/
@Column(name = "dept_name")
private String deptName;
/**
* 专属原材料/半成品/在制品/成品数量(张)
*/
@Column(name = "desc")
private String desc;
/**
* 确认人
*/
@Column(name = "confirm")
private String confirm;
/**
* 日期
*/
@Column(name = "date")
private Date date;
}
package com.huigou.topsun.ep.change.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/10:14
* @Description:
*/
@Data
public class EpChangeFormQueryRequest extends QueryAbstractRequest {
private String billCode;
}
package com.huigou.topsun.ep.change.repository;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:38
* @Description:
*/
public interface EpChangeFormImplItemRepository extends JpaRepository<EpChangeFormImplItem,String> {
List<EpChangeFormImplItem> findByEpChangeFormId(String epChangeFormId);
}
package com.huigou.topsun.ep.change.repository;
import com.huigou.topsun.ep.change.domain.EpChangeForm;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/10:05
* @Description:
*/
public interface EpChangeFormRepository extends JpaRepository<EpChangeForm,String> {
}
package com.huigou.topsun.ep.change.repository;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/06/19/11:41
* @Description:
*/
public interface EpChangeFormStockItemRepository extends JpaRepository<EpChangeFormStockItem,String> {
List<EpChangeFormStockItem> findByEpChangeFormId(String epChangeFormId);
}
<?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="epChangeFormProc" name="宝绅内部变更申请/通知单" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{epChangeFormApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{epChangeFormApplication}"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="Apply" name="宝绅内部变更申请/通知单" activiti:formKey="epChangeForm/showEpChangeFormDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{epChangeFormApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{epChangeFormApplication}"></activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="Approve" name="宝绅内部变更申请/通知单审批" activiti:assignee="${assignee} " activiti:formKey="epChangeForm/showEpChangeFormDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{epChangeFormApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{epChangeFormApplication}"></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_epChangeFormProc">
<bpmndi:BPMNPlane bpmnElement="epChangeFormProc" id="BPMNPlane_epChangeFormProc">
<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="epChangeForm" label="EP销售订单" table="ep_change_form">
<sql-query>
select t.* from ep_change_form t
</sql-query>
<condition column="bill_code" name="billCode" type="java.lang.String" symbol="like" alias="t"/>
</query>
<query name="epSaleOrderItems" label="EP销售订单明细" table="ep_sale_order_item">
<sql-query>
select t.* from ep_sale_order_item t
</sql-query>
<condition column="ep_sale_order_id" name="epSaleOrderId" type="java.lang.String" symbol="=" alias="t"/>
</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