package psdi.app.iface.mobile;

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

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.text.SimpleDateFormat;
import java.util.Date;

/**
 * 工厂稽查
 * createby liuxq   2023-07-03
 */

@Path("/udinspect")
public class UdInspectServer {

    /**
     * 主表-数据保存or提交接口
     * @param received
     * @return
     */
    @POST
    @Path("/saveData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveOrSubmitData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDINSPECTID = jsonObject.getInteger("UDINSPECTID");//主表ID
            String UDINSPECTNUM = jsonObject.getString("UDINSPECTNUM");//稽查编号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//描述-标题
            String TYPE = jsonObject.getString("TYPE");//类型
            String CREATEBY = jsonObject.getString("CREATEBY");//创建人
            String COMITDATEStr = jsonObject.getString("COMITDATE");//提交日期
            Date COMITDATE = null;
            if(COMITDATEStr!=null&&!"".equals(COMITDATEStr)){
                COMITDATE = sdf.parse(COMITDATEStr);
            }
            String CREATEDATEStr = jsonObject.getString("CREATEDATE");//创建日期
            Date CREATEDATE = null;
            if(CREATEDATEStr!=null&&!"".equals(CREATEDATEStr)){
                CREATEDATE = sdf.parse(CREATEDATEStr);
            }
            String COUNTRY = jsonObject.getString("COUNTRY");//国家
            String CONTENT = jsonObject.getString("CONTENT");//内容
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            MboSetRemote UDINSPECTSet = MXServer.getMXServer().getMboSet("UDINSPECT",MXServer.getMXServer().getSystemUserInfo());
            UDINSPECTSet.setWhere("UDINSPECTID="+UDINSPECTID+"");
            UDINSPECTSet.reset();
            MboRemote mbo = null;
            if(UDINSPECTSet!=null && !UDINSPECTSet.isEmpty()){
                //编辑
                mbo = UDINSPECTSet.getMbo(0);
            }else{
                //新增
                mbo = UDINSPECTSet.add();
                mbo.setValue("STATUS","EDIT",2L);
                UDINSPECTID = mbo.getInt("UDINSPECTID");
                UDINSPECTNUM = String.valueOf(UDINSPECTID);
            }
            mbo.setValue("UDINSPECTNUM",UDINSPECTNUM,2L);
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);
            mbo.setValue("TYPE",TYPE,2L);
            mbo.setValue("CREATEBY",CREATEBY,2L);
            mbo.setValue("COMITDATE",COMITDATE,2L);
            mbo.setValue("CREATEDATE",CREATEDATE,2L);
            mbo.setValue("COUNTRY",COUNTRY,2L);
            mbo.setValue("CONTENT",CONTENT,2L);
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save();
            returnDate.put("UDINSPECTID",UDINSPECTID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            e.printStackTrace();
            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("/savePeoData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SavePeoData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPARTICIPANTSID = jsonObject.getInteger("UDPARTICIPANTSID");//主表ID
            int NUM = jsonObject.getInteger("NUM");//序号
            String PERSONID = jsonObject.getString("PERSONID");//参与人
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            MboSetRemote UDPARTICIPANTSSet = MXServer.getMXServer().getMboSet("UDPARTICIPANTS",MXServer.getMXServer().getSystemUserInfo());
            UDPARTICIPANTSSet.setWhere("UDPARTICIPANTSID="+UDPARTICIPANTSID+"");
            UDPARTICIPANTSSet.reset();
            MboRemote mbo = null;
            if(UDPARTICIPANTSSet!=null && !UDPARTICIPANTSSet.isEmpty()){
                //编辑
                mbo = UDPARTICIPANTSSet.getMbo(0);
            }else{
                //新增
                mbo = UDPARTICIPANTSSet.add();
                UDPARTICIPANTSID = mbo.getInt("UDPARTICIPANTSID");
            }
            mbo.setValue("NUM",NUM,2L);
            mbo.setValue("PERSONID",PERSONID,2L);
            mbo.setValue("PARENTID",PARENTID,2L);
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save();
            returnDate.put("UDPARTICIPANTSID",UDPARTICIPANTSID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            e.printStackTrace();
            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("/saveIssueData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveIssueData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDISSUEID = jsonObject.getInteger("UDISSUEID");//主表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            int NUM = jsonObject.getInteger("NUM");//序号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//问题描述
            String PROPOSER = jsonObject.getString("PROPOSER");//提出人
            String REPERSON = jsonObject.getString("REPERSON");//责任人
            String TCDATEStr = jsonObject.getString("TCDATES");//任务提出日期
            Date TCDATE = null;
            if(TCDATEStr!=null&&!"".equals(TCDATEStr)){
                TCDATE = sdf.parse(TCDATEStr);
            }
            String PLANCOMDATEStr = jsonObject.getString("PLANCOMDATE");//计划完成日期
            Date PLANCOMDATE = null;
            if(PLANCOMDATEStr!=null&&!"".equals(PLANCOMDATEStr)){
                PLANCOMDATE = sdf.parse(PLANCOMDATEStr);
            }
            String REALITYDATEStr = jsonObject.getString("REALITYDATE");//实际完成日期
            Date REALITYDATE = null;
            if(REALITYDATEStr!=null&&!"".equals(REALITYDATEStr)){
                REALITYDATE = sdf.parse(REALITYDATEStr);
            }
            String STATUS = jsonObject.getString("STATUS");//状态
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            MboSetRemote UDPARTICIPANTSSet = MXServer.getMXServer().getMboSet("UDISSUE",MXServer.getMXServer().getSystemUserInfo());
            UDPARTICIPANTSSet.setWhere("UDISSUEID="+UDISSUEID+"");
            UDPARTICIPANTSSet.reset();
            MboRemote mbo = null;
            if(UDPARTICIPANTSSet!=null && !UDPARTICIPANTSSet.isEmpty()){
                //编辑
                mbo = UDPARTICIPANTSSet.getMbo(0);
            }else{
                //新增
                mbo = UDPARTICIPANTSSet.add();
                UDISSUEID = mbo.getInt("UDISSUEID");
            }
            mbo.setValue("PARENTID",PARENTID,2L);
            mbo.setValue("NUM",NUM,2L);
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);
            mbo.setValue("PROPOSER",PROPOSER,2L);
            mbo.setValue("REPERSON",REPERSON,2L);
            mbo.setValue("TCDATE",TCDATE,2L);
            mbo.setValue("PLANCOMDATE",PLANCOMDATE,2L);
            mbo.setValue("REALITYDATE",REALITYDATE,2L);
            mbo.setValue("STATUS","EDIT",2L);//编辑
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save(11L);
            returnDate.put("UDISSUEID",UDISSUEID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            e.printStackTrace();
            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("/saveMesureData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject SaveMesureData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDMEASUREID = jsonObject.getInteger("UDMEASUREID");//主表ID
            Integer PARENTID = jsonObject.getInteger("PARENTID");//父级ID
            int NUM = jsonObject.getInteger("NUM");//序号
            String DESCRIPTION = jsonObject.getString("DESCRIPTION");//问题描述
            String EXECUTOR = jsonObject.getString("EXECUTOR");//执行人
            String COMPDATEStr = jsonObject.getString("COMPDATE");//完成日期
            Date COMPDATE = null;
            if(COMPDATEStr!=null&&!"".equals(COMPDATEStr)){
                COMPDATE = sdf.parse(COMPDATEStr);
            }
            String STATUS = jsonObject.getString("STATUS");//状态
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            MboSetRemote UDPARTICIPANTSSet = MXServer.getMXServer().getMboSet("UDMEASURE",MXServer.getMXServer().getSystemUserInfo());
            UDPARTICIPANTSSet.setWhere("UDMEASUREID="+UDMEASUREID+"");
            UDPARTICIPANTSSet.reset();
            MboRemote mbo = null;
            if(UDPARTICIPANTSSet!=null && !UDPARTICIPANTSSet.isEmpty()){
                //编辑
                mbo = UDPARTICIPANTSSet.getMbo(0);
            }else{
                //新增
                mbo = UDPARTICIPANTSSet.add();
                UDMEASUREID = mbo.getInt("UDMEASUREID");
            }
            mbo.setValue("PARENTID",PARENTID,2L);
            mbo.setValue("NUM",NUM,2L);
            mbo.setValue("DESCRIPTION",DESCRIPTION,2L);
            mbo.setValue("EXECUTOR",EXECUTOR,2L);
            mbo.setValue("COMPDATE",COMPDATE,2L);
            mbo.setValue("STATUS","COMP",2L);//完成
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save();
            returnDate.put("UDMEASUREID",UDMEASUREID);//返回前端刷新页面
            returnDate.put("errcode","200");
//            returnDate.put("errmsg","save success");
            returnDate.put("errmsg",new AMobileConfig().getTipByLang("save","success","errmsg",LANGCODE));
        }catch (Exception e){
            e.printStackTrace();
            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 UDINSPECTID = jsonObject.getInteger("UDINSPECTID");
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDINSPECT",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" UDINSPECTID="+UDINSPECTID+"");//int 类型
            UDPLMAWTSet.reset();
            MboRemote mbo = UDPLMAWTSet.getMbo(0);//
            mbo.delete();//相当于delete语句，结束后，还得保存
            mbo.getThisMboSet().save();
            //参与人删除
            MboSetRemote UDPARTICIPANTSSet = MXServer.getMXServer().getMboSet("UDPARTICIPANTS",MXServer.getMXServer().getSystemUserInfo());
            UDPARTICIPANTSSet.setWhere(" parentid="+UDINSPECTID+"");//int 类型
            UDPARTICIPANTSSet.reset();
            UDPARTICIPANTSSet.deleteAll();
            UDPARTICIPANTSSet.save();
            //问题
            MboSetRemote UDISSUESet = MXServer.getMXServer().getMboSet("UDISSUE",MXServer.getMXServer().getSystemUserInfo());
            UDISSUESet.setWhere(" parentid="+UDINSPECTID+"");//int 类型
            UDISSUESet.reset();
            //措施删除
            for(int i=-0;i<UDISSUESet.count();i++){
                MboRemote issueMbo = UDISSUESet.getMbo(i);
                int UDISSUEID = issueMbo.getInt("UDISSUEID");
                //措施删除
                MboSetRemote UDMEASURESet = MXServer.getMXServer().getMboSet("UDMEASURE",MXServer.getMXServer().getSystemUserInfo());
                UDMEASURESet.setWhere(" parentid="+UDISSUEID+"");//int 类型
                UDMEASURESet.reset();
                UDMEASURESet.deleteAll();
                UDMEASURESet.save();
            }
            //问题删除
            MboSetRemote UDISSUESet1 = MXServer.getMXServer().getMboSet("UDISSUE",MXServer.getMXServer().getSystemUserInfo());
            UDISSUESet1.setWhere(" parentid="+UDINSPECTID+"");//int 类型
            UDISSUESet1.reset();
            UDISSUESet1.deleteAll(11L);
            UDISSUESet1.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("/deleteIssueData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteIssueData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDISSUEID = jsonObject.getInteger("UDISSUEID");
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDISSUE",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" UDISSUEID="+UDISSUEID+"");//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("/deletePeoData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeletePeoData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDPARTICIPANTSID = jsonObject.getInteger("UDPARTICIPANTSID");
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDPARTICIPANTS",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" UDPARTICIPANTSID="+UDPARTICIPANTSID+"");//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("/deleteMeasureData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject DeleteMeasureData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer UDMEASUREID = jsonObject.getInteger("UDMEASUREID");
            MboSetRemote UDPLMAWTSet = MXServer.getMXServer().getMboSet("UDMEASURE",MXServer.getMXServer().getSystemUserInfo());
            UDPLMAWTSet.setWhere(" UDMEASUREID="+UDMEASUREID+"");//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;
        }
    }

}
