package cn.ksource.web.facade.bpbj;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Stack;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import cn.ksource.beans.CMDB_CI_CATEGORY;
|
import cn.ksource.beans.GG_RECORD;
|
import cn.ksource.beans.SC_WORKFLOW_RELEASE;
|
import cn.ksource.beans.SPARE_PART;
|
import cn.ksource.beans.SPARE_PART_APPLY;
|
import cn.ksource.beans.SPARE_PART_DELIVERY;
|
import cn.ksource.beans.SPARE_PART_STORAGE;
|
import cn.ksource.beans.WORKFLOW_BASE;
|
import cn.ksource.beans.WORKFLOW_NODE;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.AjaxUtil;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.JsonUtil;
|
import cn.ksource.core.util.OrderCodeUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.util.TwoDimensionCode;
|
import cn.ksource.core.web.SysInfoMsg;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.core.workflow.NodeDealEntity;
|
import cn.ksource.core.workflow.NodeFinishEntity;
|
import cn.ksource.core.workflow.WorkflowBusinessService;
|
import cn.ksource.core.workflow.WorkflowCoreService;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.entity.WorkFlowSupportEntity;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
import cn.ksource.web.service.record.RecordService;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
|
@Service("DeliveryAuditingFacade")
|
public class DeliveryAuditingFacadeImpl implements DeliveryAuditingFacade {
|
|
@Resource
|
private BaseDao baseDao;
|
@Autowired
|
private WorkflowBusinessService workflowBusinessService;
|
@Autowired
|
private WorkOrderCodeService workOrderCodeService;
|
@Autowired
|
private WorkFlowSupportService workFlowSupportService;
|
@Autowired
|
private RecordService recordService;
|
@Resource
|
private WorkflowCoreService workflowCoreService;
|
/**
|
* 出库申请列表信息
|
* @return
|
*/
|
@Override
|
public List<Map> getStockList() {
|
return baseDao.queryForList(" select * from SPARE_PART where STATE=1 ");
|
}
|
/**
|
* 出库申请列表信息
|
* @param pageInfo
|
* @param params
|
* @return
|
*/
|
@Override
|
public PageInfo getDeliveryListData(Map<String, String> params,PageInfo pageInfo) {
|
StringBuilder sql = new StringBuilder();
|
Map paramMap = new HashMap();
|
|
sql.append("SELECT DISTINCT\n" +
|
" D.*, (\n" +
|
" SELECT\n" +
|
" ORDER_CODE\n" +
|
" FROM\n" +
|
" SPARE_PART_APPLY\n" +
|
" WHERE\n" +
|
" ID = D.APPLY_ORDER_ID\n" +
|
" ) ORDER_CODE_A\n" +
|
"FROM\n" +
|
" SPARE_PART_DELIVERY D\n" +
|
"LEFT JOIN WORKFLOW_NODE ON WORKFLOW_NODE.FLOWID = D.FLOW_ID\n" +
|
"WHERE\n" +
|
" (\n" +
|
" WORKFLOW_NODE.FLOWSTATE = '1'\n" +
|
" OR D.state IN ('3', '4')\n" +
|
" )\n" +
|
"AND D.state IN ('2', '3', '4')\n" +
|
"AND WORKFLOW_NODE.CURRENT_DEALER_ID = :userId" );
|
|
String order_code=params.get("order_code");
|
String order_name=params.get("order_name");
|
String state=params.get("state");
|
String start_time=params.get("start_time");
|
String end_time=params.get("end_time");
|
String userId=params.get("userId");
|
paramMap.put("userId", userId);
|
String customer_id=params.get("customer_id");
|
String order_code_A=params.get("order_code_A");
|
//关联工单
|
if (StringUtil.isNotBlank(order_code_A)) {
|
sql.append(" and D.APPLY_ORDER_ID in(select id from SPARE_PART_APPLY where order_code like :order_code_A) ");
|
paramMap.put("order_code_A", "%"+order_code_A.trim()+"%");
|
}
|
//出库类型KEY
|
String delivery_type_keys=params.get("delivery_type_keys");
|
if (StringUtil.notEmpty(delivery_type_keys)) {
|
String[] keys = delivery_type_keys.split(",");
|
if (keys.length == 1) {
|
sql.append(" AND D.DELIVERY_TYPE_KEY = :delivery_type_key");
|
paramMap.put("delivery_type_key", keys[0]);
|
} else {
|
sql.append(" AND D.DELIVERY_TYPE_KEY IN (");
|
for (int i = 0; i < keys.length; i++) {
|
sql.append(" :pri" + i);
|
sql.append(",");
|
paramMap.put("pri" + i, keys[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
//工单编号
|
if (StringUtil.isNotBlank(order_code)) {
|
sql.append(" and order_code like :order_code ");
|
paramMap.put("order_code","%"+ order_code.trim()+"%");
|
}
|
//工单名称
|
if (StringUtil.isNotBlank(order_name)) {
|
sql.append(" and order_name like :order_name ");
|
paramMap.put("order_name", "%"+order_name.trim()+"%");
|
}
|
//工单状态
|
if (StringUtil.isNotBlank(state)) {
|
sql.append(" and state=:state ");
|
paramMap.put("state", state);
|
}
|
//开始时间
|
if(StringUtil.isNotBlank(start_time)){
|
sql.append(" AND gmt_create>=:start_time");
|
paramMap.put("start_time", start_time+"000000");
|
}
|
//结束时间
|
if(StringUtil.isNotBlank(end_time)){
|
sql.append(" and gmt_create<=:end_time");
|
paramMap.put("end_time", end_time+"235959");
|
}
|
sql.append(" order by state asc,gmt_create desc ");
|
return baseDao.queryforSplitPageInfo(pageInfo,sql.toString(), paramMap);
|
}
|
/**
|
* 出库申请列表数量信息
|
* @param pageInfo
|
* @param params
|
* @return
|
*/
|
@Override
|
public int getDeliveryListCount(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder();
|
Map paramMap = new HashMap();
|
sql.append("SELECT DISTINCT\n" +
|
" COUNT(D.ID) \n" +
|
"FROM\n" +
|
" SPARE_PART_DELIVERY D\n" +
|
"LEFT JOIN WORKFLOW_NODE ON WORKFLOW_NODE.FLOWID = D.FLOW_ID\n" +
|
"WHERE\n" +
|
" (\n" +
|
" WORKFLOW_NODE.FLOWSTATE = '1'\n" +
|
" OR D.state IN ('3', '4')\n" +
|
" )\n" +
|
"AND D.state IN ('2', '3', '4')\n" +
|
"AND WORKFLOW_NODE.CURRENT_DEALER_ID = :userId" );
|
|
String order_code=params.get("order_code");
|
String order_name=params.get("order_name");
|
String state=params.get("state");
|
String start_time=params.get("start_time");
|
String end_time=params.get("end_time");
|
String userId=params.get("userId");
|
paramMap.put("userId", userId);
|
String customer_id=params.get("customer_id");
|
String order_code_A=params.get("order_code_A");
|
//关联工单
|
if (StringUtil.isNotBlank(order_code_A)) {
|
sql.append(" and D.APPLY_ORDER_ID in(select id from SPARE_PART_APPLY where order_code like :order_code_A) ");
|
paramMap.put("order_code_A", "%"+order_code_A.trim()+"%");
|
}
|
//出库类型KEY
|
String delivery_type_keys=params.get("delivery_type_keys");
|
if (StringUtil.notEmpty(delivery_type_keys)) {
|
String[] keys = delivery_type_keys.split(",");
|
if (keys.length == 1) {
|
sql.append(" AND D.DELIVERY_TYPE_KEY = :delivery_type_key");
|
paramMap.put("delivery_type_key", keys[0]);
|
} else {
|
sql.append(" AND D.DELIVERY_TYPE_KEY IN (");
|
for (int i = 0; i < keys.length; i++) {
|
sql.append(" :pri" + i);
|
sql.append(",");
|
paramMap.put("pri" + i, keys[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
//工单编号
|
if (StringUtil.isNotBlank(order_code)) {
|
sql.append(" and order_code like :order_code ");
|
paramMap.put("order_code","%"+ order_code.trim()+"%");
|
}
|
//工单名称
|
if (StringUtil.isNotBlank(order_name)) {
|
sql.append(" and order_name like :order_name ");
|
paramMap.put("order_name", "%"+order_name.trim()+"%");
|
}
|
//工单状态
|
if (StringUtil.isNotBlank(state)) {
|
sql.append(" and state=:state ");
|
paramMap.put("state", state);
|
}
|
//开始时间
|
if(StringUtil.isNotBlank(start_time)){
|
sql.append(" AND gmt_create>=:start_time");
|
paramMap.put("start_time", start_time+"000000");
|
}
|
//结束时间
|
if(StringUtil.isNotBlank(end_time)){
|
sql.append(" and gmt_create<=:end_time");
|
paramMap.put("end_time", end_time+"235959");
|
}
|
sql.append(" order by gmt_create desc ");
|
int count = baseDao.queryForInteger(sql.toString(), paramMap);
|
return count;
|
|
}
|
/**
|
* 提交申请入库
|
* @param request
|
* @return
|
*/
|
@Override
|
public String doApproveAssign(HttpServletRequest request) {
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userid=user.get("ID").toString();
|
String usernameString=user.get("ZSXM").toString();
|
String orderId = request.getParameter("orderId");
|
String bz= request.getParameter("note");
|
String note_key= request.getParameter("note_key");
|
String note_val= request.getParameter("note_val");
|
String jg= request.getParameter("isNext");
|
String sqlString="SELECT\n" +
|
" WORKFLOW_BASE.id flowid,\n" +
|
" WORKFLOW_NODE.CURRENT_DEALER_ID userid,\n" +
|
" WORKFLOW_NODE.CURRENT_DEALER_NAME username,\n" +
|
" WORKFLOW_NODE.ID nodeid\n" +
|
"FROM\n" +
|
" WORKFLOW_BASE,\n" +
|
" WORKFLOW_NODE\n" +
|
"WHERE\n" +
|
" WORKFLOW_BASE.BUSINESS_ID =:business_id\n" +
|
"AND WORKFLOW_BASE.id = WORKFLOW_NODE.FLOWID\n" +
|
"AND WORKFLOW_NODE.FLOWSTATE = 1 and WORKFLOW_NODE.CURRENT_DEALER_ID=:userid";
|
Map paramMap = new HashMap();
|
paramMap.put("business_id",orderId);
|
paramMap.put("userid",userid);
|
List<Map> queryForList = baseDao.queryForList(sqlString, paramMap);
|
paramMap.put("orderId", orderId);
|
if(queryForList!=null && queryForList.size()>0){
|
//提交
|
String FlowId=queryForList.get(0).get("flowid").toString();
|
String NodeId=queryForList.get(0).get("nodeid").toString();
|
String UserName=queryForList.get(0).get("username").toString();
|
String Userid=queryForList.get(0).get("userid").toString();
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setOrderId(orderId);
|
support.setNodeId(NodeId);
|
support.setUserName(UserName);
|
support.setUserId(Userid);
|
support.setFlowId(FlowId);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CKLC);
|
support.setNote(bz);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(support.getFlowId()).getInstanceById();
|
WORKFLOW_NODE node = new WORKFLOW_NODE(support.getNodeId()).getInstanceById();
|
node.setNote_key(note_key);
|
node.setNote_val(note_val);
|
node.setAnswer_time(DateUtil.getCurrentDate14());
|
node.update();
|
//结束审批,更新流程实例表状态
|
workflowCoreService.finishWorkFlow(base);
|
//更新业务表状态
|
SPARE_PART_DELIVERY spare_part_delivery = new SPARE_PART_DELIVERY(orderId).getInstanceById();
|
if(jg.equals("1")){
|
spare_part_delivery.setState(Constants.SPARE_PART_DELIVERY_STATE_T);
|
String apply_entity="update SPARE_PART_APPLY_ENTITY set STATE='2' where DELIVERY_ORDER_ID=:orderId and STATE=1";
|
paramMap.put("orderId", orderId);
|
baseDao.execute(apply_entity, paramMap);
|
}else{
|
spare_part_delivery.setState(Constants.SPARE_PART_DELIVERY_STATE_N);
|
}
|
|
spare_part_delivery.update();
|
//更新申请单状态
|
String apply_order_id=spare_part_delivery.getApply_order_id();
|
if(StringUtil.isNotBlank(apply_order_id)){
|
SPARE_PART_APPLY spare_part_apply=new SPARE_PART_APPLY(apply_order_id).getInstanceById();
|
if(jg.equals("1")){
|
spare_part_apply.setState(Constants.SPARE_PART_APPLY_STATE_Q);
|
}else{
|
spare_part_apply.setState(Constants.SPARE_PART_APPLY_STATE_N);
|
}
|
spare_part_apply.update();
|
}
|
//更新备件表成功状态设为已出库,失败设为正常
|
String sqlString2="select * from SPARE_PART_APPLY_ENTITY where DELIVERY_ORDER_ID=:orderId and STATE=2 ";
|
List<Map> apply_entity_list=baseDao.queryForList(sqlString2, paramMap);
|
if(apply_entity_list!=null && apply_entity_list.size()>0){
|
for(Map spare:apply_entity_list){
|
String entity_id=ConvertUtil.obj2StrBlank(spare.get("entity_id"));
|
String spare_part="update SPARE_PART set STATE=:state where id=:entity_id";
|
if(jg.equals("1")){
|
paramMap.put("state", Constants.SPARE_PART_STATE_C);
|
}else{
|
paramMap.put("state", Constants.SPARE_PART_STATE_Z);
|
}
|
paramMap.put("entity_id", entity_id);
|
baseDao.execute(spare_part, paramMap);
|
}
|
|
}
|
|
}
|
|
return "";
|
}
|
/**
|
* 审核不同意数据字典
|
* @param params
|
* @return
|
*/
|
@Override
|
public List getNoteKeyList(){
|
StringBuilder sql = new StringBuilder();
|
sql.append("SELECT\n" +
|
" id,categoryname name\n" +
|
"FROM\n" +
|
" CONFIG_DATA_DICTIONARY_CATEGORY\n" +
|
"WHERE\n" +
|
" parentid IN (\n" +
|
" SELECT\n" +
|
" id\n" +
|
" FROM\n" +
|
" CONFIG_DATA_DICTIONARY_CATEGORY\n" +
|
" WHERE\n" +
|
" categorykey = 'RKSH_REFUSE'\n" +
|
" ) ");
|
|
return baseDao.queryForList(sql.toString());
|
}
|
}
|