package cn.ksource.web.facade.bpbj;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.OVERAGE_LOSS;
|
import cn.ksource.beans.OVERAGE_LOSS_DETAIL;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.entity.WorkFlowSupportEntity;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
|
|
/**
|
* 报损报溢 实现层
|
* @author zf
|
* @date 2017年6月6日14:10:21
|
*
|
*/
|
@Service
|
public class OverageLossFacadeImpl implements OverageLossFacade {
|
|
@Resource
|
private BaseDao baseDao;
|
|
@Resource
|
private WorkFlowSupportService workFlowSupportService;
|
|
@Resource
|
private WorkOrderCodeService workOrderCodeService;
|
|
|
|
@Override
|
public PageInfo getOverageLossListData(PageInfo pageInfo,
|
Map<String, String> params) {
|
String sql = getOverageLossList(params);
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
@Override
|
public Integer getOverageLossListCount(Map<String, String> params) {
|
String sql ="select count(*) from ( "+getOverageLossList(params)+" ) t ";
|
return baseDao.queryForInteger(sql,params);
|
}
|
|
|
|
private String getOverageLossList(Map<String, String> params){
|
|
StringBuilder sql = new StringBuilder("select * from OVERAGE_LOSS a where 1=1 and state !=0");
|
|
//盘点单号
|
if(StringUtil.isNotBlank(params.get("gdbh"))){
|
sql.append(" and a.ORDER_CODE like :gdbh ");
|
params.put("gdbh", "%" + params.get("gdbh") + "%");
|
}
|
|
//工单名称
|
if(StringUtil.isNotBlank(params.get("gdmc"))){
|
sql.append(" and a.ORDER_NAME like :gdmc ");
|
params.put("gdmc", "%" + params.get("gdmc") + "%");
|
}
|
|
//业务类型
|
if(StringUtil.isNotBlank(params.get("ywlx"))){
|
sql.append(" and a.BUS_TYPE = :ywlx ");
|
params.put("ywlx",params.get("ywlx"));
|
}
|
|
//状态
|
if(StringUtil.isNotBlank(params.get("state"))){
|
sql.append(" and a.STATE = :state ");
|
params.put("state", params.get("state"));
|
}
|
//业务类型【1报损 2报溢 】
|
String bus_types=params.get("bus_types");
|
if (StringUtil.notEmpty(bus_types)) {
|
String[] keys = bus_types.split(",");
|
if (keys.length == 1) {
|
sql.append(" AND BUS_TYPE = :bus_type");
|
params.put("bus_type", keys[0]);
|
} else {
|
sql.append(" AND BUS_TYPE IN (");
|
for (int i = 0; i < keys.length; i++) {
|
sql.append(" :pri" + i);
|
sql.append(",");
|
params.put("pri" + i, keys[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
if (StringUtil.isNotBlank(params.get("startDate"))) {
|
sql.append(" and a.GMT_CREATE >= :startDate ");
|
params.put("startDate", params.get("startDate") + "000000");
|
}
|
|
//结束时间
|
if (StringUtil.isNotBlank(params.get("endDate"))) {
|
sql.append(" and a.GMT_CREATE <= :endDate ");
|
params.put("endDate", params.get("endDate") + "666666");
|
}
|
|
|
|
sql.append(" group by a.id order by a.GMT_CREATE desc");
|
return sql.toString();
|
}
|
|
@Override
|
public Map getOverageLossInfo(String id) {
|
SqlParameter param = new SqlParameter("id",id);
|
StringBuilder sql = new StringBuilder(" select * from STOCK_INVENTORY where id=:id ");
|
Map info = baseDao.queryForMap(sql.toString(), param);
|
|
sql.setLength(0);
|
sql.append(" SELECT a.ID,a.ORDER_NAME,a.STATE,b.INVENTORY_NUM,b.BOOK_NUM,b.LOSS_NUM,"+
|
" b.OVERAGE_NUM,a.CREATE_NAME,a.GMT_MODIFIED,b.NOTE,b.CATE_NUM,b.CATE_ID,"+
|
" c.CODE,c.LV1_NAME,c.LV2_NAME,c.LV3_NAME " +
|
" from STOCK_INVENTORY a LEFT JOIN SPARE_PART_DETAIL b ON a.ID = b.INVENTORY_ORDER_ID " +
|
" left join cmdb_ci_category c on c.id = b.CATE_ID "+
|
" where b.INVENTORY_ORDER_ID=:inventory_order_id ");
|
|
param.put("inventory_order_id",id);
|
List<Map> list = baseDao.queryForList(sql.toString(), param);
|
info.put("list", list);
|
|
return info;
|
}
|
|
@Override
|
public void editOverageLoss(Map<String, String> params) {
|
String id = params.get("id");
|
String dealId = params.get("dealId");
|
String dealName = params.get("dealName");
|
String bz = params.get("bz");
|
String create_id = params.get("create_id");
|
String create_name = params.get("create_name");
|
params.put("gmt_create", DateUtil.getCurrentDate14().toString());
|
params.put("gmt_modified", DateUtil.getCurrentDate14().toString());
|
String order_code = params.get("order_code");
|
StringBuilder sql = new StringBuilder();
|
if(StringUtil.isEmpty(order_code)){
|
params.put("order_code",workOrderCodeService.getOverageCode() );
|
params.put("state", "1");
|
sql.append(" INSERT INTO overage_loss (id,order_code,order_name,bus_type,note,flow_id,create_id,create_name,gmt_create,gmt_modified,state) ");
|
sql.append(" values (:id,:order_code,:order_name,:bus_type,:note,null,:create_id,:create_name,:gmt_create,:gmt_modified,:state) ");
|
//保存报村报溢
|
baseDao.execute(sql.toString(), params);
|
}else{
|
sql.setLength(0);
|
sql.append(" update overage_loss set order_name= :order_name,bus_type = :bus_type,note = :note,"+
|
"gmt_create = :gmt_create,gmt_modified = :gmt_modified,state = :state where id = :id");
|
baseDao.execute(sql.toString(), params);
|
}
|
|
|
|
if(StringUtil.isNotBlank(dealId)){
|
List<Map> userList = new ArrayList<Map>();
|
Map user = new HashMap();
|
user.put("USER_ID", dealId);
|
user.put("USER_NAME", dealName);
|
user.put("IS_ADMIN", 1);
|
userList.add(user);
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setOrderId(id);
|
support.setUserName(create_name);
|
support.setUserId(create_id);
|
support.setNote(bz);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_BSBY);
|
support.setNextNodeTemplateId(Constants.BSBYSH);
|
support.setNextUserList(userList);
|
workFlowSupportService.doOrderFlow(support);
|
OVERAGE_LOSS overage_loss=new OVERAGE_LOSS(id).getInstanceById();
|
overage_loss.setState(Constants.OVERAGE_LOSS_STATE_D);
|
overage_loss.update();
|
}
|
|
|
}
|
|
@Override
|
public void editOverageDetail(Map<String, String> params) {
|
String entity_id = params.get("id"); //备件表id
|
String partId = params.get("partId"); //
|
params.put("entity_id",entity_id);
|
params.put("partId", partId);
|
StringBuilder sql = new StringBuilder();
|
String id = StringUtil.getUUID();
|
String reason_key = params.get("reason_key");
|
String reason = params.get("reason");
|
params.put("id", id);
|
sql.append(" INSERT INTO overage_loss_detail (id,order_id,entity_id,reason,reason_key,note) ");
|
sql.append(" values (:id,:partId,:entity_id,:reason,:reason_key,:note) ");
|
//保存报村报溢
|
baseDao.execute(sql.toString(), params);
|
|
|
}
|
|
@Override
|
public List<Map> getConfigDataPid(String pid) {
|
String sql =("select t.ORDERNUM as code,t.CATEGORYNAME as name from CONFIG_DATA_DICTIONARY_CATEGORY t where t.PARENTID in ( select id from CONFIG_DATA_DICTIONARY_CATEGORY where categorykey = '"+pid+"') ");
|
return baseDao.queryForList(sql);
|
}
|
|
@Override
|
public void editOverageByPlEdit(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" update overage_loss_detail set reason_key=:reason_key,reason=:reason,note=:note where id= :id");
|
String detailIds = params.get("id"); //获得详情id
|
String reason_key = params.get("reason_key");
|
String reason = params.get("reason");
|
String note = params.get("note");
|
|
String [] detailAry = detailIds.split(",");
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for (int i = 0; i < detailAry.length; i++) {
|
SqlParameter p = new SqlParameter();
|
p.addValue("id", detailAry[i]).
|
addValue("reason_key", reason_key).
|
addValue("reason", reason).
|
addValue("note", note);
|
paramList.add(p);
|
}
|
baseDao.executeBatch(sql.toString(),paramList);
|
}
|
|
/**
|
* 提交报损报溢流程
|
* @param param
|
*/
|
@Override
|
public void sendToApprove(Map<String, String> param) {
|
List<Map> userList = new ArrayList<Map>();
|
Map user = new HashMap();
|
user.put("USER_ID", param.get("dealId"));
|
user.put("USER_NAME", param.get("dealName"));
|
user.put("IS_ADMIN", 1);
|
userList.add(user);
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setOrderId(param.get("orderId"));
|
support.setUserName(param.get("userName"));
|
support.setUserId("userId");
|
support.setNote(param.get("note"));
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_BSBY);
|
support.setNextNodeTemplateId(Constants.BSBYSH);
|
support.setNextUserList(userList);
|
workFlowSupportService.doOrderFlow(support);
|
|
String sql = " update OVERAGE_LOSS set state =2 where id=:orderId ";
|
baseDao.execute(sql, param);
|
}
|
|
/**
|
* 报损类型数据字典
|
* @param params
|
* @return
|
*/
|
@Override
|
public List getNoteKeyList(String categorykey){
|
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 = :categorykey\n" +
|
" ) ");
|
Map paramMap = new HashMap();
|
paramMap.put("categorykey",categorykey);
|
return baseDao.queryForList(sql.toString(),paramMap);
|
}
|
|
|
/**
|
* 保存报损备件
|
* @param param
|
*/
|
@Override
|
public void saveBsbj(HttpServletRequest request) {
|
String orderId=request.getParameter("orderId");
|
String spare_part_ids=request.getParameter("spare_part_ids");
|
String reason_key=request.getParameter("reason_key");
|
String reason=request.getParameter("reason");
|
String note=request.getParameter("note");
|
String[] spare_part_id_s = spare_part_ids.split(",");
|
for (int i = 0; i < spare_part_id_s.length; i++) {
|
String spare_part_id= spare_part_id_s[i];
|
OVERAGE_LOSS_DETAIL overage_loss_detail=new OVERAGE_LOSS_DETAIL();
|
overage_loss_detail.setEntity_id(spare_part_id);
|
overage_loss_detail.setOrder_id(orderId);
|
overage_loss_detail.setNote(note);
|
overage_loss_detail.setReason(reason);
|
overage_loss_detail.setReason_key(reason_key);
|
overage_loss_detail.insert();
|
}
|
|
}
|
/**
|
* 报损备件信息
|
*/
|
@Override
|
public List getSpareLoseListData(HttpServletRequest request){
|
String orderId=request.getParameter("orderId");
|
StringBuilder sql = new StringBuilder();
|
sql.append("SELECT\n" +
|
" ENTITY.ID,\n" +
|
" ENTITY.REASON,\n" +
|
" SPARE.ID SPARE_ID,\n" +
|
" SPARE.ENTITY_NO,\n" +
|
" SPARE.ASSET_NO,\n" +
|
" SPARE.MODEL_NO,\n" +
|
" SPARE.LOCATION,\n" +
|
" SPARE. NAME,\n" +
|
" CMDB.LV1_NAME,\n" +
|
" CMDB.LV2_NAME,\n" +
|
" CMDB.LV3_NAME\n" +
|
"FROM\n" +
|
" OVERAGE_LOSS_DETAIL ENTITY,\n" +
|
" SPARE_PART SPARE,\n" +
|
" CMDB_CI_CATEGORY CMDB\n" +
|
"WHERE\n" +
|
" ENTITY.ENTITY_ID = SPARE.id\n" +
|
"AND CMDB.ID = SPARE.CATE_ID\n" +
|
"AND ENTITY.ORDER_ID =:orderId" );
|
Map paramMap = new HashMap();
|
paramMap.put("orderId",orderId);
|
return baseDao.queryForList(sql.toString(),paramMap);
|
}
|
|
/**
|
* 保存批量更新报损类型
|
* @param request
|
* @param model
|
* @return
|
*/
|
@Override
|
public void editLoseByPlEdit(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" update overage_loss_detail set reason_key=:reason_key,reason=:reason,note=:note where id= :id");
|
String detailIds = params.get("id"); //获得详情id
|
String reason_key = params.get("reason_key");
|
String reason = params.get("reason");
|
String note = params.get("note");
|
|
String [] detailAry = detailIds.split(",");
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for (int i = 0; i < detailAry.length; i++) {
|
SqlParameter p = new SqlParameter();
|
p.addValue("id", detailAry[i]).
|
addValue("reason_key", reason_key).
|
addValue("reason", reason).
|
addValue("note", note);
|
paramList.add(p);
|
}
|
baseDao.executeBatch(sql.toString(),paramList);
|
}
|
/**
|
* 保存报损工单
|
* @param params
|
*/
|
@Override
|
public void editLossOrder(Map<String, String> params) {
|
String id = params.get("id");
|
String type = params.get("type");
|
String dealId = params.get("dealId");
|
String dealName = params.get("dealName");
|
String bz = params.get("bz");
|
String order_name = params.get("order_name");
|
String create_id = params.get("create_id");
|
String create_name = params.get("create_name");
|
String bus_type = params.get("bus_type");
|
String note = params.get("note");
|
if(StringUtil.isNotBlank(type) && StringUtil.isNotBlank(id)){
|
if(type.equals("xg")){
|
OVERAGE_LOSS overage_loss=new OVERAGE_LOSS(id).getInstanceById();
|
overage_loss.setOrder_name(order_name);
|
overage_loss.setNote(note);
|
overage_loss.setGmt_modified(DateUtil.getCurrentDate14());
|
overage_loss.update();
|
}
|
|
}else{
|
OVERAGE_LOSS overage_loss=new OVERAGE_LOSS();
|
overage_loss.setId(id);
|
overage_loss.setBus_type(1);
|
overage_loss.setCreate_id(create_id);
|
overage_loss.setOrder_name(order_name);
|
overage_loss.setCreate_name(create_name);
|
overage_loss.setGmt_create(DateUtil.getCurrentDate14());
|
overage_loss.setOrder_code(workOrderCodeService.getOverageCode() );
|
overage_loss.setState(Constants.OVERAGE_LOSS_STATE_X);
|
overage_loss.insert();
|
}
|
|
if(StringUtil.isNotBlank(dealId)){
|
|
|
List<Map> userList = new ArrayList<Map>();
|
Map user = new HashMap();
|
user.put("USER_ID", dealId);
|
user.put("USER_NAME", dealName);
|
user.put("IS_ADMIN", 1);
|
userList.add(user);
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setOrderId(id);
|
support.setUserName(create_name);
|
support.setUserId(create_id);
|
support.setNote(bz);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_BSBY);
|
support.setNextNodeTemplateId(Constants.BSBYSH);
|
support.setNextUserList(userList);
|
workFlowSupportService.doOrderFlow(support);
|
OVERAGE_LOSS overage_loss=new OVERAGE_LOSS(id).getInstanceById();
|
overage_loss.setState(Constants.OVERAGE_LOSS_STATE_D);
|
overage_loss.update();
|
}
|
|
}
|
/**
|
* 查询工单下明细
|
*/
|
@Override
|
public int loseListCount(Map<String, String> params) {
|
String orderId = params.get("orderId");
|
String sql="select count(*) from OVERAGE_LOSS_DETAIL where ORDER_ID=:orderId";
|
Map paramMap = new HashMap();
|
paramMap.put("orderId",orderId);
|
return baseDao.queryForInteger(sql, paramMap);
|
|
}
|
/**
|
* 查询工单下明细是否都设置了报损原因
|
*/
|
@Override
|
public int initDelivery(Map<String, String> params) {
|
String orderId = params.get("orderId");
|
String sql="select * from OVERAGE_LOSS_DETAIL where ORDER_ID=:orderId ";
|
Map paramMap = new HashMap();
|
paramMap.put("orderId",orderId);
|
List<Map> list = baseDao.queryForList(sql.toString(), paramMap);
|
if(list!=null&&list.size()>0){
|
for(Map cateMap:list){
|
String reason=ConvertUtil.obj2StrBlank(cateMap.get("reason"));
|
if(StringUtil.isEmpty(reason)){
|
return 1;
|
}
|
|
}
|
}
|
|
return 0;
|
|
}
|
|
@Override
|
public void editOverageStatus(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder();
|
sql.append("update overage_loss set state = 0 where id =:id");
|
baseDao.execute(sql.toString(),params);
|
}
|
|
@Override
|
public void editOverageLossEdit(Map<String, String> params) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" update overage_loss set order_name= :order_name,bus_type = :bus_type,note = :note,"+
|
"gmt_create = :gmt_create,gmt_modified = :gmt_modified,state = :state where id = :id");
|
baseDao.execute(sql.toString(), params);
|
}
|
}
|