基于javaweb+mysql的ssm+maven医药进销存系统(java+ssm+jsp+layui+jquery+maven+mysql)

这是一个基于JavaWeb、SSM(Spring、SpringMVC、MyBatis)和Maven的医药进销存管理系统,包括公告管理、生产管理、分店采购、总店仓库、分店管理、商品管理、合同管理、会员管理、质检和权限管理等功能。系统使用Eclipse/IDEA等开发工具,MySQL作为数据库,Tomcat作为服务器。
摘要由CSDN通过智能技术生成

基于javaweb+mysql的ssm+maven医药进销存系统(java+ssm+jsp+layui+jquery+maven+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SSM+Maven医药进销存系统(java+ssm+jsp+layui+jquery+maven+mysql)

功能介绍

医药进销存系统,主要功能包括:

公告管理:发布公告、公告列表; 生产管理:订单列表、增加生产、订单日志; 分店采购:分店审核、采购; 总店仓库:出库管理、仓库列表、入库管理; 分店管理:分店库存、分店列表、分店财务; 商品管理:原材料、药效、商品列表、药品类型; 总店采购:采购列表、采购审核; 合同管理:合同类型管理、合同列表; 会员管理:会员列表; 质检:质检; 权限管理:人员管理、模块管理、部门管理、角色管理; 审核管理:财务审核、生产审核、采购审核; 分店销售:销售统计图、订单批发审核、订单列表、分店销售; 该项目共有49张表,功能比较复杂;

其他管理:供货商管理,新增、搜索、编辑、删除;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7版本;

技术栈

  1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+Layui+jQuery

运行说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 3. 将项目中db.properties和spring.xml配置文件中的数据库配置改为自己的配置;

  2. 运行项目,输入http://localhost:8080/medicine/page/login.jsp 登录

			//消息类的消息值赋值为成功
			mes.setMes("操作成功");
			//将消息类的状态赋值为1
			mes.setState(1);
		}else{
			//消息类的消息值赋值为失败
			mes.setMes("操作失败");
			//将消息类的状态赋值为0
			mes.setState(0);
		}
		//返回消息类
		return mes;
		
		
	}
	
	/**
	 * 增加类型
	 * @param record 类型对象
	 * @return 返回信息类
	 */
	@RequestMapping("insertSelectivePact")
	@ResponseBody
	public SsmMessage insertSelectivePact(ErpPact record,HttpSession session){
		
		
		
		//给订单采购的id赋值为订单采购的id 
		record.setPurId(record.getPurId());
		//给供货商的id赋值为供货商的id
		record.setApplyId(record.getApplyId());
		//给合同类型的id赋值为合同类型的id
		record.setPatypeId(record.getPatypeId());
		//给合同的标题赋值为合同的标题
		record.setPactTitle(record.getPactTitle());
		//给合同的编号赋值为工具类中的得到订单编码格式:日期格式如:20161222211800,分别代表的是年月日时分秒+5位随机字符串
		record.setPactNumber("HT-"+Tools.getDateOrderNo());
		//初始化时间对象
		Date date=new Date();
		//将合同的时间赋值为初始化的时间
		record.setPactSigntime(date);
		//给合同内容赋值为合同的内容
		record.setPactText(record.getPactText());
		//给合同id赋值为合同id
			mes.setMes("操作成功");
			//将消息类的状态赋值为1
			mes.setState(1);
		}else{
			//消息类的消息值赋值为失败
			mes.setMes("操作失败");
			//将消息类的状态赋值为0
			mes.setState(0);
		}
		//返回mes
		return mes;
		
		
	}
	
	
	/**
	 * 根据id查询
	 * @return 返回list
	 */
	@RequestMapping("/findByID")
	@ResponseBody
	public ErpPactType findByID(String patypeId){
		//合同类型的查找单个对象方法
		ErpPactType pact=pactTypeService.selectByPrimaryKey(patypeId);
		//返回pact
		return pact;
		
	}
}
/**
 * 
 */
package com.yidu.action.ErpProlistmxsmall;

            return amount;
        }
        //传入的金额字符串代表的是一个整数
        if(-1 == amount.indexOf(".")){
            return Integer.parseInt(amount) * 100 + "";
        }
        //传入的金额字符串里面含小数点-->取小数点前面的字符串,并将之转换成单位为分的整数表示
        int money_fen = Integer.parseInt(amount.substring(0, amount.indexOf("."))) * 100;
        //取到小数点后面的字符串
        String pointBehind = (amount.substring(amount.indexOf(".") + 1));
        //amount=12.3
        if(pointBehind.length() == 1){
            return money_fen + Integer.parseInt(pointBehind)*10 + "";
        }
        //小数点后面的第一位字符串的整数表示
        int pointString_1 = Integer.parseInt(pointBehind.substring(0, 1));
        //小数点后面的第二位字符串的整数表示
        int pointString_2 = Integer.parseInt(pointBehind.substring(1, 2));
        //amount==12.03,amount=12.00,amount=12.30
        if(pointString_1 == 0){
            return money_fen + pointString_2 + "";
        }else{
            return money_fen + pointString_1*10 + pointString_2 + "";
        }
    }
    
    /**
     * 金额分转元
     * @see 注意:如果传入的参数中含小数点,则直接原样返回
     * @see 该方法返回的金额字符串格式为<code>00.00</code>,其整数位有且至少有一个,小数位有且长度固定为2
     * @param amount  金额的分进制字符串
     * @return String 金额的元进制字符串
     */
    public static String moneyFenToYuan(String amount){
        if(isEmpty(amount)){
            return amount;
        }
        if(amount.indexOf(".") > -1){
            return amount;
        }
        if(amount.length() == 1){
            return "0.0" + amount;
        }else if(amount.length() == 2){

/**
 * 分店销售订单action
 * @data 2017年11月8日08:46:24
 */
@Controller
@RequestMapping("/sctockmp")
public class SctockmpAction {
	@Resource
	AnnexService annexService;//分店表
	@Resource
	SctockmpService sctockmpService;//分店销售订单表
	
	/**
     * 查询今天的订单数量
     * @return 订单数量
	 * @dataTime 2017年12月11日16:24:53
     */
	@RequestMapping("/findToDay")
	@ResponseBody  //ajax注解
	public int findToDay(){
		return sctockmpService.findToDay();//订单:查询今天的订单数量
	}
	
	/**
	 * 审核通过,增加批发状态
	 * @param saleId 订单ID
	 * @param session HttpSession
	 * @return 影响行数
	 * @dataTime 2017年12月1日08:43:55
	 */
	@RequestMapping("/updateWholesaleStateAdd")
	@ResponseBody  //ajax注解
	public int updateWholesaleStateAdd(String saleId,HttpSession session){
		return sctockmpService.updateWholesaleStateAdd(saleId,session);//订单:审核通过,增加批发状态
		return view;
	}
	
	
	@ResponseBody
	@RequestMapping("updateIsva")
	private  SsmMessage updateIsva (String fdprolistmxId){
		SsmMessage mes = new SsmMessage();
		int rows = prolistmxsmallService.updateIsva(fdprolistmxId);
		if(rows>0){
			mes.setMes("ok");
		}
		return mes;
	}
	/**
	 * 查询单个采购的所有详情
	 * @param fdproId 采购id
	 * @return 采购详情的集合
	 */
	@ResponseBody
	@RequestMapping("selectBankNew")
	private  List<ErpProlistmxsmall> selectBankNew (String fdproId){
		List<ErpProlistmxsmall> list = prolistmxsmallService.selectBankNew(fdproId);
		return list;
	}
	
	@ResponseBody
	@RequestMapping("add")
	private  SsmMessage add (@RequestParam(value = "kinId[]") String[] kinId,String fdprolistmxCount,String kinPrice,String fdprolistmxMoney,String fdproId,HttpSession session,String zong){
		SsmMessage mes = new SsmMessage();
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");
		String [] fdprolistmxCount1 = fdprolistmxCount.split(",");
		String [] fdprolistmxMoney1 = fdprolistmxMoney.split(",");
		int count = 0;
		for(int i =0;i<fdprolistmxCount1.length;i++){
			count += Integer.valueOf(fdprolistmxCount1[i]);
		}
		Date date = new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		java.util.Random random=new java.util.Random();
	    //建立新的sheet对象(excel的表单)
	    HSSFSheet sheet=wb.createSheet("商品表");
	    //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
	    HSSFRow row1=sheet.createRow(0);
	    //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
	    HSSFCell cell=row1.createCell(0);
	    //设置单元格内容
	    cell.setCellValue("商品列表");
	    //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
	    sheet.addMergedRegion(new CellRangeAddress(0,0,0,10));
	    //在sheet里创建第二行
	    HSSFRow row2=sheet.createRow(1);    
	    //创建单元格并设置单元格内容
		row2.createCell(0).setCellValue("编号");
		row2.createCell(1).setCellValue("药品名");    
		row2.createCell(2).setCellValue("类型");
		row2.createCell(3).setCellValue("药效");
		row2.createCell(4).setCellValue("条形码"); 
		row2.createCell(5).setCellValue("净含量");
		row2.createCell(6).setCellValue("保质期");
		row2.createCell(7).setCellValue("成本价");
		row2.createCell(8).setCellValue("销售价");
		row2.createCell(9).setCellValue("批发价");
		row2.createCell(10).setCellValue("备注");
		
		for(int i =0;i<list.size();i++){
			ErpKinds kind = list.get(i);
			HSSFRow row3=sheet.createRow(2+i);
			row3.createCell(0).setCellValue(kind.getKinSerial());
			row3.createCell(1).setCellValue(kind.getKinName());
			row3.createCell(2).setCellValue(kind.getTyper().getTypeName());
			row3.createCell(3).setCellValue(kind.getResName());
			row3.createCell(4).setCellValue(kind.getKinBarcode());
			row3.createCell(5).setCellValue(kind.getKinContent().doubleValue());
			row3.createCell(6).setCellValue(kind.getKinExpiration());
			row3.createCell(7).setCellValue(kind.getKinPrice().doubleValue());
			row3.createCell(8).setCellValue(kind.getKinStost().doubleValue());
			row3.createCell(9).setCellValue(kind.getKinSellinf().doubleValue());
			row3.createCell(10).setCellValue(kind.getRemark());
		}
		//输出Excel文件
	    try {
			OutputStream output=response.getOutputStream();
			response.reset();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String time =  sdf.format(new Date()).replace("-", "");
			response.setHeader("Content-disposition", "attachment; filename=kinds"+time+".xls");
		    response.setContentType("application/msexcel");   
		    wb.write(output);
		    output.flush();
		    output.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
	
	/**
	 * 将首字母大写
	 * @param name 属性名
	 * @return 例如传入属性name,得到的结果是Name
	 */
	public static String firstUpp(String name){
		if(isEmpty(name)) return name ;
		char first = name.charAt(0) ;
		String newName = Character.toUpperCase(first)+name.substring(1) ;
		return newName ;
	}
	
	/**
	 * 将字符串编码,utf-8格式
	 * @param str
	 * @return
	 */
	public static String encode(String str){
		try {
			 return URLEncoder.encode(str, "utf-8");
		} catch (UnsupportedEncodingException e) { 
			e.printStackTrace();
		}
		return null ;
	}
	
	 /**
     * 字符解码
     * @see 该方法默认会以UTF-8解码字符串
     * @see 若想自己指定字符集,可以使用<code>decode(String chinese, String charset)</code>方法
     */
    public static String decode(String chinese){
        return decode(chinese, "UTF-8");
    }
    
    /**
     * 字符解码
     * @see 该方法通常用于对中文进行解码
     * @see 若系统不支持指定的解码字符集,则直接将<code>chinese</code>原样返回
     */
    public static String decode(String chinese, String charset){
			e.printStackTrace();
		}
		//获取Excel文档中的第一个表单
		Sheet sht0 = wb.getSheetAt(0);
		//对Sheet中的每一行进行迭代
        for (Row r : sht0) {
	        //如果当前行的行号(从0开始)未达到2(第三行)则从新循环
			if(r.getRowNum()<2){
				continue;
			}
			//当前列的数据
			ErpKinds kinds = new ErpKinds();
			if(r.getCell(0)!=null){
				r.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinSerial(r.getCell(0).getStringCellValue());
			}
			if(r.getCell(4)!=null){
				r.getCell(4).setCellType(Cell.CELL_TYPE_STRING);
				if(r.getCell(4).getStringCellValue().indexOf(".")>-1){
					String barcode = r.getCell(4).getStringCellValue().split("\\.")[0];
					kinds.setKinBarcode(barcode);
				}else{
					kinds.setKinBarcode(r.getCell(4).getStringCellValue());
				}
			}
			if(r.getCell(1)!=null){
				r.getCell(1).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinName(r.getCell(1).getStringCellValue());
			}
			if(r.getCell(5)!=null){
				r.getCell(5).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinContent(new BigDecimal(r.getCell(5).getStringCellValue()));
			}
			if(r.getCell(6)!=null){
				r.getCell(6).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinExpiration(r.getCell(6).getStringCellValue());
			}
			if(r.getCell(7)!=null){
				r.getCell(7).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinPrice(new BigDecimal(r.getCell(7).getStringCellValue()));
			}
			if(r.getCell(9)!=null){
				r.getCell(9).setCellType(Cell.CELL_TYPE_STRING);
				kinds.setKinSellinf(new BigDecimal(r.getCell(9).getStringCellValue()));
			}
			if(r.getCell(8)!=null){
				r.getCell(8).setCellType(Cell.CELL_TYPE_STRING);
/**
 * 订单action
 * @da2017年11月7日
 * @version 1.0
 */
@Controller
@RequestMapping("dent")
public class ProindentAction {
	@Resource
	private ProindentService proindentService;//订单
	
	@Resource
	private ProindentDetailService ProindentDetailService;//订单明细
	
	@Resource
	private ErpWarehouseService erpWarehouseService;//仓库
	
	
	SsmMessage  mes=new SsmMessage();//消息类
	
	
	
	/**
	 * 下拉框查询所有订单
	 * @return list
	 */
	@RequestMapping("/findByxl")
	@ResponseBody
	public List<ErpProindent> findByxl(ErpProindent dent){
		List<ErpProindent> list=proindentService.findStation();
		
		return list;
		
	}
	
	
	
	
	
	/**
	 * 下拉框查询所有订单
	 * @param express
	 * @return map
	 */
	@RequestMapping("/findByshowxl")
	@ResponseBody
	public List<Map<String, Object>> findByshowxl(ErpProindent dent){
		
		List<Map<String, Object>> map=proindentService.findStationid(dent.getIndentId());//根据订单ID查询商品,下拉框 
		
		return map;
		
	}
					mes.setMes("修改成功");
					mes.setState(1);
				}else{
					mes.setMes("修改失败");
					mes.setState(0);
				}
			} catch (BackException e) {
				e.printStackTrace();
			}
		}else{
			mes.setMes("类型id无效");
			mes.setState(0);
		}
		
		return mes;
	}
	/**
	 * 模糊查询
	 * @param price 值
	 * @return 返回对象的map
	 */
	@RequestMapping("findDimRew")
	@ResponseBody
	public Map findDimRaw(String price,Integer page,Integer limit){
		Map<String,Object> map = new HashMap<String,Object>();
		Pages pa = new Pages();
		pa.setCurPage(page);
		pa.setMaxResult(limit);
		map.put("page", pa.getFirstRows());
		map.put("limit", pa.getMaxResult());
		map.put("pricer", price);
		List<ErpRaw> list = service.findDimRaw(map);
		map.put("code", "");
		map.put("msg", "");
		map.put("count", list.size());
		map.put("data", list);
		return map;
	}
	/**
	 * 查询单个对象
	 * @param rawId 原材料id
	 * @return 返回对象
	 */
	@RequestMapping("selectByPrimaryKey")
	@ResponseBody
	public List<ErpRaw> selectByPrimaryKey(String rawId){
		if(rawId==null ||rawId==""){//判断id是否为空
			return null;
		}
		List<ErpRaw> list = service.selectByPrimaryKey(rawId); //调用方法执行语句
		return list;
	}
}
	 * @param keywords
	 * @return map
	 */
	@RequestMapping("/showAll")
	@ResponseBody
	public Map<String,Object> showAll(String keywords,String page,String limit){
		Map<String,Object> mapPage = new HashMap<String,Object>();//定义Map集合
		Pages pages = new Pages();//得到分页类
		pages.setCurPage(Integer.valueOf(page));//当前页数
		pages.setMaxResult(Integer.valueOf(limit));//每页显示最大条数
		mapPage.put("pages", pages);//传入分页参数
		//判断前台传值是否为空,如不为空则进行迷糊查询
		if(keywords==null || "".equals(keywords)){
			mapPage.put("keywords", "");//为空不传值
		}else {
			mapPage.put("keywords", "%"+keywords+"%");//不为空传值模糊查询
		}
		Map<String,Object> map = new HashMap<String,Object>();//定义Map集合用于将前台的值
		List<ErpPurchase> list = erpPurchaseService.selectAll(mapPage);//查询增加原材料数据

		map.put("code", 0);
		map.put("msg", "");
		map.put("count", erpPurchaseService.purchaseFindRows(mapPage));//规定分页信息
		map.put("data", list);//传入list
		return map;//返回map
	}
	/**
	 * 显示和查询和分页(采购成品)
	 * @param purcId
	 * @param keywords
	 * @return map
	 */
	@RequestMapping("/showAlls")
	@ResponseBody
	public Map<String,Object> showAlls(String keywords,String page,String limit){
		Map<String,Object> mapPage = new HashMap<String,Object>();//定义Map集合
		Pages pages = new Pages();//得到分页类
		pages.setCurPage(Integer.valueOf(page));//当前页数
		pages.setMaxResult(Integer.valueOf(limit));//每页显示最大条数
		mapPage.put("pages", pages);//传入分页参数
		//判断前台传值是否为空,如不为空则进行迷糊查询
		if(keywords==null || "".equals(keywords)){
			mapPage.put("keywords", "");//为空不传值
		}else {
			mapPage.put("keywords", "%"+keywords+"%");//不为空传值模糊查询
		}
		Map<String,Object> map = new HashMap<String,Object>();//定义Map集合用于将前台的值
		List<ErpPurchase> list = erpPurchaseService.selectAlls(mapPage);//查询增加成品数据

		map.put("code", 0);
		map.put("msg", "");
		map.put("count", erpPurchaseService.purchaseFindRow(mapPage));//规定分页信息
	/**
	 * 根据id查询
	 * @return 返回list
	 */
	@RequestMapping("/findByID")
	@ResponseBody
	public ErpPact findByID(String pactId){
		//合同表 合同方法查找单个对象 返回合同
		ErpPact pact=erpPactService.selectByPrimaryKey(pactId);
		//返回合同
		return pact;
		
	}
	
	
	/**
	 * 根据id查询
	 * @return 返回list
	 */
	@RequestMapping("/findByshowid")
	@ResponseBody
	public Map<String, Object> findByshowid(String pactId){
		//map 合同方法根据合同id查询供货商和合同详情 返回合同
		Map<String, Object> pact=erpPactService.selectshowid(pactId);
		//返回合同
		return pact;
	}
}
/**
 * XLe1丶
 * 2017年11月3日 2017年8月1日16:02:52
 */
package com.yidu.action.ErpRole;

			ErpModel erpModel = (ErpModel) iterator.next();
			ZTree t = new ZTree();
			t.setId(erpModel.getModelId());
			t.setpId(erpModel.getErpModelId());
			t.setName(erpModel.getModelName());
			for (Iterator iterator2 = model2.iterator(); iterator2.hasNext();) {
				ErpModel erpModel2 = (ErpModel) iterator2.next();
				if(erpModel.getModelId().equals(erpModel2.getModelId())){
					t.setChecked("true");
				}
			}
			for (Iterator iterator2 = model3.iterator(); iterator2.hasNext();) {
				ErpRoleModel erpRoleModel = (ErpRoleModel) iterator2.next();
				if(erpModel.getModelId().equals(erpRoleModel.getModelId())){
					t.setChecked("true");
				}
			}
			tree.add(t);
			
		}
		return tree;
	}
	
	@RequestMapping("addModel")
	@ResponseBody
	public SsmMessage ModelAdd(String modelId,String roleId,String modelSubId){
		SsmMessage mes = new SsmMessage();
		String [] stringSplit = modelId.split(",");
		String [] stringSplit2 = modelSubId.split(",");
		System.out.println("stringSplit+++++++++++++++++++"+modelSubId+"         "+modelId);
		
		roleModelSubService.deleteByPrimaryKey(roleId);
		roleService.deleteModel(roleId);
		for(int i = 0;i<stringSplit.length;i++){
			ErpRoleModel model = new ErpRoleModel();
			model.setRoleModelId(UUID.randomUUID().toString());
			model.setRoleId(roleId);
			model.setModelId(stringSplit[i]);
			roleModelService.insertSelective(model);
		}
		
		for(int i = 0;i<stringSplit2.length;i++){
			ErpRoleModelSubordinate sub = new ErpRoleModelSubordinate();
			sub.setRoleId(roleId);
			sub.setModelId(stringSplit2[i]);
				map.put("SALE_if_wholesale",0);//map赋值-是否批发(键为数据库字段名)为0
			}else{
				map.put("SALE_if_wholesale",1);//map赋值-是否批发(键为数据库字段名)为1
				map.put("SALE_wholesale_state",saleWholesaleState);//map赋值-批发状态(键为数据库字段名)
			}
		}
		map.put("annexId", annexId);//map赋值-分店ID
		
		//查询数据
		List<Map<String,Object>> data = sctockmpService.findAll(map);//订单:查询订单列表
		int count = sctockmpService.findAllSize(map);//订单:查询订单列表数量
		
		//设置方法返回参数
		Map<String,Object> mapResult = new HashMap<String, Object>();//实例化HashMap
		//layui数据表格需要返回的参数
		map.put("count", count);//map赋值-总条数
		map.put("data", data);//map赋值-数据
		map.put("code",0);//map赋值-状态code为0
		map.put("msg", "");//map赋值-消息msg为‘’
		return map;//返回map
	}
	
	/**
	 * 查询当前登录人员需要审核的订单
	 * @param sctockData 混合数据
	 * @param saleDate 销售时间
	 * @param page 当前页数
	 * @param limit 显示行数
	 * @param session HttpSession
	 * @return 订单集合
	 * @dataTime 2017年11月27日14:18:37
	 */
	@RequestMapping("/findAllAudit")
	@ResponseBody  //ajax注解
	public Map<String,Object> findAllAudit(String sctockmpData,String saleDate,int page,int limit,HttpSession session){
		Map<String, Object> map = new HashMap<String, Object>();//实例化HashMap
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到Session中的员工对象
		String roleName = staff.getRoleName();//得到员工对象中的角色名称
		//权限判断
		if(!"管理员".equals(roleName)){//如果员工角色不是‘管理员’
			map.put("annexId", staff.getAnnexId());//给分店ID赋值,赋值为当前登录人的分店ID
		}
		//权限判断
		if("分店批发审核员".equals(roleName)){//如果员工角色是‘分店批发审核员’
			map.put("SALE_if_wholesale",1);//map赋值-是否批发(键为数据库字段名)为1
			map.put("SALE_wholesale_state",1);//map赋值-批发状态(键为数据库字段名)为1
		}else if("分店财务员".equals(roleName)){//如果员工角色是‘分店财务员’
			map.put("SALE_if_wholesale",1);//map赋值-是否批发(键为数据库字段名)为1
			map.put("SALE_wholesale_state",2);//map赋值-批发状态(键为数据库字段名)为2
		}else if("分店经理".equals(roleName)){//如果员工角色是‘分店经理’
			map.put("SALE_if_wholesale",1);//map赋值-是否批发(键为数据库字段名)为1
			map.put("SALE_wholesale_state",3);//map赋值-批发状态(键为数据库字段名)为3
	@RequestMapping("/auditPurchase")
	public SsmMessage auditPurchase(String purcId,String state,String feedBack,HttpSession session){
		SsmMessage mes = new SsmMessage();//定义一个消息类用于返回jsp
		Map<String,Object>map = new HashMap<String,Object>();//定义一个map集合
		if(Tools.isEmpty(feedBack)){//判断字符串是否为空
			map.put("feedBack", "暂无反馈信息");
		}else{
			map.put("feedBack", feedBack);//map集合中存入 反馈消息
		}
		map.put("purcId", purcId);//map集合中存入财务id
		map.put("state", state);//map集合中存入 审核是否通过   state=2 通过 state=0 不通过
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到人员session
		map.put("staff", staff);
		int rows = erpPurchaseService.auditPurchase(map);
		return mes;
	}
	/**
	 * 查询合同表
	 * @return map
	 */
	@ResponseBody
	@RequestMapping("/pact")
	public List<ErpPact> findPactText(){
		return erpPactService.findPactText();//查询合同表
	}
	/**
	 * 查询单个对象
	 * @param purcId 采购id
	 * @return 返回采购对象
	 */
	@ResponseBody
	@RequestMapping("/selectByPrimaryKey")
	public ErpPurchase selectByPrimaryKey(String purcId){
		return erpPurchaseService.selectByPrimaryKey(purcId);//根据ID查询
	}
	/**
	 * 查询采购信息(采购原材料)
	 * @param purcId
	 * @return
	 */
	@RequestMapping("/showErp")
	@ResponseBody
	public ErpPurchase updateRaw(String purcId){
		return erpPurchaseService.showErp(purcId);//查询修改信息(原材料)
	}
	/**
	 * 查询采购信息(采购成品)
	 * @param purcId
	/**
	 * 与当前时间比
	 * @param date
	 * @return 如果未超过返回true,如果已经超过返回false
	 * @throws ParseException 
	 */
	public static boolean isDateBefore(String date) throws ParseException{
		if(isEmpty(date)) return false ;
		Date exp = CommomUtils.SDF_TIME.parse(date);
		Date now = new Date();
		return now.before(exp);
	}
	
	/**
     * 获取前一天日期yyyyMMdd
     * @see 经测试,针对闰年02月份或跨年等情况,该代码仍有效。测试代码如下
     * @see calendar.set(Calendar.YEAR, 2013);
     * @see calendar.set(Calendar.MONTH, 0);
     * @see calendar.set(Calendar.DATE, 1);
     * @see 测试时,将其放到<code>calendar.add(Calendar.DATE, -1);</code>前面即可
     * @return 返回的日期格式为yyyyMMdd
     */
    public static String getYestoday(){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1);
        return CommomUtils.SDF_DATE.format(calendar.getTime());
    }
	
	/**
	 * 将首字母大写
	 * @param name 属性名
	 * @return 例如传入属性name,得到的结果是Name
	 */
	public static String firstUpp(String name){
		if(isEmpty(name)) return name ;
		char first = name.charAt(0) ;
		String newName = Character.toUpperCase(first)+name.substring(1) ;
		return newName ;
	}
	
	/**
	 * 将字符串编码,utf-8格式
	 * @param str
	 * @return
	 */
	public static String encode(String str){

/**
 * @da2017年11月2日
 * @version 1.0
 */
@Controller
@RequestMapping("pact")
public class PactAction {
	
	@Resource
	private ErpApplyService erpApplyService;//供货商
	
	@Resource
	private ErpPurchaseService erpPurchaseServicel;//采购订单
	
	@Resource
	private PactTypeService pactTypeService;//合同类型
	
	@Resource
	private ErpPactService erpPactService;
	
	SsmMessage mes = new SsmMessage();//消息类
	/**
		map.put("count", modelService.findRowCount(model));
		map.put("data", list);
		map.put("code",0);
		map.put("msg", "");
		return map;
	}
	
	@RequestMapping("getErpModel")
	@ResponseBody
	public String getErpModel() throws JsonProcessingException{
		ObjectMapper objectMapper = new ObjectMapper();
		List<ErpModel>list = modelService.getErpModel();
		String json = objectMapper.writeValueAsString(list);
		System.out.println("model          :"+json);
		return json;
	}
	
	@ResponseBody
	@RequestMapping("add")
	public SsmMessage add(ErpModel model){
		SsmMessage mes = new SsmMessage();
		if("".equals(model.getModelId()) || null==model.getModelId()){
			model.setModelId(UUID.randomUUID().toString());
			model.setIsva("1");
			model.setErpModelId("0");
			modelService.insertSelective(model);
			mes.setMes("add");
		}else{
			modelService.updateByPrimaryKeySelective(model);
			mes.setMes("update");
		}
		return mes;
		
	}
	
	
	@RequestMapping("deleteModel")
	@ResponseBody
	public SsmMessage deleteRole(String modelId){
		SsmMessage mes = new SsmMessage();
		int rows = modelService.deleteModel(modelId);
		if(rows>0){

/**
 * 分店销售订单action
 * @data 2017年11月8日08:46:24
 */
@Controller
@RequestMapping("/sctockmp")
public class SctockmpAction {
	@Resource
	AnnexService annexService;//分店表
	@Resource
	SctockmpService sctockmpService;//分店销售订单表
	
	/**
     * 查询今天的订单数量
     * @return 订单数量
	 * @dataTime 2017年12月11日16:24:53
     */
	@RequestMapping("/findToDay")
	@ResponseBody  //ajax注解
	public int findToDay(){
		return sctockmpService.findToDay();//订单:查询今天的订单数量
	}
	
		map.put("sctockmpData", sctockmpData);//map赋值-查询的混合数据
		if(saleDate!=null && !"".equals(saleDate)){//如果销售时间不为空
			String str[] = saleDate.split(" "+"-"+" ");//则分割销售时间字符串,根据 - 分割
			map.put("saleDate_begin", str[0]);//map赋值-开始销售时间
			map.put("saleDate_end", str[1]);//map赋值-结束销售时间
		}
		
		List<Map<String,Object>> data = sctockmpService.findAll(map);//订单:查询订单列表
		int count = sctockmpService.findAllSize(map);//订单:查询订单列表数量
		
		//设置方法返回参数
		Map<String,Object> mapResult = new HashMap<String, Object>();//实例化HashMap
		//layui数据表格需要返回的参数
		map.put("count", count);//map赋值-总条数
		map.put("data", data);//map赋值-数据
		map.put("code",0);//map赋值-状态code为0
		map.put("msg", "");//map赋值-消息msg为‘’
		return map;//返回map
	}
	
	/**
	 * 进入销售页面
	 * @param session HttpSession
	 * @param saleId 订单ID
	 * @return 分店销售页面sell.jsp(参数:times-当前时间,staName-员工姓名)
	 * @dataTime 2017年11月23日15:06:39
	 */
	@RequestMapping("/sellEntrance")
	public ModelAndView sellEntrance(String saleId,HttpSession session){
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到Session中的员工对象
		ModelAndView view = new ModelAndView("sell");//实例化模型视图-分店销售页面
		//当前日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//实例化时间格式化类(只需年月日)
		String times = sdf.format(new Date());//格式化当前时间
		view.addObject("times", times);//模型视图赋值-格式化后的时间
		view.addObject("staName", staff.getStaName());//模型视图赋值-员工姓名
		
		if(saleId!=null && !"".equals(saleId)){//如果订单ID不为空
			view.addObject("saleId", saleId);//模型视图赋值-订单ID
		}
		
		ErpAnnex annex = annexService.findById(staff.getAnnexId());//分店:根据分店ID查询分店
		view.addObject("annexId",staff.getAnnexId());//模型视图赋值-分店ID
		view.addObject("annexName",annex.getAnnexName());//模型视图赋值-分店名称
		return view;//返回模型视图
	}
	
	/**
	 * 增加销售订单
		audit.setAudSerial(UUID.randomUUID()+"");//审核赋值-审核编号-随机生产
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到Session中的员工对象
		audit.setAudName(staff.getStaName());//审核赋值-审核人-员工姓名
		audit.setAudTime(Tools.getCurDateTime());//审核赋值-审核时间-工具类:得到当前日期时间
		audit.setState(0);//审核赋值-审核状态-0
		audit.setFeedBack(feedBack);//审核赋值-反馈-打回原因
		audit.setCreatetime(Tools.getCurDateTime());//审核赋值-创建时间-工具类:得到当前日期时间
		audit.setCreater(staff.getStaId());//审核赋值-创建人-员工ID
		audit.setIsva(1);//审核赋值-是否有效-是
		auditDao.insertSelective(audit);//无返回-审核:增加(可以为空)
		//更改状态
		ErpSctockmp sctockmp = new ErpSctockmp();//实例化一个订单
		sctockmp.setSaleId(saleId);//订单赋值-订单ID
		sctockmp.setSaleWholesaleState(0);//订单赋值-批发状态-0
		return sctockmpDao.updateByPrimaryKeySelective(sctockmp);//订单:根据订单ID修改订单信息
	}

	@Override
	public int updateSctockmp(ErpSctockmp sctockmp, List<ErpSctockmpDetail> list) {
		//修改订单
		sctockmpDao.updateByPrimaryKeySelective(sctockmp);//无返回-订单:根据订单ID修改订单信息
		//删除之前的订单明细
		sctockmpDetailDao.updateIsvaBySaleId(sctockmp.getSaleId());//无返回-订单明细:根据订单ID把详细订单设为无效
		//增加订单明细
		sctockmpDetailDao.addSctockmpDetailList(list);//无返回-订单明细:批量增加销售订单明细
		//如果为零售(则需减库存,增加财务)
		if(sctockmp.getSaleIfWholesale()==0){
			//减库存
			List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
			for(int i =0;i<list.size();i++){//循环 明细订单集合
				Map<String, Object> map = new HashMap<String, Object>();//实例化map
				map.put("annexId",sctockmp.getAnnexId());//map赋值-分店ID-订单中分店ID
				map.put("kinId",list.get(i).getKinId());//map赋值-商品ID-第i个明细订单中的商品ID
				map.put("kmpNum",list.get(i).getKmpNum());//map赋值-商品数量-第i个明细订单中的商品数量
				mapList.add(map);//把map加入集合
			}
			int row3 = sumstockDao.updateStockSuount(mapList);//订单:批量减少库存(根据分店ID和商品ID减少)
			if(row3<1){
				return 0;
			}
			
			//增加财务(先增加分店收入明细,再增加分店表的总资产)
			/*  增加分店收入明细  */
			ErpLedgyr ledgyr = new ErpLedgyr();//实例化一个分店财务模型
			ledgyr.setGyrId(UUID.randomUUID()+"");//赋值-分店支出收入id-随机生成
			ledgyr.setSaleId(sctockmp.getSaleId());//赋值-分店销售ID-订单ID
			ledgyr.setAnnexId(sctockmp.getAnnexId());//赋值-分店ID-订单分店ID
	
		detail.setIsva("0");//赋值,订单明细是否有效改变
		detail.setIndentId(dent.getIndentId());//给订单明细,生产订单主键赋值生产订单主键
		
		dent.setIsva("0");//赋值,订单是否有效改变
		dent.setIndentId(dent.getIndentId());//给生产订单主键,赋值生产订单主键
		
		SsmMessage mes = new SsmMessage();//new出消息类
		
		int rows=0;//定义数值等于0
		
		rows = proindentService.updateByPrimaryKeySelective(dent);//订单删除方法
		rows=ProindentDetailService.updateByPrimaryKeySelective(detail);//订单明细删除方法
		
		if(rows>0){//数值大于0
			mes.setMes("操作成功");
			mes.setState(1);
		}else{
			mes.setMes("操作失败");
			mes.setState(0);
		}
		
		return mes;
	}
	
	/**
	 * 查询产品,订单,订单明细,订单生产日志,订单生产日志明细,根据订单ID查询
	 * @param express
	 * @param indentId 生产订单主键
	 * @param int 总行数
	 * @return
	 */
	@RequestMapping("/findByshow")
	@ResponseBody
	public List<Map<String, Object>> findByshow(ErpProindent dent){
		
		int num=proindentService.findcount(dent.getIndentId());//根据生产订单主键,查询订单明细总行数
		
		Map<String, Object> m=new HashMap<String,Object>();//定义map
		
		m.put("indentId", dent.getIndentId());//把生产订单主键传入map中
		m.put("int", num);//把订单明细总行数传入map中
		
		List<Map<String, Object>> map=proindentService.findByshow(m);//查询产品,订单,订单明细,订单生产日志,订单生产日志明细,根据订单ID查询和订单明细总行数查询
	 * 注入采购订单Service
	 */
	@Resource
	private ErpPurchaseService erpPurchaseService;

	/**
	 * 注入原材料Service
	 */
	@Resource
	private ErpRawService erpRawService;

	/**
	 * 注入订单详细Service
	 */
	@Resource
	private ErpPurchaseDetailsService erpPurchaseDetailsService;

	/**
	 * 注入货品表Service
	 */
	@Resource
	private ErpKindsService erpKindsService;

	/**
	 * 注入合同Service
	 */
	@Resource
	private ErpPactService erpPactService;
	/**
	 * 显示和查询和分页(采购原材料)
	 * @param purcId
	 * @param keywords
	 * @return map
	 */
	@RequestMapping("/showAll")
	@ResponseBody
	public Map<String,Object> showAll(String keywords,String page,String limit){
		Map<String,Object> mapPage = new HashMap<String,Object>();//定义Map集合
		Pages pages = new Pages();//得到分页类
		pages.setCurPage(Integer.valueOf(page));//当前页数
		pages.setMaxResult(Integer.valueOf(limit));//每页显示最大条数
		mapPage.put("pages", pages);//传入分页参数
		//判断前台传值是否为空,如不为空则进行迷糊查询
		if(keywords==null || "".equals(keywords)){
			mapPage.put("keywords", "");//为空不传值
		}else {
			mapPage.put("keywords", "%"+keywords+"%");//不为空传值模糊查询
		}
		Map<String,Object> map = new HashMap<String,Object>();//定义Map集合用于将前台的值
		List<ErpPurchase> list = erpPurchaseService.selectAll(mapPage);//查询增加原材料数据

		map.put("code", 0);
		map.put("msg", "");
	}

	/**
	 * 随机生成字符串
	 * @param size 位数
	 * @return 随机字符串
	 */
	public static String getRandomString(int size){
		String s = RandomStringUtils.random(size,char_random) ; 
		return s  ;
	}

	/**
	 * 得到随机数字
	 * @param num
	 * @return
	 */
	public static int getRandomNumber(int num){
		int n = random.nextInt(num) ;
		return n ;
	}
	/**
	 * 提供字符串判断是否为空
	 * @param input
	 * @return input为空返回true
	 */
	public static boolean isEmpty(String input){
		return null==input || 0==input.length() || 0==input.replaceAll("\\s", "").length();
	}
	/**
	 * 得到编号
	 * @param data
	 * @param type
	 * @return
	 */
	public static String getSerial(String data,String type){
		if(Tools.isEmpty(data)){
			return type+""+Tools.getDateStr(new Date())+"-001";
		}
		String ser = data.substring(data.lastIndexOf("-")+1,data.length());
		String seril ="";
		if(ser.indexOf("0")!=-1){
			seril = ser.substring(ser.lastIndexOf("0")+1,ser.length());
			System.out.println("输出一下serial+"+seril);
		}else{
			seril = ser.substring(ser.lastIndexOf("-")+1,ser.length());

/**
 * 采购订单Action
 * 2017年10月19日-下午2:01:02
 */
@Controller
@RequestMapping("Purchase")
public class ErpPurchaseAction {
	/**
	 * 注入采购订单Service
	 */
	@Resource
	private ErpPurchaseService erpPurchaseService;

	/**
	 * 注入原材料Service
	 */
	@Resource
	private ErpRawService erpRawService;

	/**
	 * 注入订单详细Service
	 */
	@Resource
	private ErpPurchaseDetailsService erpPurchaseDetailsService;

	/**
	 * 注入货品表Service
	 */
	@Resource
	private ErpKindsService erpKindsService;

	/**
	 * 注入合同Service
	 */
	@Resource
	private ErpPactService erpPactService;
	 */
	@RequestMapping("/showAlls")
	@ResponseBody
	public Map<String,Object> showAlls(String keywords,String page,String limit){
		Map<String,Object> mapPage = new HashMap<String,Object>();//定义Map集合
		Pages pages = new Pages();//得到分页类
		pages.setCurPage(Integer.valueOf(page));//当前页数
		pages.setMaxResult(Integer.valueOf(limit));//每页显示最大条数
		mapPage.put("pages", pages);//传入分页参数
		//判断前台传值是否为空,如不为空则进行迷糊查询
		if(keywords==null || "".equals(keywords)){
			mapPage.put("keywords", "");//为空不传值
		}else {
			mapPage.put("keywords", "%"+keywords+"%");//不为空传值模糊查询
		}
		Map<String,Object> map = new HashMap<String,Object>();//定义Map集合用于将前台的值
		List<ErpPurchase> list = erpPurchaseService.selectAlls(mapPage);//查询增加成品数据

		map.put("code", 0);
		map.put("msg", "");
		map.put("count", erpPurchaseService.purchaseFindRow(mapPage));//规定分页信息
		map.put("data", list);//传入list
		return map;//返回map
	}

	/**
	 * 删除(修改状态)
	 * @param state
	 * @param purcId
	 * @return eph
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public ErpPurchase delete(ErpPurchase isva , String purcId){
		ErpPurchase eph = new ErpPurchase();//得到采购订单Model
		isva.setIsva(0);//得到状态值
		isva.setPurcId(purcId);//传入采购ID
		int d_purcId = erpPurchaseService.updateByPrimaryKeySelective(isva);//进行修改
		return eph;//返回eph
	}

	/**

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值