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;

/**
 * 模具管理-上下机管理
 * 主表的数据增删改查只能从PC端新增，用的是asset表
 * createby liuxq   2023-08-22
 */

@Path("/udMoldMag")
public class udMoldMagServer {

    /**
     *  上下机管理保存
     * @param received
     * @return
     */
    @POST
    @Path("/saveLineData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject saveLineData(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 ASSETUPDOWNID = jsonObject.getInteger("ASSETUPDOWNID");//主表ID
            String PARENTID = jsonObject.getString("PARENTID");//父级ID
            String ASSETNUM = jsonObject.getString("ASSETNUM");//资产编号
            String UPTIME = jsonObject.getString("UPTIME");//上机时间
            Date UPTIMEDATE = null;
            if(UPTIME!=null && !"".equals(UPTIME)){
                UPTIMEDATE = sdf.parse(UPTIME);
            }
            String DOWNTIME = jsonObject.getString("DOWNTIME");//下机时间
            Date DOWNTIMEDATE = null;
            if(DOWNTIME!=null && !"".equals(DOWNTIME)){
                DOWNTIMEDATE = sdf.parse(DOWNTIME);
            }
            Double UPDS = jsonObject.getDouble("UPDS")==null?0.0:jsonObject.getDouble("UPDS");//上机读数
            Double DOWNDS = jsonObject.getDouble("DOWNDS")==null?0.0:jsonObject.getDouble("DOWNDS");//下机读数
            Double TOTAL = jsonObject.getDouble("TOTAL")==null?0.0:jsonObject.getDouble("TOTAL");//切割片数/压制次数= 下机读数-上机读数
            String DSUNIT = jsonObject.getString("DSUNIT");//单位
            String EXECTOR = jsonObject.getString("EXECTOR");//执行人
            String REASON = jsonObject.getString("REASON");//更换原因
            String ORGID = jsonObject.getString("ORGID");//组织
            String SITEID = jsonObject.getString("SITEID");//地点
            MboSetRemote ASSETUPDOWNSet = MXServer.getMXServer().getMboSet("ASSETUPDOWN",MXServer.getMXServer().getSystemUserInfo());
            ASSETUPDOWNSet.setWhere("ASSETUPDOWNID="+ASSETUPDOWNID+"");
            ASSETUPDOWNSet.reset();
            MboRemote mbo = null;
            if(ASSETUPDOWNSet!=null && !ASSETUPDOWNSet.isEmpty()){
                //编辑
                mbo = ASSETUPDOWNSet.getMbo(0);
            }else{
                //新增
                mbo = ASSETUPDOWNSet.add();
                ASSETUPDOWNID = mbo.getInt("ASSETUPDOWNID");
            }
            mbo.setValue("PARENTID",PARENTID,2L);
            mbo.setValue("ASSETNUM",ASSETNUM,2L);
            mbo.setValue("UPTIME",UPTIMEDATE,2L);
            mbo.setValue("DOWNTIME",DOWNTIMEDATE,2L);
            mbo.setValue("UPDS",UPDS);//不加2L，就不用调字段类
            mbo.setValue("DOWNDS",DOWNDS);//不加2L，就不用调字段类
            mbo.setValue("TOTAL",TOTAL,2L);
            mbo.setValue("DSUNIT",DSUNIT,2L);
            mbo.setValue("EXECTOR",EXECTOR,2L);
            mbo.setValue("REASON",REASON,2L);
            mbo.setValue("ORGID",ORGID,2L);
            mbo.setValue("SITEID",SITEID,2L);
            //保存
            mbo.getThisMboSet().save();//11L会强制调用原来的自身的保存方法
            returnDate.put("ASSETUPDOWNID",ASSETUPDOWNID);//返回前端刷新页面
            MboSetRemote assetUpdownSet = MXServer.getMXServer().getMboSet("ASSETUPDOWN", MXServer.getMXServer().getSystemUserInfo());
            assetUpdownSet.setWhere("PARENTID='"+PARENTID+"'");
            if(assetUpdownSet!=null && !assetUpdownSet.isEmpty()){
                double total = assetUpdownSet.sum("TOTAL");
                String totalStr = String.valueOf(total);
                MboSetRemote assetSet = MXServer.getMXServer().getMboSet("ASSET", MXServer.getMXServer().getSystemUserInfo());
                assetSet.setWhere("assetuid='"+PARENTID+"'");
                assetSet.reset();
                if(assetSet!=null && !assetSet.isEmpty()){
                    MboRemote assetMbo = assetSet.getMbo(0);
                    assetMbo.setValue("EQ1",totalStr,11L);
                    assetMbo.getThisMboSet().save(11L);
                }
            }

            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;
        }
    }


    //---删除---start-----------------------------------------------------------------------------

    /**
     * 上下机管理的删除
     * @param received
     * @return
     */
    @POST
    @Path("/deleteLineData")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public JSONObject deleteLineData(String received) {
        //定义返回对象
        JSONObject returnDate = new JSONObject();
        String LANGCODE = "";//语言环境
        try {
            //接收app数据
            JSONObject jsonObject = JSONObject.parseObject(received);
            LANGCODE = jsonObject.getString("LANGCODE");
            Integer ASSETUPDOWNID = jsonObject.getInteger("ASSETUPDOWNID");
            MboSetRemote ASSETUPDOWNSet = MXServer.getMXServer().getMboSet("ASSETUPDOWN",MXServer.getMXServer().getSystemUserInfo());
            ASSETUPDOWNSet.setWhere(" ASSETUPDOWNID="+ASSETUPDOWNID+"");//int 类型
            ASSETUPDOWNSet.reset();
            MboRemote mbo = ASSETUPDOWNSet.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;
        }
    }
}
