package psdi.app.iface.mobile;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.util.MXException;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 日常维修工单
 * createBy liuxq  2023-5-22
 * 删掉了没有的jar包
 */
@Path("/udworkorder")
public class UdworkorderAppService {
    /**
     * 流程调用
     * 启动流程
     */
    @POST
    @Path("/startWF")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject startWF(JSONObject jsonObject) {
        JSONObject returnDate = new JSONObject();
        //传参
        String processname ="" ;//工作流程名
        String mbo ="" ;//表名
        String key ="" ;//表ID
        String keyValue ="" ;//表ID值
        String LANGCODE = "";//语音环境
        try{
            MboSetRemote WORKORDERSET = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
            LANGCODE = jsonObject.getString("LANGCODE");
            String APPNAME = (String) jsonObject.getString("APPNAME");
            String zxStr = jsonObject.getString("ZX")==null?"1":jsonObject.getString("ZX");
            int zx = Integer.parseInt(zxStr);//正向 1  反向(驳回) 0
            String loginid = (String) jsonObject.getString("USERID"); //登录人编号
            String desc = (String) jsonObject.getString("DESC"); //
            keyValue = String.valueOf(jsonObject.getInteger("OBJID")); //主表id值
            WORKORDERSET.setWhere("UDWORKORDERID="+keyValue+"");
            WORKORDERSET.reset();
            //2024-12-20 aw
            if(!WORKORDERSET.isEmpty()){
                String str="";
                MboSetRemote showactualmaterial = WORKORDERSET.getMbo(0).getMboSet("SHOWACTUALMATERIAL"); //日常维修工单-实际物料信息集合
                String deptType = WORKORDERSET.getMbo(0).getString("ASSET.DEPTSDSYBM.DEPTTYPE"); //部门类
                String siteid = WORKORDERSET.getMbo(0).getString("SITEID"); //地点
                if(!showactualmaterial.isEmpty()){
                    int count = showactualmaterial.count(); //条目
                    for(int i=0;i<count;i++){
                        MboRemote showactualmaterialMbo = showactualmaterial.getMbo(i); //日常维修工单-实际物料信息
                        double jjcksl = showactualmaterialMbo.getDouble("JJCKSL");//留用旧件使用数量
                        double itemqty = showactualmaterialMbo.getDouble("ITEMQTY");//领料单使用数量
                        String itemnum = showactualmaterialMbo.getString("ITEMNUM"); //物料编码
                        String sql=" ITEMNUM='"+itemnum+"' and DEPTNUM='"+deptType+"' and SITEID='"+siteid+"'";
                        MboSetRemote udinventory = MXServer.getMXServer().getMboSet("UDINVENTORY", MXServer.getMXServer().getSystemUserInfo());//日常维修工单-计划与实际情况子表 选择物料
                        udinventory.setWhere(sql);
                        udinventory.reset();
                        if(!udinventory.isEmpty()){
                            double jjhsyl = udinventory.getMbo(0).getDouble("JJHSYL"); //旧件留用数量
                            double dqyl = udinventory.getMbo(0).getDouble("CURBALTOTAL");//当前余量
                            if(jjcksl>jjhsyl){
                                str="流程发起失败，请检查实际消耗的备件，在SPMS系统是否已出库/旧件数量是否满足!";
                                returnDate.put("errcode","0507");
                                returnDate.put("errmsg",str);
                                return returnDate;
                            } else if (itemqty>dqyl) {
                                str="流程发起失败，请检查实际消耗的备件，在SPMS系统是否已出库/旧件数量是否满足!";
                                returnDate.put("errcode","0507");
                                returnDate.put("errmsg",str);
                                return returnDate;
                            }
                        }else {
                            str="流程发起失败，请检查实际消耗的备件，在SPMS系统是否已出库/旧件数量是否满足!";
                            returnDate.put("errcode","0507");
                            returnDate.put("errmsg",str);
                            return returnDate;
                        }
                    }
                }
            }
            //2024-12-20 end
            if("UDREPORT".equalsIgnoreCase(APPNAME)){
                processname ="UDREPORT" ; //去工作流设计器中查看processaname字段
                mbo ="UDREPORT";
                key ="UDREPORTID";
            }else if("UDWORKORDER".equalsIgnoreCase(APPNAME)){
                processname ="UDWORKORDE" ;
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }else if("UDPMWOORDER".equalsIgnoreCase(APPNAME)){
                processname ="UDPMWOORDE" ;
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }else if("UDDXGD".equalsIgnoreCase(APPNAME)){
                processname ="UDDXGD" ;
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }
            boolean isActive=WorkFlowUtil.isWFActive(mbo,keyValue);
            String result ="";
            if(!isActive){
                result=WorkFlowUtil.startWF(processname,mbo,keyValue,key,loginid); //启动流程
            }else{
                //测试
//                zx=1;
//                desc="sss";
//                loginid="0111394";
                result = WorkFlowUtil.wfGoOn(processname,mbo,keyValue,key,zx,desc,loginid); //审批流程
            }

            JSONObject resObj = (JSONObject) JSONObject.parse(result);
            String code = resObj.getString("code");
            if(resObj!=null && code !=null && !"".equals(code)){
                if("20001".equals(code)){
                    WORKORDERSET.setWhere("UDWORKORDERID="+keyValue+"");
                    WORKORDERSET.reset();
                    String SPMSSTATUS = "";
                    if(null!=WORKORDERSET && !WORKORDERSET.isEmpty()){
                        MboRemote woMbo = WORKORDERSET.getMbo(0);
                        SPMSSTATUS = woMbo.getString("SPMSSTATUS");
                    }
                    if(SPMSSTATUS!=null && !"".equals(SPMSSTATUS)){
                        if(SPMSSTATUS.contains("udworkorder_inv")){
                            String itemnum = SPMSSTATUS.substring("udworkorder_inv".length());
//                            returnDate.put("errmsg",itemnum+"material is not in the list");
                            returnDate.put("errmsg",itemnum+"-"+new AMobileConfig().getTipByLang("udworkorder","startWF","errmsg1",LANGCODE));
                        } else if (SPMSSTATUS.contains("udworkorder_cub")) {
                            String itemnum = SPMSSTATUS.substring("udworkorder_cub".length());
//                          returnDate.put("errmsg",itemnum+"materials quantity insufficient in the list");
                            returnDate.put("errmsg",itemnum+"-"+new AMobileConfig().getTipByLang("udworkorder","startWF","errmsg2",LANGCODE));
                        }else{
//                          returnDate.put("errmsg","start workflow failure,Please Contact Admin");
                            returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowStart","failure","errmsg",LANGCODE));
                        }
                    }
                    returnDate.put("errcode","201");
                    returnDate.put("errmsg",resObj.getString("errorMsg"));
                }else if("10000".equals(code)){
                    returnDate.put("errcode","200");
//                    returnDate.put("errmsg","start workflow success");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowStart","success","errmsg",LANGCODE));
                }
            }
        }catch (Exception e){
            System.out.println("------------failureMessage="+e.getMessage());
            returnDate.put("errcode","500");
//          returnDate.put("errmsg","start workflow failure,Please Contact Admin");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowStart","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 流程调用
     * 流程审批
     */
    @POST
    @Path("/approveWF")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject approveWF(JSONObject jsonObject) {
        JSONObject returnDate = new JSONObject();
        //传参
        String processname ="" ;//工作流程名
        String mbo ="" ;//表名
        String key ="" ;//表ID
        String keyValue ="" ;//表ID值
        int zx ; //1同意，0驳回
        String desc = "";//审批意见
        String loginid = "";//登录人
        String LANGCODE = "";//语音环境
        try{
            String APPNAME = (String) jsonObject.getString("APPNAME");
            LANGCODE = jsonObject.getString("LANGCODE");
            keyValue = String.valueOf(jsonObject.getInteger("OBJID")); //主表id值
            loginid = (String) jsonObject.getString("USERID"); //登录人编号
            zx = Integer.parseInt(jsonObject.getString("ZX"));
            desc = (String) jsonObject.getString("DESC"); //
            if("UDREPORT".equalsIgnoreCase(APPNAME)){
                processname ="UDREPORT" ;//缺陷提报
                mbo ="UDREPORT";
                key ="UDREPORTID";
            }else if("UDWORKORDER".equalsIgnoreCase(APPNAME)){
                processname ="UDWORKORDE" ;//日常维修工单
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }else if("UDPMWOORDER".equalsIgnoreCase(APPNAME)){
                processname ="UDPMWOORDE" ;//预防性维护工单
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }else if("UDDXGD".equalsIgnoreCase(APPNAME)){
                processname ="UDDXGD" ;//大修工单
                mbo ="UDWORKORDER";
                key ="UDWORKORDERID";
            }
            String result = WorkFlowUtil.wfGoOn(processname,mbo,keyValue,key,zx,desc,loginid); //审批流程
            JSONObject resObj = (JSONObject) JSONObject.parse(result);
            String code = resObj.getString("code");
            String UDWORKORDERID = resObj.getString("UDWORKORDERID");//工单ID
            //--------------------------------------------------------------------
            MboSetRemote udworkorderSet = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
            udworkorderSet.setWhere("UDWORKORDERID="+UDWORKORDERID+"");
            udworkorderSet.reset();
            String STATUS = ""; //流程状态
            if(udworkorderSet!=null && !udworkorderSet.isEmpty()){
               MboRemote udworkorderMbo = udworkorderSet.getMbo(0);
               STATUS = udworkorderMbo.getString("STATUS");
            }
            //--------------------------------------------------------------------
            if(resObj!=null && code !=null && !"".equals(code)){
                if("20001".equals(code)){
                    returnDate.put("errcode","201");
//                    returnDate.put("errmsg","You are not the current process task assignor");//你不是当前审批人
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprove","person","errmsg",LANGCODE));
                }else if("10000".equals(code)){
                    //若该工单是从点检问题过来的，则工单完成，即该问题关闭
                    if(STATUS!=null && !"".equalsIgnoreCase(STATUS) && "COMP".equalsIgnoreCase(STATUS) || "CLOSE".equalsIgnoreCase(STATUS)){
                        //更新该条记录状态  PERPLAN
                        MboSetRemote SPOTRUNLINESSet = MXServer.getMXServer().getMboSet("SPOTRUNLINES",MXServer.getMXServer().getSystemUserInfo());
                        SPOTRUNLINESSet.setWhere(" UDWORKORDERID="+UDWORKORDERID+"");
                        SPOTRUNLINESSet.reset();
                        if(SPOTRUNLINESSet!=null && !SPOTRUNLINESSet.isEmpty()){
                            MboRemote spotrunlineMbo = SPOTRUNLINESSet.getMbo(0);
                            spotrunlineMbo.setValue("PERPLAN","CLOSELINE",2L);//赋值--已关闭该问题
                            spotrunlineMbo.getThisMboSet().save();
                            spotrunlineMbo.getThisMboSet().close();
                        }
                    }
                    returnDate.put("errcode","200");
//                    returnDate.put("errmsg","approve workflow success");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprove","success","errmsg",LANGCODE));
                }else if("20002".equals(code)){
                    returnDate.put("errcode","500");
//                    returnDate.put("errmsg","Start Workflow Failure,Please Contact Admin");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprove","failure","errmsg",LANGCODE));
                }
            }

        }catch (Exception e){
            System.out.println("------------failureMessage="+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","approve workflow failure,Please Contact Admin");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprove","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 流程调用
     * 流程审批人
     */
    @POST
    @Path("/WFAssignMent")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject wFAssignMent(JSONObject jsonObject) {
        JSONObject returnDate = new JSONObject();
        //传参
        String key ="" ;//表ID
        String keyValue ="" ;//表ID值
        String LANGCODE = "";//语音环境
        try{
            LANGCODE = jsonObject.getString("LANGCODE");
            String APPNAME = (String) jsonObject.getString("APPNAME");
            keyValue = String.valueOf(jsonObject.getInteger("OBJID")); //主表id值
            if("UDREPORT".equalsIgnoreCase(APPNAME)){
                key ="UDREPORT"; //这里传表名
            }else if("UDWORKORDER".equalsIgnoreCase(APPNAME)){
                key ="UDWORKORDER";
            }else if("UDPMWOORDER".equalsIgnoreCase(APPNAME)){
                key ="UDWORKORDER";
            }else if("UDDXGD".equalsIgnoreCase(APPNAME)){
                key ="UDWORKORDER";
            }
            JSONObject resObj = WorkFlowUtil.wfAssignMent(keyValue,key); //获取流程审批人
            String code = resObj.getString("code");
            if(resObj!=null && code !=null && !"".equals(code)){
                if("20001".equals(code)){
                    returnDate.put("errcode","201");
//                  returnDate.put("errmsg","No to-do tasks");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprove","nextPerson","errmsg",LANGCODE));
                }else if("10000".equals(code)){
//                  returnDate.put("result",resObj);
                    returnDate.put("errcode","200");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprovePerson","success","errmsg",LANGCODE));
                    returnDate.put("result",resObj.getJSONArray("person"));
                }
            }
        }catch (Exception e){
            System.out.println("------------failureMessage="+e.getMessage());
            returnDate.put("errcode","500");
//          returnDate.put("errmsg","view failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("flowApprovePerson","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }


    //--日常维修工单，触发领料申请 start------------------------------------------------------------------------------------------------
    @POST
    @Path("/createLld")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject CreateLld(JSONObject receJSObj) throws RemoteException, MXException {
        JSONObject returnDate = new JSONObject();
        String LANGCODE = receJSObj.getString("LANGCODE");;//语音环境
        //app传参---start---------------------------------------
        Integer UDWORKORDERID = receJSObj.getInteger("UDWORKORDERID");//工单表ID
        JSONArray dataArr = receJSObj.getJSONArray("PLANMATER");//传工单下勾选的物料子表ID  PLANMATER=[1,2,3,4,5]
        //app传参---end---------------------------------------
        //解析勾选的物料表id
        String strID = "";
        if(dataArr!=null && !dataArr.isEmpty()){
            for(int i=0;i<dataArr.size();i++){
                strID +=dataArr.get(i) + ",";
            }
            strID = strID.trim();
            strID = strID.substring(0,strID.length()-1);
        }else{
            returnDate.put("errcode","201");
//            returnDate.put("errmsg","Please select a material first");//请先勾选物料
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("udworkorder","createLld","errmsg1",LANGCODE));
            return returnDate;
        }
        //----解析结束-----------------------------------------------------------
        String WORKORDER = "";//工单编号 1404
        String WORKSHOP = "";//车间编号
        String CREATEBY = "";//创建人工号
        String DISPLAYNAME = "";//创建人名称
        String DEPARTMENT = "";//创建人部门
        String DIRECTOR = "";//创建人部门负责人
        String KOSTL = "";//成本中心
        String ORGID = "";//组织
        String SITEID = "";//地点
        String WOAPPNAME = "UDWORKORDER";//日常维修工单触发过来传：UDWORKORDER  预防性工单触发传：UDPMWOORDER
        //先查询日常维修工单的相关信息
        MboSetRemote udWorkOrderSet = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
        udWorkOrderSet.setWhere(" UDWORKORDERID="+UDWORKORDERID+"");//int 类型
        udWorkOrderSet.reset();
        if(udWorkOrderSet!=null && !udWorkOrderSet.isEmpty()){
            MboRemote udworkorderMbo = udWorkOrderSet.getMbo(0);
            WORKORDER = udworkorderMbo.getString("WONUM");//日常维修工单编号
            String ASSETNUM = udworkorderMbo.getString("ASSETNUM");//日常维修工单-资产
            CREATEBY = udworkorderMbo.getString("CREATEBY");//日常维修工单-创建人
            KOSTL = udworkorderMbo.getString("KOSTL");//日常维修工单-成本中心
            WOAPPNAME = udworkorderMbo.getString("APPNAME");//日常维修工单-应用区分
            if(WOAPPNAME.contains("APP")){
                WOAPPNAME = WOAPPNAME.substring(0,WOAPPNAME.lastIndexOf("APP"));
            }
            ORGID = udworkorderMbo.getString("ORGID");//组织
            SITEID = udworkorderMbo.getString("SITEID");//地点
            //查询资产表
            MboSetRemote assetSet = MXServer.getMXServer().getMboSet("ASSET",MXServer.getMXServer().getSystemUserInfo());
            assetSet.setWhere(" ASSETNUM='"+ASSETNUM+"'");
            assetSet.reset();
            if(assetSet!=null && !assetSet.isEmpty()){
                MboRemote assetMbo = assetSet.getMbo(0);
                WORKSHOP = assetMbo.getString("SDSYBM");//资产对应的使用部门
            }
            //查询仓库
          /*  MboSetRemote LOCATIONSSet = MXServer.getMXServer().getMboSet("LOCATIONS",MXServer.getMXServer().getSystemUserInfo());
            LOCATIONSSet.setWhere(" SITEID='"+SITEID+"' and TYPE='STOREROOM'");
            LOCATIONSSet.reset();
            if(LOCATIONSSet!=null && !LOCATIONSSet.isEmpty()){
                MboRemote locMbo = LOCATIONSSet.getMbo(0);
                LOCNUM = locMbo.getString("LOCATION");//该地点下的仓库
            }*/
            //查询人员
            MboSetRemote PERSONSet = MXServer.getMXServer().getMboSet("PERSON",MXServer.getMXServer().getSystemUserInfo());
            PERSONSet.setWhere(" PERSONID='"+CREATEBY+"'");
            PERSONSet.reset();
            if(PERSONSet!=null && !PERSONSet.isEmpty()){
                MboRemote personMbo = PERSONSet.getMbo(0);
                DISPLAYNAME = personMbo.getString("DISPLAYNAME");//人员名称
                DEPARTMENT = personMbo.getString("DEPARTMENT");//人员部门
            }
            //查询部门
            MboSetRemote DEPTSet = MXServer.getMXServer().getMboSet("DEPT",MXServer.getMXServer().getSystemUserInfo());
            DEPTSet.setWhere(" deptnum='"+WORKSHOP+"'"); //和车间保持一致，不通过创建人获取
            DEPTSet.reset();
            if(DEPTSet!=null && !DEPTSet.isEmpty()){
                MboRemote deptMbo = DEPTSet.getMbo(0);
                DIRECTOR = deptMbo.getString("DIRECTOR");//部门负责人
            }
        }

        //1、查询工单下-计划物料表数据
        MboSetRemote udPlmawtSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
        udPlmawtSet.setWhere(" UDPLMAID in("+strID+")");//int 类型
        udPlmawtSet.reset();
        //领料申请单主表
        MboSetRemote udLLDSet = MXServer.getMXServer().getMboSet("UDLLD",MXServer.getMXServer().getSystemUserInfo());
        //领料申请单子表
        MboSetRemote udLLDLineSet = MXServer.getMXServer().getMboSet("UDLLDLINE",MXServer.getMXServer().getSystemUserInfo());
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm");
        if(udPlmawtSet!=null && !udPlmawtSet.isEmpty()){
            //从工单过来的物料
            for(int i=0;i<udPlmawtSet.count();i++){
                MboRemote udplmawtMbo = udPlmawtSet.getMbo(i);
                Integer UDPLMAWTID = udplmawtMbo.getInt("UDPLMAID");//表ID
                Integer PARENTID = udplmawtMbo.getInt("PARENTID");//主表ID
                String LINENUM = udplmawtMbo.getString("LINENUM");//行号
                String ITEMNUM = udplmawtMbo.getString("ITEMNUM");//物料编号
                String DESCRIPTION = udplmawtMbo.getString("DESCRIPTION");//物料名称
                String BINNUM = udplmawtMbo.getString("BINNUM");//储位编号
                Integer UDKCID = udplmawtMbo.getInt("UDKCID");//库存表ID--为了关联库存余量
                Double ITEMQTY = udplmawtMbo.getDouble("ITEMQTY");//需求数量
                String ITEMQTYUNTI = udplmawtMbo.getString("ITEMQTYUNTI");//需求数量单位
                Double TFITEMQTY = udplmawtMbo.getDouble("TFITEMQTY");//需求数量转换后的数量
                String TFITEMQTYUNIT = udplmawtMbo.getString("TFITEMQTYUNIT");//需求数量单位转换后的单位
                Double APPRQUANTITY = udplmawtMbo.getDouble("APPRQUANTITY");//批准数量
                String REMARKS = udplmawtMbo.getString("REMARKS");//备注
                String UDYDLX = udplmawtMbo.getString("UDYDLX");;//移动类型Z43,Z61
                String LOCATION = udplmawtMbo.getString("LOCATION");;//仓库
                //领料申请单主表
                Integer UDLLDID = null;//领料单主表ID
                //不同仓库，不同移动类型和不同工单分别创建不同的领料申请单；udworkorderid的作用是防止从工单重复提交
                udLLDSet.setWhere("udworkorderid="+UDWORKORDERID+" and SJYDTYPE='"+UDYDLX+"' and LOCNUM='"+LOCATION+"'");
                udLLDSet.reset();
                MboRemote lldMbo = null;
                if(udLLDSet!=null && !udLLDSet.isEmpty()){
                    //编辑
                    lldMbo = udLLDSet.getMbo(0);
                    UDLLDID = lldMbo.getInt("UDLLDID");//领料单主表ID
                }else{
                    //新增领料单
                    lldMbo = udLLDSet.add();
                    UDLLDID = lldMbo.getInt("UDLLDID");//领料单主表ID
                    String WONUM = "EAM"+UDLLDID;
                    lldMbo.setValue("WONUM",WONUM,11L);//领料单号
                    lldMbo.setValue("DESCRIPTION",SITEID+"-"+DISPLAYNAME+"-"+format.format(new Date()),11L);//领料单描述
                    lldMbo.setValue("CREATEBY", CREATEBY,11L);
                    lldMbo.setValue("STATUS", "EDIT",11L);//领料申请单-状态：默认值
                    lldMbo.setValue("STATUSDATE", new Date(),11L);//状态日期
                    lldMbo.setValue("CREATEDATE", new Date(),11L);//创建日期
                    lldMbo.setValue("WOAPPNAME",WOAPPNAME,11L);//领料申请单-工单类型
                    lldMbo.setValue("WORKORDER",WORKORDER,11L);//领料申请单-工单的工单号
                    lldMbo.setValue("APPNAME", "UDLLD",11L);//领料申请单-区分应用的app标识
                    lldMbo.setValue("UDWORKORDERID",UDWORKORDERID,11L);//领料申请单-工单主表ID
                    lldMbo.setValue("WORKSHOP",WORKSHOP,11L);//领料申请单-车间
                    lldMbo.setValue("LOCNUM",LOCATION,11L);//领料申请单-仓库
                    lldMbo.setValue("UDZGR",DIRECTOR,11L);//领料申请单-创建人的主管
                    lldMbo.setValue("KOSTL",KOSTL,11L);//领料申请单-成本中心
                    lldMbo.setValue("SJYDTYPE",UDYDLX,11L);//领料申请单-移动类型
                    lldMbo.setValue("ORGID",ORGID,11L);//领料申请单-组织
                    lldMbo.setValue("SITEID",SITEID,11L);//领料申请单-地点
                    lldMbo.getThisMboSet().save(11L);
                }
                //领料申请单子表
                //如果从工单重复提交，通过udkucid判断是否重复
                udLLDLineSet.setWhere(" UDKCID="+UDKCID+" and parentid="+lldMbo.getInt("UDLLDID")+"");
                udLLDLineSet.reset();
                MboRemote lldLineMbo = null;
                if(udLLDLineSet!=null && !udLLDLineSet.isEmpty()){
                    //编辑
                    lldLineMbo = udLLDLineSet.getMbo(0);
                    lldLineMbo.setValue("ORDERQTY",ITEMQTY,11L);
                    lldLineMbo.setValue("ORDERUNIT",ITEMQTYUNTI,11L);
                    lldLineMbo.setValue("REMARKS",REMARKS,11L);
                    lldLineMbo.getThisMboSet().save(11L);//保存
                }else{
                    lldLineMbo = udLLDLineSet.add();
                    lldLineMbo.setValue("PARENTID",UDLLDID);//父表ID
                    lldLineMbo.setValue("ORGID", ORGID);//组织
                    lldLineMbo.setValue("SITEID", SITEID);//地点
                    lldLineMbo.setValue("LINENUM",LINENUM,11L);//序号
                    lldLineMbo.setValue("ITEMNUM",ITEMNUM,11L);
                    lldLineMbo.setValue("BINNUM",BINNUM,11L);
                    lldLineMbo.setValue("UDKCID",UDKCID,11L);
                    lldLineMbo.setValue("ORDERQTY",ITEMQTY,11L);
                    lldLineMbo.setValue("ORDERUNIT",ITEMQTYUNTI,11L);
//                    lldLineMbo.setValue("AUFNR",);//内部订单号
                    lldLineMbo.setValue("SJYDTYPE",UDYDLX,11L);
                    lldLineMbo.setValue("REMARKS",REMARKS,11L);
                    lldLineMbo.setValue("ISTBXBK",0,11L);//默认值
                    lldLineMbo.getThisMboSet().save(11L);//保存
                }
            }
        }
        returnDate.put("errcode","200");
//        returnDate.put("errmsg","success");
        returnDate.put("errmsg",new AMobileConfig().getTipByLang("udworkorder","createLld","errmsg2",LANGCODE));
        return  returnDate;
    }

    //------日常维修工单，触发请购申请 start-------------------------------------------------------
    @POST
    @Path("/createprtb")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject Createprtb(JSONObject receJSObj) throws RemoteException, MXException {
        JSONObject returnDate = new JSONObject();
        //app传参---start---------------------------------------
        String LANGCODE = receJSObj.getString("LANGCODE");;//语音环境
        Integer UDWORKORDERID = receJSObj.getInteger("UDWORKORDERID");//工单表ID
        JSONArray dataArr = receJSObj.getJSONArray("PLANMATER");//传工单下勾选的物料子表ID  PLANMATER=[1,2,3,4,5]
        //app传参---end---------------------------------------
        //解析勾选的物料表id
        String strID = "";
        if(dataArr!=null && !dataArr.isEmpty()){
            for(int i=0;i<dataArr.size();i++){
                strID +=dataArr.get(i) + ",";
            }
            strID = strID.trim();
            strID = strID.substring(0,strID.length()-1);
        }else{
            returnDate.put("errcode","201");
//            returnDate.put("errmsg","Please select a material first");//请先勾选物料
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("udworkorder","createLld","errmsg1",LANGCODE));
            return returnDate;
        }
        //----解析结束-----------------------------------------------------------
        String WORKORDER = "";//工单编号 1404
        String WORKSHOP = "";//车间编号
        String LOCNUM = "";//仓库
        String CREATEBY = "";//创建人工号
        String DISPLAYNAME = "";//创建人名称
        String DEPARTMENT = "";//创建人部门
        String DIRECTOR = "";//创建人部门负责人
        String KOSTL = "";//成本中心
        String ORGID = "";//组织
        String SITEID = "";//地点
        String WOAPPNAME = "UDWORKORDER";//日常维修工单触发过来传：UDWORKORDER  预防性工单触发传：UDPMWOORDER
        String SJYDTYPE = "Z43";//日常维修工单触发过来传：移动类型默认：Z43
        //先查询日常维修工单的相关信息
        MboSetRemote udWorkOrderSet = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
        udWorkOrderSet.setWhere(" UDWORKORDERID="+UDWORKORDERID+"");//int 类型
        udWorkOrderSet.reset();
        if(udWorkOrderSet!=null && !udWorkOrderSet.isEmpty()){
            MboRemote udworkorderMbo = udWorkOrderSet.getMbo(0);
            WORKORDER = udworkorderMbo.getString("WONUM");//日常维修工单编号
            String ASSETNUM = udworkorderMbo.getString("ASSETNUM");//日常维修工单-资产
            CREATEBY = udworkorderMbo.getString("CREATEBY");//日常维修工单-创建人
            KOSTL = udworkorderMbo.getString("KOSTL");//日常维修工单-成本中心
            WOAPPNAME = udworkorderMbo.getString("APPNAME");//日常维修工单-应用区分
            ORGID = udworkorderMbo.getString("ORGID");//组织
            SITEID = udworkorderMbo.getString("SITEID");//地点
            //查询资产表
            MboSetRemote assetSet = MXServer.getMXServer().getMboSet("ASSET",MXServer.getMXServer().getSystemUserInfo());
            assetSet.setWhere(" ASSETNUM='"+ASSETNUM+"'");
            assetSet.reset();
            if(assetSet!=null && !assetSet.isEmpty()){
                MboRemote assetMbo = assetSet.getMbo(0);
                WORKSHOP = assetMbo.getString("SDSYBM");//资产对应的使用部门
            }
            //查询仓库
            MboSetRemote LOCATIONSSet = MXServer.getMXServer().getMboSet("LOCATIONS",MXServer.getMXServer().getSystemUserInfo());
            LOCATIONSSet.setWhere(" SITEID='"+SITEID+"' and TYPE='STOREROOM'");
            LOCATIONSSet.reset();
            if(LOCATIONSSet!=null && !LOCATIONSSet.isEmpty()){
                MboRemote locMbo = LOCATIONSSet.getMbo(0);
                LOCNUM = locMbo.getString("LOCATION");//资产对应的使用部门
            }
            //查询人员
            MboSetRemote PERSONSet = MXServer.getMXServer().getMboSet("PERSON",MXServer.getMXServer().getSystemUserInfo());
            PERSONSet.setWhere(" PERSONID='"+CREATEBY+"'");
            PERSONSet.reset();
            if(PERSONSet!=null && !PERSONSet.isEmpty()){
                MboRemote personMbo = PERSONSet.getMbo(0);
                DISPLAYNAME = personMbo.getString("DISPLAYNAME");//人员名称
                DEPARTMENT = personMbo.getString("DEPARTMENT");//人员部门
            }
            //查询部门
            MboSetRemote DEPTSet = MXServer.getMXServer().getMboSet("DEPT",MXServer.getMXServer().getSystemUserInfo());
            DEPTSet.setWhere(" deptnum='"+WORKSHOP+"'");
            DEPTSet.reset();
            if(DEPTSet!=null && !DEPTSet.isEmpty()){
                MboRemote deptMbo = DEPTSet.getMbo(0);
                DIRECTOR = deptMbo.getString("DIRECTOR");//部门负责人
            }
        }

        //1、查询工单下-计划物料表数据
        MboSetRemote udPlmawtSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
        udPlmawtSet.setWhere(" UDPLMAID in("+strID+")");//int 类型
        udPlmawtSet.reset();
        if(udPlmawtSet!=null && !udPlmawtSet.isEmpty()){
            //车间需求申请池
            Integer PRID = null;//PR主表ID
            String PRNUM = "";//父级
            MboSetRemote PRSet = MXServer.getMXServer().getMboSet("PR",MXServer.getMXServer().getSystemUserInfo());
            PRSet.setWhere(" udworkorderid="+UDWORKORDERID+" AND APPNAME='UDPRTB'");
            PRSet.reset();
            MboRemote prMbo = null;
            if(PRSet!=null && !PRSet.isEmpty()){
                //编辑
                prMbo = PRSet.getMbo(0);
                PRID = prMbo.getInt("PRID");//车间需求池主表ID
                PRNUM = prMbo.getString("PRNUM");
            }else{
                //新增车间需求申请池
                prMbo = PRSet.add();
                PRID = prMbo.getInt("PRID");//车间需求池主表ID
                String wonum="EAM"+PRID;
                PRNUM = prMbo.getString("PRNUM");
                prMbo.setValue("UDPRNUM", wonum,11L);//车间需求申请池-申请单号
                prMbo.setValue("DESCRIPTION","EAM"+DISPLAYNAME,11L);//车间需求申请池-申请单号
                prMbo.setValue("REQUESTEDBY",CREATEBY,11L);//申请人
                prMbo.setValue("CHANGEBY",CREATEBY,11L);//申请人
                prMbo.setValue("APPNAME", "UDPRTB");//应用标识
                prMbo.setValue("UDWORKORDERID", UDWORKORDERID,11L);//
                prMbo.setValue("STATUS", "WAPPR",11L);//默认状态
                prMbo.setValue("STATUSDATE", new Date(),11L);//状态日期
                prMbo.setValue("ISSUEDATE", new Date(),11L);//申请日期
                prMbo.setValue("ORGID",ORGID,11L);//组织
                prMbo.setValue("SITEID",SITEID,11L);//地点
                prMbo.getThisMboSet().save();
            }
            //车间需求申请池子表
            MboSetRemote prLineSet = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
//            MboSetRemote prLineSet2 = MXServer.getMXServer().getMboSet("PRLINE",MXServer.getMXServer().getSystemUserInfo());
            //从工单过来的物料
            for(int i=0;i<udPlmawtSet.count();i++){
                MboRemote udplmawtMbo = udPlmawtSet.getMbo(i);
                Integer UDPLMAWTID = udplmawtMbo.getInt("UDPLMAID");//表ID
                Integer PARENTID = udplmawtMbo.getInt("PARENTID");//主表ID
                String LINENUM = udplmawtMbo.getString("LINENUM");//行号
                String ITEMNUM = udplmawtMbo.getString("ITEMNUM");//物料编号
                String DESCRIPTION = udplmawtMbo.getString("DESCRIPTION");//物料名称
                String BINNUM = udplmawtMbo.getString("BINNUM");//储位编号
                Integer UDKCID = udplmawtMbo.getInt("UDKCID");//库存表ID--为了关联库存余量
                Double ITEMQTY = udplmawtMbo.getDouble("ITEMQTY");//需求数量
                String ITEMQTYUNTI = udplmawtMbo.getString("ITEMQTYUNTI");//需求数量单位
                Double TFITEMQTY = udplmawtMbo.getDouble("TFITEMQTY");//需求数量转换后的数量
                String TFITEMQTYUNIT = udplmawtMbo.getString("TFITEMQTYUNIT");//需求数量单位转换后的单位
                Double APPRQUANTITY = udplmawtMbo.getDouble("APPRQUANTITY");//批准数量
                String REMARKS = udplmawtMbo.getString("REMARKS");//备注
                String UDYDLX = "Z43";//移动类型-默认值
                //车间需求申请池子表
                prLineSet.setWhere(" PRNUM='"+PRNUM+"' and ITEMNUM='"+ITEMNUM+"' and SITEID='"+SITEID+"'");//
                prLineSet.reset();
                MboRemote prlineMbo = null;
                MboSetRemote CJprlineSET = prMbo.getMboSet("PRLINE");
                if(prLineSet!=null && !prLineSet.isEmpty()){
                    //编辑
                    prlineMbo = prLineSet.getMbo(0);
                    prlineMbo.setValue("ORDERQTY",ITEMQTY,11L);
                    prlineMbo.setValue("ORDERUNIT",ITEMQTYUNTI,11L);
                    prlineMbo.setValue("REMARKS",REMARKS,11L);
                }else{
                    prlineMbo = CJprlineSET.addAtEnd(11L);
                    prlineMbo.setValue("PRNUM",PRNUM,11L);//父级
                    prlineMbo.setValue("SITEID",SITEID,11L);
                    prlineMbo.setValue("ORGID",ORGID,11L);
                    prlineMbo.setValue("PRLINENUM",LINENUM,11L);//行号
                    prlineMbo.setValue("ITEMNUM",ITEMNUM,11L);
                    prlineMbo.setValue("DESCRIPTION",DESCRIPTION,11L);
                    prlineMbo.setValue("ORDERQTY",ITEMQTY,11L);
                    prlineMbo.setValue("ORDERUNIT",ITEMQTYUNTI,11L);
                    prlineMbo.setValue("CONVERSION",1,11L);
                    prlineMbo.setValue("REMARKS",REMARKS,11L);
                    //prline要求的默认值
                    prlineMbo.setValue("ISSUE",0,11L);//11L跳过验证
                    prlineMbo.setValue("LOADEDCOST",0,11L);
                    prlineMbo.setValue("LINETYPE","ITEM",11L);
                    prlineMbo.setValue("ENTEREDASTASK",0,11L);
                    prlineMbo.setValue("TAX4",0,11L);
                    prlineMbo.setValue("ENTERBY",CREATEBY,11L);
                    prlineMbo.setValue("ENTERDATE",new Date(),11L);
                    prlineMbo.setValue("TAXEXEMPT",0,11L);
                    prlineMbo.setValue("LANGCODE","ZH",11L);
                    prlineMbo.setValue("MKTPLCITEM",0,11L);
                    prlineMbo.setValue("INSPECTIONREQUIRED",0,11L);
                    prlineMbo.setValue("LINECOST",0,11L);
                    prlineMbo.setValue("CHARGESTORE",0,11L);
                    prlineMbo.setValue("TAX5",0,11L);
                    prlineMbo.setValue("RECEIPTREQD",1,11L);
                    prlineMbo.setValue("TAX3",0,11L);
                    prlineMbo.setValue("TAX2",0,11L);
                    prlineMbo.setValue("CONSIGNMENT",0,11L);
                    prlineMbo.setValue("ISDISTRIBUTED",0,11L);
                    prlineMbo.setValue("CONVERTTORFQ",0,11L);
                    prlineMbo.setValue("PRORATESERVICE",0,11L);
                    prlineMbo.setValue("CONVERTTOCONTRACT",0,11L);
                    prlineMbo.setValue("ISPASS","0",11L);
                    prlineMbo.setValue("TAX1",0,11L);
                    prlineMbo.setValue("RESTYPE","AUTOMATIC",11L);
                    prlineMbo.setValue("ITEMSETID","SUNDASET",11L);

                }
                prlineMbo.getThisMboSet().save(11L);//保存
            }
        }
        returnDate.put("errcode","200");
//      returnDate.put("errmsg","success");
        returnDate.put("errmsg",new AMobileConfig().getTipByLang("udworkorder","createprtb","errmsg1",LANGCODE));
        return  returnDate;
    }


    //---end-----------------------------------------------------------------------------------------------
    /**
     * 主表数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语音环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDWORKORDERID = jsonObject.getInteger("UDWORKORDERID");//表ID
            String WONUM = jsonObject.getString("WONUM");//工单编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//工单描述
            String GZDUTY = jsonObject.getString("GZDUTY");//故障责任
            String ASSETNUM = jsonObject.getString("ASSETNUM");//设备编码
            String LOCATION = jsonObject.getString("LOCATION");//位置编号
            String FAILURECODE = jsonObject.getString("FAILURECODE");//故障类
            String PROBLEMCODE = jsonObject.getString("PROBLEMCODE");//问题代码
            String FAULTCAUSE = jsonObject.getString("FAULTCAUSE");//故障原因
            String REMEDY = jsonObject.getString("REMEDY");//补救措施
            String SPMSRETURN = jsonObject.getString("SPMSRETURN");//解决办法
            String STATUS = jsonObject.getString("STATUS");//状态
            String CREATEBY = jsonObject.getString("CREATEBY");//创建人
            String CREATEDATEStr = jsonObject.getString("CREATEDATE");//创建时间
            Date CREATEDATE = new Date();
            String HDDEPT = jsonObject.getString("HDDEPT");//部门
            String SUPERVISOR = jsonObject.getString("SUPERVISOR");//主管
            String WOREQNUM = jsonObject.getString("WOREQNUM");//缺陷单号
            String SPOTRUNNUM = jsonObject.getString("SPOTRUNNUM");//点检任务编号
            String SPOTRUNLINENUM = jsonObject.getString("SPOTRUNLINENUM");//点检任务行号
            String ESTDUR = jsonObject.getString("ESTDUR");//间隔时间
            String SHUTDURAStr = jsonObject.getString("SHUTDURA");//停机时长
            Double SHUTDURA = null;
            if(SHUTDURAStr!=null&&!"".equals(SHUTDURAStr)){
                SHUTDURA = Double.parseDouble(SHUTDURAStr);
            }
            String STATUSDATEStr = jsonObject.getString("STATUSDATE");//状态日期
            System.out.println("-------------STATUSDATEStr="+STATUSDATEStr);
            Date STATUSDATE = new Date();//状态日期
            String SPMSSTATUS = jsonObject.getString("SPMSSTATUS");//spms返回状态
            String REMARKS = jsonObject.getString("REMARKS");//备注
            String PERSONGROUP = jsonObject.getString("PERSONGROUP");//流程执行组
            String WORKSHOP = jsonObject.getString("WORKSHOP");//车间
            String KOSTL = jsonObject.getString("KOSTL");//成本中心
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            String ISSTOP = jsonObject.getString("ISSTOP");//是否停机
            String MAINTYPE = jsonObject.getString("MAINTYPE");//维修类型
            String PRONUM = jsonObject.getString("PRONUM");//大修工单-选择项目立项号
            String APPNAME = "";//应用名
            if(PRONUM!=null && !"".equals(PRONUM) ){
                APPNAME =  "UDDXGD";
            }else{
                APPNAME =  "UDWORKORDERAPP";
            }
            MboSetRemote UDWORKORDERSet = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
            UDWORKORDERSet.setWhere(" UDWORKORDERID="+UDWORKORDERID+"");//int 类型
            UDWORKORDERSet.reset();
            MboRemote mbo = null;
            if(UDWORKORDERSet!=null && !UDWORKORDERSet.isEmpty()){
                //编辑
                mbo = UDWORKORDERSet.getMbo(0);
                APPNAME = mbo.getString("APPNAME");
            }else{
                //新增
                mbo = UDWORKORDERSet.add();
                mbo.setValue("STATUS","EDIT",2L);
                UDWORKORDERID = mbo.getInt("UDWORKORDERID");
                mbo.setValue("CREATEDATE",CREATEDATE,2L);//新建时间
                mbo.setValue("STATUSDATE",STATUSDATE,2L);//新建状态时间
            }
            mbo.setValue("APPNAME",APPNAME,2L);//专用于区分移动端和pc端的字段
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);//工单描述
            mbo.setValue("ASSETNUM",ASSETNUM,2L);//2L强制插入
            mbo.setValue("LOCATION",LOCATION,2L);
            mbo.setValue("GZDUTY",GZDUTY,2L);
            mbo.setValue("FAILURECODE",FAILURECODE,2L);
            mbo.setValue("PROBLEMCODE",PROBLEMCODE,2L);
            mbo.setValue("FAULTCAUSE",FAULTCAUSE,2L);
            mbo.setValue("REMEDY",REMEDY,2L);
            mbo.setValue("CREATEBY",CREATEBY,2L);
            mbo.setValue("HDDEPT",HDDEPT,2L);
            mbo.setValue("SUPERVISOR",SUPERVISOR,2L);
            mbo.setValue("SPMSRETURN",SPMSRETURN,2L);//解决办法
            mbo.setValue("WOREQNUM",WOREQNUM,2L);
            mbo.setValue("SPOTRUNNUM",SPOTRUNNUM,2L);
            mbo.setValue("SPOTRUNLINENUM",SPOTRUNLINENUM,2L);
            //计划开始时间、计划结束时间、实际开始时间、实际结束时间-----------------------start-------------------------------------------
            String TARGSTARTDATEStr = jsonObject.getString("TARGSTARTDATE");//计划开始时间
            System.out.println("-----------TARGSTARTDATEStr="+TARGSTARTDATEStr);
            Date TARGSTARTDATE = null;
            if(TARGSTARTDATEStr!=null&&!"".equals(TARGSTARTDATEStr) && !"null".equals(TARGSTARTDATEStr) && !"undefined".equalsIgnoreCase(TARGSTARTDATEStr) && !"Invalid date".equalsIgnoreCase(TARGSTARTDATEStr)){
                TARGSTARTDATE = sdf.parse(TARGSTARTDATEStr);
                mbo.setValue("TARGSTARTDATE",TARGSTARTDATE,2L);//计划开始时间
            }
            String SCHEDFINISHStr = jsonObject.getString("SCHEDFINISH");//计划结束时间
            System.out.println("-------------SCHEDFINISHStr="+SCHEDFINISHStr);
            Date SCHEDFINISH = null;
            if(SCHEDFINISHStr!=null&&!"".equals(SCHEDFINISHStr) && !"null".equals(SCHEDFINISHStr) && !"undefined".equalsIgnoreCase(SCHEDFINISHStr) && !"Invalid date".equalsIgnoreCase(SCHEDFINISHStr)){
                SCHEDFINISH = sdf.parse(SCHEDFINISHStr);
                mbo.setValue("SCHEDFINISH",SCHEDFINISH,2L);//计划结束时间
            }
            String ACTSTARTStr = jsonObject.getString("ACTSTART");//实际开始时间
            System.out.println("-------------ACTSTARTStr="+ACTSTARTStr);
            Date ACTSTART = null;
            if(ACTSTARTStr!=null&&!"".equals(ACTSTARTStr) && !"null".equals(ACTSTARTStr) && !"undefined".equalsIgnoreCase(ACTSTARTStr) && !"Invalid date".equalsIgnoreCase(ACTSTARTStr)){
                ACTSTART = sdf.parse(ACTSTARTStr);
                mbo.setValue("ACTSTART",ACTSTART,2L);//实际开始时间
            }else {
                ACTSTART = new Date();
            }
            String ACTFINISHStr = jsonObject.getString("ACTFINISH");//实际结束时间
            System.out.println("-------------ACTFINISHStr="+ACTFINISHStr);
            Date ACTFINISH = null;
            if(ACTFINISHStr!=null && !"".equals(ACTFINISHStr) && !"null".equals(ACTFINISHStr) && !"undefined".equalsIgnoreCase(ACTFINISHStr) && !"Invalid date".equalsIgnoreCase(ACTFINISHStr)){
                ACTFINISH = sdf.parse(ACTFINISHStr);
                mbo.setValue("ACTFINISH",ACTFINISH,2L);//实际结束时间
            }else{
                ACTFINISH = new Date();
            }
            //计划开始时间、计划结束时间、实际开始时间、实际结束时间----------------------------end--------------------------------------
            if(mbo.isModified() && "WAPPR".equalsIgnoreCase(STATUS)){
                mbo.setValue("TARGSTARTDATE",TARGSTARTDATE,2L);//计划开始时间
                mbo.setValue("SCHEDFINISH",SCHEDFINISH,2L);//计划结束时间
                mbo.setValue("ACTSTART",ACTSTART,2L);//实际开始时间
                mbo.setValue("ACTFINISH",ACTFINISH,2L);//实际结束时间
            }
            mbo.setValue("ESTDUR",ESTDUR,2L);
            if(SHUTDURA!=null){
                mbo.setValue("SHUTDURA",SHUTDURA,2L);
            }
            mbo.setValue("SPMSSTATUS",SPMSSTATUS,2L);
            mbo.setValue("REMARKS",REMARKS,2L);
            mbo.setValue("WORKSHOP",WORKSHOP,2L);
            mbo.setValue("KOSTL",KOSTL,2L);
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            mbo.setValue("ISSTOP",ISSTOP,2L);
            mbo.setValue("MAINTYPE",MAINTYPE,2L);
            mbo.setValue("PRONUM",PRONUM,2L);
            mbo.setValue("PERSONGROUP",PERSONGROUP,2L);//流程执行组
            //保存
            mbo.getThisMboSet().save();
            returnDate.put("UDWORKORDERID",UDWORKORDERID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 任务--数据保存接口---------单独一条数据保存
     * @param received
     * @return
     */
    @POST
    @Path("/saveTaskData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveTaskData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDWOTASKID = jsonObject.getInteger("UDWOTASKID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//工单描述
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            Integer ISCOMP = jsonObject.getInteger("ISCOMP");//是否完成
            if(ISCOMP==null){
                ISCOMP = 0;
            }
            String PERSONID = jsonObject.getString("PERSONID");//完成人员
            String CURTIMEStr = jsonObject.getString("CURTIME");//完成时间
            Date CURTIME = null;
            if(CURTIMEStr!=null&&!"".equals(CURTIMEStr)){
                CURTIME = sdf.parse(CURTIMEStr);
            }
            String REMARKS = jsonObject.getString("REMARKS");//备注

            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDWOTASK",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDWOTASKID="+UDWOTASKID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                System.out.println("--------ID="+mbo.getInt("UDWOTASKID"));
                UDWOTASKID = mbo.getInt("UDWOTASKID");
            }
            mbo.setValue("TASKID",TASKID,2L);//
            mbo.setValue("PARENTID",PARENTID,2L);//
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);//
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            mbo.setValue("ISCOMP",ISCOMP,2L);
            mbo.setValue("PERSONID",PERSONID,2L);
            mbo.setValue("CURTIME",CURTIME,2L);
            mbo.setValue("REMARKS",REMARKS,2L);
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDWOTASKID",UDWOTASKID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 任务--数据保存接口---------批量数据保存
     * 主要是预防性维护应用--任务批量保存
     * @param received
     * @return
     */
    @POST
    @Path("/saveTaskBatchData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveTaskBatchData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject JSObject = JSONObject.parseObject(received);
            if(JSObject!=null && !JSObject.isEmpty()){
                JSONArray taskBatch = JSObject.getJSONArray("TASKBATCH");
                if(taskBatch!=null && !taskBatch.isEmpty()){
                    Integer PARENTID = null;
                    for(int i=0;i<taskBatch.size();i++){
                        JSONObject jsonObject = taskBatch.getJSONObject(i);//循环对象
                        LANGCODE = jsonObject.getString("LANGCODE");
                        Integer UDWOTASKID = jsonObject.getInteger("UDWOTASKID");//表ID
                        PARENTID = jsonObject.getInteger("PARENTID");//父级ID
                        String ORGID = jsonObject.getString("ORGID");//组织
                        String SITEID = jsonObject.getString("SITEID");//地点
                        String TASKID = jsonObject.getString("TASKID");//任务编号
                        String DESCRIPTION = jsonObject.getString("DESCRIPTION");//工单描述
                        String PERSONID = jsonObject.getString("PERSONID");//完成人员
                        String CURTIMEStr = jsonObject.getString("CURTIME");//完成时间
                        Integer ISCOMP = jsonObject.getInteger("ISCOMP");//是否完成
                        String REMARKS = jsonObject.getString("REMARKS");//备注
                        Date CURTIME = null;
                        if(CURTIMEStr!=null&&!"".equals(CURTIMEStr)){
                            CURTIME = sdf.parse(CURTIMEStr);
                        }
                        //任务管理
                        MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDWOTASK",MXServer.getMXServer().getSystemUserInfo());
                        UDWOTASKSet.setWhere(" UDWOTASKID="+UDWOTASKID+"");//int 类型
                        UDWOTASKSet.reset();
                        MboRemote mbo = null;
                        if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                            //编辑
                            mbo = UDWOTASKSet.getMbo(0);
                        }else{
                            //新增
                            mbo = UDWOTASKSet.add();
                            System.out.println("--------ID="+mbo.getInt("UDWOTASKID"));
                            UDWOTASKID = mbo.getInt("UDWOTASKID");
                        }
                        mbo.setValue("TASKID",TASKID,2L);//
                        mbo.setValue("PARENTID",PARENTID,2L);//
                        mbo.setValue("DESCRIPTION",DESCRIPTION,2L);//
                        mbo.setValue("ORGID",ORGID,2L);
                        mbo.setValue("SITEID",SITEID,2L);
                        mbo.setValue("ISCOMP",ISCOMP,2L);
                        mbo.setValue("PERSONID",PERSONID,2L);
                        mbo.setValue("CURTIME",CURTIME,2L);
                        mbo.setValue("REMARKS",REMARKS,2L);
                        //保存
                        mbo.getThisMboSet().save(11L);
                    }
                    returnDate.put("PARENTID",PARENTID);//返回前端刷新页面---返回父级
                    returnDate.put("errcode","200");
//                    returnDate.put("errmsg","save success");
                    returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
                }
            }
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 计划--人员--数据保存接口，调用计划-人员的时候，实际人员也添加
     * @param received
     * @return
     */
    @POST
    @Path("/savePlanPersonData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SavePlanPersonData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String LABORCODE = jsonObject.getString("LABORCODE");//人员
            String RATEStr = jsonObject.getString("RATE");//费率
            RATEStr = (RATEStr==null || "".equals(RATEStr))?"0":RATEStr;
            Double RATE = Double.parseDouble(RATEStr);
            String LABORHRSStr = jsonObject.getString("LABORHRS");//工时
            LABORHRSStr = (LABORHRSStr==null || "".equals(LABORHRSStr))?"0":LABORHRSStr;
            Float LABORHRS = Float.parseFloat(LABORHRSStr);
            String LINECOSTStr = jsonObject.getString("LINECOST");//行成本
            LINECOSTStr = (LINECOSTStr==null || "".equals(LINECOSTStr))?"0":LINECOSTStr;
            Double LINECOST = Double.parseDouble(LINECOSTStr);
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                System.out.println("--------ID="+mbo.getInt("UDPLMAID"));
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPLAN",1);//计划
                mbo.setValue("LTYPE",1);//人员
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("LABORCODE",LABORCODE,11L);//
            mbo.setValue("RATE",RATE,11L);//
            mbo.setValue("LABORHRS",LABORHRS,11L);//
            mbo.setValue("LINECOST",LINECOST,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            //保存
            mbo.getThisMboSet().save(11L);
            SaveActPersonData(received);//计划新增的时候，同时在实际中也新增一条
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 实际--人员--数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveActPersonData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveActPersonData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String LABORCODE = jsonObject.getString("LABORCODE");//人员
            String RATEStr = jsonObject.getString("RATE");//费率
            RATEStr = (RATEStr==null || "".equals(RATEStr))?"0":RATEStr;
            Double RATE = Double.parseDouble(RATEStr);
            String LABORHRSStr = jsonObject.getString("LABORHRS");//工时
            LABORHRSStr = (LABORHRSStr==null || "".equals(LABORHRSStr))?"0":LABORHRSStr;
            Float LABORHRS = Float.parseFloat(LABORHRSStr);
            String LINECOSTStr = jsonObject.getString("LINECOST");//行成本
            LINECOSTStr = (LINECOSTStr==null || "".equals(LINECOSTStr))?"0":LINECOSTStr;
            Double LINECOST = Double.parseDouble(LINECOSTStr);
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPHY",1);//实际
                mbo.setValue("LTYPE",1);//人员
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("LABORCODE",LABORCODE,11L);//
            mbo.setValue("RATE",RATE,11L);//
            mbo.setValue("LABORHRS",LABORHRS,11L);//
            mbo.setValue("LINECOST",LINECOST,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 计划--物料--数据保存接口，做计划的时候，还会生成实际的物料
     * @param received
     * @return
     */
    @POST
    @Path("/savePlanMaterData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SavePlanMaterData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String LINENUM = jsonObject.getString("LINENUM");//行号
            String LOCATION = jsonObject.getString("LOCATION");//仓库
            String UDYDLX = jsonObject.getString("UDYDLX");//物料的移动类型
            String ITEMNUM = jsonObject.getString("ITEMNUM");//物料
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//物料
            String BINNUM = jsonObject.getString("BINNUM");//物料的库位
            String DEPTNUM = jsonObject.getString("DEPTNUM");//资产所在的部门编号
            Integer UDKCID = jsonObject.getInteger("UDKCID");//库存表ID
            String ITEMQTYStr = jsonObject.getString("ITEMQTY");//出库数量
            ITEMQTYStr = (ITEMQTYStr==null || "".equals(ITEMQTYStr))?"0":ITEMQTYStr;
            Double ITEMQTY = Double.parseDouble(ITEMQTYStr);
            String ITEMQTYUNTI = jsonObject.getString("ITEMQTYUNTI");//出库单位

            //单位转换
            double covqty = 0;
            String MEINS = "";
            MboSetRemote conversionSet = MXServer.getMXServer().getMboSet("EAM_CONVERSION",MXServer.getMXServer().getSystemUserInfo());
            conversionSet.setWhere("MATNR='"+ITEMNUM+"' and BSTME='"+ITEMQTYUNTI+"'");
            conversionSet.reset();
            if(null!=conversionSet && !conversionSet.isEmpty()){
                MboRemote converMbo=conversionSet.getMbo(0);
                MEINS = converMbo.getString("MEINS");//基本单位
                double UMREN=Double.parseDouble(converMbo.getString("UMREN"));
                double UMREZ=Double.parseDouble(converMbo.getString("UMREZ"));
                //转换后的=(UMREZ/UMREN)*数量
                covqty=(UMREZ/UMREN)*ITEMQTY;
            }
//            String TFITEMQTYStr = jsonObject.getString("TFITEMQTY");//转换后的数量
//            TFITEMQTYStr = (TFITEMQTYStr==null || "".equals(TFITEMQTYStr))?"0":TFITEMQTYStr;
//            Double TFITEMQTY = Double.parseDouble(ITEMQTYStr);
//            String TFITEMQTYUNIT = jsonObject.getString("TFITEMQTYUNIT");//转换后的出库单位
//            String APPRQUANTITYStr = jsonObject.getString("APPRQUANTITY");//批准数量
//            APPRQUANTITYStr = (APPRQUANTITYStr==null || "".equals(APPRQUANTITYStr))?"0":APPRQUANTITYStr;
//            Double APPRQUANTITY = Double.parseDouble(ITEMQTYStr);
//            String UDYDLX = jsonObject.getString("UDYDLX");//移动类型
//            String AUFNR = jsonObject.getString("AUFNR");//内部订单号
//            String UNITCOSTStr = jsonObject.getString("UNITCOST");//单位成本
//            UNITCOSTStr = (UNITCOSTStr==null || "".equals(UNITCOSTStr))?"0":UNITCOSTStr;
//            Double UNITCOST = Double.parseDouble(UNITCOSTStr);
//            String LINECOSTStr = jsonObject.getString("LINECOST");//行成本
//            LINECOSTStr = (LINECOSTStr==null || "".equals(LINECOSTStr))?"0":LINECOSTStr;
//            Double LINECOST = Double.parseDouble(LINECOSTStr);
            String ZDEL = jsonObject.getString("ZDEL");//取消标识
            String REMARKS = jsonObject.getString("REMARKS");//备注
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote UDMaterSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDMaterSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDMaterSet.reset();
            MboRemote mbo = null;
            if(UDMaterSet!=null && !UDMaterSet.isEmpty()){
                //编辑
                mbo = UDMaterSet.getMbo(0);
            }else{
                //新增
                mbo = UDMaterSet.add();
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPLAN",1);//计划
                mbo.setValue("LTYPE",2);//物料
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            mbo.setValue("LINENUM",LINENUM,11L);
            mbo.setValue("LOCATION",LOCATION,11L);
            mbo.setValue("ITEMNUM",ITEMNUM,11L);
            mbo.setValue("DEPTNUM",DEPTNUM,11L);
            mbo.setValue("DESCRIPTION",DESCRIPTION,11L);
            mbo.setValue("BINNUM",BINNUM,11L);//用该字段存放库位
            mbo.setValue("UDYDLX",UDYDLX,11L);//默认移动类型
            mbo.setValue("UDKCID",UDKCID,11L);
            mbo.setValue("ITEMQTY",ITEMQTY,11L);
            mbo.setValue("ITEMQTYUNTI",ITEMQTYUNTI,11L);
            mbo.setValue("TFITEMQTY", covqty,2L);//转换后数量
            mbo.setValue("TFITEMQTYUNIT",MEINS,2L);//转换后单位(基本单位)
            mbo.setValue("APPRQUANTITY", covqty,2L);//批准数量，默认和转换后的数量保持一致
//            mbo.setValue("TFITEMQTY",TFITEMQTY,11L);
//            mbo.setValue("TFITEMQTYUNIT",TFITEMQTYUNIT,11L);
//            mbo.setValue("APPRQUANTITY",APPRQUANTITY,11L);
//            mbo.setValue("UDYDLX",UDYDLX,11L);
//            mbo.setValue("AUFNR",AUFNR,11L);
//            mbo.setValue("UNITCOST",UNITCOST,11L);
//            mbo.setValue("LINECOST",LINECOST,11L);
            mbo.setValue("ZDEL",ZDEL,11L);
            mbo.setValue("REMARKS",REMARKS,11L);
            //保存
            mbo.getThisMboSet().save(11L);
            SaveActMaterData(received);//同时在实际中也新增一条数据
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("errcode","200");
//          returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//          returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }


    /**
     * 实际--物料--数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveActMaterData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveActMaterData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String LINENUM = jsonObject.getString("LINENUM");//行号
            String LOCATION = jsonObject.getString("LOCATION");//仓库
            String ITEMNUM = jsonObject.getString("ITEMNUM");//物料
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//物料
            String BINNUM = jsonObject.getString("BINNUM");//物料的库位-----仓库中存在一个编码对应多个库位，因此存放的时候需要把物料编号和库位都存起来，这样才能保证查询的时候是唯一的。
            String DEPTNUM = jsonObject.getString("DEPTNUM");//资产所在部门编号
            String ITEMQTYStr = jsonObject.getString("ITEMQTY");//出库数量
            double depttotal = jsonObject.getDouble("DEPTTOTAL"); //部门清单数量
            ITEMQTYStr = (ITEMQTYStr==null || "".equals(ITEMQTYStr))?"0":ITEMQTYStr;
            Double ITEMQTY = Double.parseDouble(ITEMQTYStr);
            String ITEMQTYUNTI = jsonObject.getString("ITEMQTYUNTI");//出库单位
            String JJCKSLStr = jsonObject.getString("JJCKSL");//留用旧件使用数量
            JJCKSLStr = (JJCKSLStr==null || "".equals(JJCKSLStr))?"0":JJCKSLStr;
            Double JJCKSL = Double.parseDouble(JJCKSLStr);//留用旧件使用数量

            //单位转换
            double covqty = 0;
            String MEINS = "";
            MboSetRemote conversionSet = MXServer.getMXServer().getMboSet("EAM_CONVERSION",MXServer.getMXServer().getSystemUserInfo());
            conversionSet.setWhere("MATNR='"+ITEMNUM+"' and BSTME='"+ITEMQTYUNTI+"'");
            conversionSet.reset();
            if(null!=conversionSet && !conversionSet.isEmpty()){
                MboRemote converMbo=conversionSet.getMbo(0);
                MEINS = converMbo.getString("MEINS");//基本单位
                double UMREN=Double.parseDouble(converMbo.getString("UMREN"));
                double UMREZ=Double.parseDouble(converMbo.getString("UMREZ"));
                //转换后的=(UMREZ/UMREN)*数量
                covqty=(UMREZ/UMREN)*ITEMQTY;
            }
            String UDYDLX = jsonObject.getString("UDYDLX");//移动类型
            String AUFNR = jsonObject.getString("AUFNR");//内部订单号
            String ZDEL = jsonObject.getString("ZDEL");//取消标识
            String REMARKS = jsonObject.getString("REMARKS");//备注
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            //DEPTTOTAL---清单余量---2024-12-19
            //MboSetRemote DEPTTOTALSET=udinvMbo.getMboSet("$UDMATUSETRANS", "UDMATUSETRANS", "ITEMNUM='"+udinvMbo.getString("ITEMNUM")+"'  and DEPTNUM in(SELECT DEPTNUM FROM DEPT WHERE DEPTTYPE='"+udinvMbo.getString("DEPTNUM")+"'  AND SITEID='"+udinvMbo.getString("SITEID")+"' ) AND ISJJ=0  ");
            //MboSetRemote udmatusetrans = MXServer.getMXServer().getMboSet("UDMATUSETRANS",  MXServer.getMXServer().getSystemUserInfo());
            //udmatusetrans.setWhere("ITEMNUM='"+ITEMNUM+"'  and DEPTNUM in " +
                   // "(SELECT DEPTNUM FROM DEPT WHERE DEPTTYPE='"+DEPTNUM+"'  AND SITEID='"+SITEID+"' ) AND ISJJ=0  ");
            //udmatusetrans.reset();
            MboSetRemote UDMaterSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDMaterSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDMaterSet.reset();
            MboRemote mbo = null;
            if(UDMaterSet!=null && !UDMaterSet.isEmpty()){
                //编辑
                mbo = UDMaterSet.getMbo(0);
            }else{
                //新增
                mbo = UDMaterSet.add();
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPHY",1);//实际
                mbo.setValue("LTYPE",2);//物料
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            mbo.setValue("LINENUM",LINENUM,11L);
            mbo.setValue("ITEMNUM",ITEMNUM,11L);
            mbo.setValue("LOCATION",LOCATION,11L);
            mbo.setValue("DEPTNUM",DEPTNUM,11L);
            mbo.setValue("DESCRIPTION",DESCRIPTION,11L);
            mbo.setValue("BINNUM",BINNUM,11L);//用该字段存放库位
            mbo.setValue("ITEMQTY",ITEMQTY,11L);
            mbo.setValue("ITEMQTYUNTI",ITEMQTYUNTI,11L);
            mbo.setValue("TFITEMQTY", covqty,2L);//转换后数量
            mbo.setValue("TFITEMQTYUNIT",MEINS,2L);//转换后单位(基本单位)
            mbo.setValue("APPRQUANTITY", covqty,2L);//批准数量，默认和转换后的数量保持一致
            mbo.setValue("UDYDLX",UDYDLX,11L);
            mbo.setValue("AUFNR",AUFNR,11L);
            mbo.setValue("ZDEL",ZDEL,11L);
            mbo.setValue("REMARKS",REMARKS,11L);
            mbo.setValue("JJCKSL",JJCKSL,11L);//	留用旧件使用数量
            mbo.setValue("DEPTTOTAL",depttotal,11L); //部件清单数量 2024-12-09
            if (jsonObject.containsKey("UDKCID")) {
                Integer UDKCID = jsonObject.getInteger("UDKCID");//库存表ID
                mbo.setValue("UDKCID",UDKCID,11L);
            }
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("JJCKSL",JJCKSL);//返回前端刷新页面
            returnDate.put("errcode","200");
//          returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//          returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }


    /**
     * 计划--服务--数据保存接口，做计划的时候，还会生成实际的服务
     * @param received
     * @return
     */
    @POST
    @Path("/savePlanServerData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SavePlanServerData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//服务
            String ITEMQTYStr = jsonObject.getString("ITEMQTY");//数量
            ITEMQTYStr = (ITEMQTYStr==null || "".equals(ITEMQTYStr))?"1":ITEMQTYStr;
            Double ITEMQTY = Double.parseDouble(ITEMQTYStr);
            String UNITCOSTStr = jsonObject.getString("UNITCOST");//单位成本
            UNITCOSTStr = (UNITCOSTStr==null || "".equals(UNITCOSTStr))?"1":UNITCOSTStr;
            Double UNITCOST = Double.parseDouble(UNITCOSTStr);
            String LINECOSTStr = jsonObject.getString("LINECOST");//行成本
            LINECOSTStr = (LINECOSTStr==null || "".equals(LINECOSTStr))?"1":LINECOSTStr;
            Double LINECOST = Double.parseDouble(LINECOSTStr);
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPLAN",1);//计划
                mbo.setValue("LTYPE",3);//服务
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("DESCRIPTION",DESCRIPTION,11L);//
            mbo.setValue("ITEMQTY",ITEMQTY,11L);//
            mbo.setValue("UNITCOST",UNITCOST,11L);//
            mbo.setValue("LINECOST",LINECOST,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            //保存
            mbo.getThisMboSet().save(11L);
            SaveActServerData(received);//计划-服务新增，对应的实际-服务也新增一条
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 实际-服务--数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveActServerData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveActServerData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String TASKID = jsonObject.getString("TASKID");//任务编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//服务
            String ITEMQTYStr = jsonObject.getString("ITEMQTY");//数量
            ITEMQTYStr = (ITEMQTYStr==null || "".equals(ITEMQTYStr))?"1":ITEMQTYStr;
            Double ITEMQTY = Double.parseDouble(ITEMQTYStr);
            String UNITCOSTStr = jsonObject.getString("UNITCOST");//单位成本
            UNITCOSTStr = (UNITCOSTStr==null || "".equals(UNITCOSTStr))?"1":UNITCOSTStr;
            Double UNITCOST = Double.parseDouble(UNITCOSTStr);
            String LINECOSTStr = jsonObject.getString("LINECOST");//行成本
            LINECOSTStr = (LINECOSTStr==null || "".equals(LINECOSTStr))?"1":LINECOSTStr;
            Double LINECOST = Double.parseDouble(LINECOSTStr);
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点

            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                UDPLMAID = mbo.getInt("UDPLMAID");
                mbo.setValue("ISPHY",1);//实际
                mbo.setValue("LTYPE",3);//服务
            }
            mbo.setValue("TASKID",TASKID,11L);//
            mbo.setValue("PARENTID",PARENTID,11L);//
            mbo.setValue("DESCRIPTION",DESCRIPTION,11L);//
            mbo.setValue("ITEMQTY",ITEMQTY,11L);//
            mbo.setValue("UNITCOST",UNITCOST,11L);//
            mbo.setValue("LINECOST",LINECOST,11L);//
            mbo.setValue("ORGID",ORGID,11L);
            mbo.setValue("SITEID",SITEID,11L);
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDPLMAID",UDPLMAID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 实际-维修日志--数据保存接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveActFixData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveActFixData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDMAINLOGSID = jsonObject.getInteger("UDMAINLOGSID");//表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String MDATEStr = jsonObject.getString("MDATE");//维修日期
            MDATEStr = MDATEStr ==null?"":MDATEStr;
            Date MDATE = sdf.parse(MDATEStr);
            String LINENUM = jsonObject.getString("LINENUM");//行号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//记录
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            String CREATEBY = jsonObject.getString("CREATEBY");//更新人
            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDMAINLOGS",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDMAINLOGSID="+UDMAINLOGSID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = null;
            if(UDWOTASKSet!=null && !UDWOTASKSet.isEmpty()){
                //编辑
                mbo = UDWOTASKSet.getMbo(0);
            }else{
                //新增
                mbo = UDWOTASKSet.add();
                System.out.println("--------ID="+mbo.getInt("UDMAINLOGSID"));
                UDMAINLOGSID = mbo.getInt("UDMAINLOGSID");
            }
            mbo.setValue("PARENTID",PARENTID,2L);//
            mbo.setValue("LINENUM",LINENUM,2L);//
            mbo.setValue("MDATE",MDATE,2L);//
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);//
            mbo.setValue("CREATEBY",CREATEBY,2L);
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDMAINLOGSID",UDMAINLOGSID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","save failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }
    //-----------------------删除------------------------------------------------
    /**
     * 主表数据删除 接口，删除主表的时候，先把关联的子表数据删除
     * 先删除：任务表，人员，物料，服务表，维修表
     * 在删除：主表
     * @param received
     * @return
     */
    @POST
    @Path("/deleteData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDWORKORDERID = jsonObject.getInteger("UDWORKORDERID");
            //删除主表
            MboSetRemote UDWORKORDERSet = MXServer.getMXServer().getMboSet("UDWORKORDER",MXServer.getMXServer().getSystemUserInfo());
            UDWORKORDERSet.setWhere(" UDWORKORDERID="+UDWORKORDERID+"");//int 类型
            UDWORKORDERSet.reset();
            MboRemote mbo = UDWORKORDERSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();
            //删除任务表
            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDWOTASK",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" parentid="+UDWORKORDERID+"");//int 类型
            UDWOTASKSet.reset();
            UDWOTASKSet.deleteAll();
            UDWOTASKSet.save();
            //删除人员，物料，服务（三个时共用一张表）
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" parentid="+UDWORKORDERID+"");//int 类型
            UDPLMAWTSet.reset();
            UDPLMAWTSet.deleteAll();
            UDPLMAWTSet.deleteAll();
            UDPLMAWTSet.save();
            //删除维修日志表
            MboSetRemote UDMAINLOGSSet = MXServer.getMXServer().getMboSet("UDMAINLOGS",MXServer.getMXServer().getSystemUserInfo());
            UDMAINLOGSSet.setWhere(" parentid="+UDWORKORDERID+"");//int 类型
            UDMAINLOGSSet.reset();
            UDMAINLOGSSet.deleteAll();
            UDMAINLOGSSet.save();

            returnDate.put("errcode","200");
//            returnDate.put("errmsg","delete success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","delete failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 删除任务
     * @param received
     * @return
     */
    @POST
    @Path("/deleteTaskData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteTaskData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDWOTASKID = jsonObject.getInteger("UDWOTASKID");
            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDWOTASK",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDWOTASKID="+UDWOTASKID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = UDWOTASKSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();

            returnDate.put("errcode","200");
//            returnDate.put("errmsg","delete success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","delete failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 计划/实际
     * 人员-物料-服务-删除
     * 共用一张表
     * @param received
     * @return
     */
    @POST
    @Path("/deletePMSData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeletePMSData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPLMAID = jsonObject.getInteger("UDPLMAID");
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDPLMAWT",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" UDPLMAID="+UDPLMAID+"");//int 类型
            UDPLMAWTSet.reset();
            MboRemote mbo = UDPLMAWTSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();

            returnDate.put("errcode","200");
//            returnDate.put("errmsg","delete success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","delete  failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }

    /**
     * 维修日志--删除
     * @param received
     * @return
     */
    @POST
    @Path("/deleteFixData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteFixData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDMAINLOGSID = jsonObject.getInteger("UDMAINLOGSID");
            MboSetRemote UDWOTASKSet = MXServer.getMXServer().getMboSet("UDMAINLOGS",MXServer.getMXServer().getSystemUserInfo());
            UDWOTASKSet.setWhere(" UDMAINLOGSID="+UDMAINLOGSID+"");//int 类型
            UDWOTASKSet.reset();
            MboRemote mbo = UDWOTASKSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();

            returnDate.put("errcode","200");
//            returnDate.put("errmsg","delete success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","success","errmsg",LANGCODE));
        }catch (Exception e){
            System.out.println("------faileMessage----->"+e.getMessage());
            returnDate.put("errcode","500");
//            returnDate.put("errmsg","delete failure");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("delete","failure","errmsg",LANGCODE));
        }finally {
            return returnDate;
        }
    }


    /**
     * 获取EAM备件物资清单数据
     * @param received
     * @return
     */
    @POST
    @Path("/getItemListData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Map<String,Object> getLldYdle(String received) {
        //定义返回对象
        //JSONObject returnDate = new JSONObject();
        Map<String,Object> returnDate=new HashMap<>();
        String str="";
        try {
            if("".equalsIgnoreCase(received) || null==received){
                str="参数不能为空,请核实后提交!";
                returnDate.put("code", "500");
                returnDate.put("errmsg", str);
                return returnDate;
            }

            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            String KOSTL = jsonObject.getString("KOSTL");//成本中心
            if("".equalsIgnoreCase(KOSTL) || null==KOSTL){
                str="KOSTL参数不能为空,请核实后提交!";
                returnDate.put("code", "500");
                returnDate.put("errmsg",str);
                return returnDate;
            }
            String SITEID = jsonObject.getString("SITEID");//地点
            if("".equalsIgnoreCase(SITEID) || null==SITEID){
                str="SITEID参数不能为空,请核实后提交!";
                returnDate.put("code", "500");
                returnDate.put("errmsg", str);
                return returnDate;
            }
            MboSetRemote UDINVENTORYSET = MXServer.getMXServer().getMboSet("UDINVENTORY",MXServer.getMXServer().getSystemUserInfo());
            String sql=" DEPTNUM IN(SELECT DEPTTYPE FROM DEPT WHERE DEPTNUM in(SELECT WHS_LOCATION_CODE FROM UDCBZXYDLXYS " +
                    "WHERE COST_CENTER='"+KOSTL+"' AND SITEID='"+SITEID+"' ) AND DEPTTYPE IS NOT null) AND SITEID='"+SITEID+"' ";
            UDINVENTORYSET.setWhere(sql);
            UDINVENTORYSET.reset();
            if(UDINVENTORYSET!=null && !UDINVENTORYSET.isEmpty()){
                JSONArray jsonArray = new JSONArray() ;
                int count=UDINVENTORYSET.count();
                for (int i=0;i<count;i++) {
                    net.sf.json.JSONObject jsonObject1  = new net.sf.json.JSONObject();
                    MboRemote udinvMbo=UDINVENTORYSET.getMbo(i);
                    jsonObject1.put("ORGID", udinvMbo.getString("ORGID"));//ORGID
                    jsonObject1.put("SITEID", udinvMbo.getString("SITEID"));//SITEID
                    //DEPTTOTAL---清单余量
                    MboSetRemote DEPTTOTALSET=udinvMbo.getMboSet("$UDMATUSETRANS", "UDMATUSETRANS", "ITEMNUM='"+udinvMbo.getString("ITEMNUM")+"'  " +
                            "and DEPTNUM in(SELECT DEPTNUM FROM DEPT WHERE DEPTTYPE='"+udinvMbo.getString("DEPTNUM")+"'  " +
                            "AND SITEID='"+udinvMbo.getString("SITEID")+"' ) AND ISJJ=0  ");
                    if(null!=DEPTTOTALSET && !DEPTTOTALSET.isEmpty()){
                        jsonObject1.put("DEPTTOTAL", DEPTTOTALSET.sum("QUANTITY"));
                    }else{
                        jsonObject1.put("DEPTTOTAL", "0");
                    }
                    //JJHSYL旧件留用数量
                    MboSetRemote JJHSYLSET=udinvMbo.getMboSet("$UDMATUSETRANS", "UDMATUSETRANS", "ITEMNUM='"+udinvMbo.getString("ITEMNUM")+"'  " +
                            "and DEPTNUM in(SELECT DEPTNUM FROM DEPT WHERE DEPTTYPE='"+udinvMbo.getString("DEPTNUM")+"'  " +
                            "AND SITEID='"+udinvMbo.getString("SITEID")+"' ) AND ISJJ=1 ");
                    if(null!=JJHSYLSET && !JJHSYLSET.isEmpty()){
                        jsonObject1.put("JJHSYL", JJHSYLSET.sum("QUANTITY"));
                    }else{
                        jsonObject1.put("JJHSYL", "0");
                    }
                    jsonObject1.put("DEPTNUM", udinvMbo.getString("DEPTNUM"));//DEPTNUM部门类
                    jsonObject1.put("UDINVENTORYID", udinvMbo.getInt("UDINVENTORYID"));//UDINVENTORYID

                    MboSetRemote MEINSSET=udinvMbo.getMboSet("$EAM_MARA", "EAM_MARA","MATNR='"+udinvMbo.getString("ITEMNUM")+"'");
                    if(null!=MEINSSET && !MEINSSET.isEmpty()){
                        //物料编码
                        jsonObject1.put("ITEMNUM", udinvMbo.getString("ITEMNUM"));
                        jsonObject1.put("MEINS", MEINSSET.getMbo(0).getString("MEINS"));
                        //物料描述
                        jsonObject1.put("ITEMNUMDESC", MEINSSET.getMbo(0).getString("MAKTX"));
                    }else{
                        jsonObject1.put("MEINS", "");
                    }
                    //DEPTNUMDESC
                    //MboSetRemote DEPTNUMDESCSET=udinvMbo.getMboSet("$UDDEPTCLASS", "UDDEPTCLASS ","DEPTCLASSNUM='"+udinvMbo.getString("DEPTNUM")+"' ");
                    MboSetRemote uddeptclass = MXServer.getMXServer().getMboSet("UDDEPTCLASS", MXServer.getMXServer().getSystemUserInfo());
                    uddeptclass.setWhere("DEPTCLASSNUM='"+udinvMbo.getString("DEPTNUM")+"' ");
                    uddeptclass.reset();
                    if(null!=uddeptclass && !uddeptclass.isEmpty()){
                        jsonObject1.put("DEPTNUMDESC", uddeptclass.getMbo(0).getString("DESCRIPTION"));//DEPTNUMDESC部门类描述
                    }else{
                        jsonObject1.put("DEPTNUMDESC", "");//DEPTNUMDESC部门类描述
                    }
                    uddeptclass.close();
                    jsonArray.add(jsonObject1);
                }
                returnDate.put("errcode","200");
                returnDate.put("errmsg","success");
                returnDate.put("jsonArray",jsonArray);
                return returnDate;
            }else{
                str="入参无查询结果,请核实后提交!";
                returnDate.put("errcode","500");
                returnDate.put("errmsg",str);
                return returnDate;
            }
        }catch (Exception e){
            str=e.getMessage();
            returnDate.put("errcode","500");
            returnDate.put("errmsg",str);
            return returnDate;
        }
    }
}
