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

基于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 登录

		map.put("code", 0);
		map.put("msg", "");
		map.put("count",service.selectByPrimaryNewCount(map));
		map.put("data", list);
		return map;
	}

	/**
	 * 审批的方法
	 * @param session 取采购人
	 * @param qua 注释对象
	 * @return 信息类
	 */
	@RequestMapping("updateByPrimaryKeySelective")
	@ResponseBody
	public SsmMessage updateByPrimaryKeySelective(HttpSession session,ErpQuality qua,Integer[] qdetGood,Integer[] qdetBab,String[] rawId,String[] kinId){
		
		//新建一个质检明细的集合
		List<ErpQualityDetail> detlist = new ArrayList<ErpQualityDetail>();
		for(int i =0;i<qdetGood.length;i++){//循环一个数组因为两个数组的值对应只有循环一个就好了
			ErpQualityDetail det = new ErpQualityDetail();//创建一个质检对象
			det.setQdetGood(qdetGood[i]);//把数组里面的东西放入对象
			det.setQdetBab(qdetBab[i]);
			if(kinId!=null){
				det.setKinId(kinId[i]);
			}else{
				det.setRawId(rawId[i]);
			}
			det.setQuaId(qua.getQuaId());
			detlist.add(det);//把对象放入集合
		}
		SsmMessage mes = new SsmMessage();
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到用户对象
		qua.setQuaQc(staff.getStaName());//把当前用户名放入质检里
		int rows;
		try {
			rows = service.updateByPrimaryKeySelective(qua,detlist);
			if(rows>-1){ 
				mes.setMes("成功");
				mes.setState(1);
			}else{
				mes.setMes("失败");
				mes.setState(0);
			}
		} catch (BackException e) {
			e.printStackTrace();
		}
		
		return mes;
	}
	/**
 */
@Controller
@RequestMapping("/annex")
public class AnnexAction {
	@Resource
	AnnexService service;
	
	/**
	 * 查找所有分店的数量
	 * @return 分店数量
	 */
	@RequestMapping("/findAllSize")
	@ResponseBody
	public int findAllSize(){
		return service.findAllSize(new HashMap<String, Object>());
	}
	
	/**
	 * 查询所有分店
	 * @param page 当前页数
	 * @param limit 显示行数
	 * @param annexData 查询参数
	 * @param annexTime 查询创建时间
	 * @return 产品集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String,Object> findAll(int page,int limit,String annexData,String annexTime){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("firstRows", limit*(page-1));
		map.put("limit", limit);
		map.put("annexData", annexData);
		if(annexTime!=null && !"".equals(annexTime)){
			System.out.println("时间:"+annexTime);
			String str[] = annexTime.split(" "+"-"+" ");
			map.put("annexTime_begin", str[0]);
			map.put("annexTime_end", str[1]);
	@RequestMapping("/findById")
	@ResponseBody
	public List<Map<String, Object>> findById(ErpProindent dent){
		List<Map<String, Object>> map=proindentService.selectByPrimaryKeyid(dent.getIndentId());//根据订单id查询明细,和商品表
		
		return map;
		
	}
	
	
	/**
	 * 根据ID查询所有,根据订单id查询明细,和商品表查看明细
	 * @param express
	 * @return
	 */
	@RequestMapping("/findByshowId")
	@ResponseBody
	public List<Map<String, Object>> findByshowId(ErpProindent dent){
		List<Map<String, Object>> map=proindentService.showid(dent.getIndentId());//根据订单id查询明细,和商品表查看明细
		
		return map;
		
	}
	
	
	
	
	/**
	 * 根据ID查询单个订单
	 * @param express
	 * @return
	 */
	@RequestMapping("/show")
	@ResponseBody
	public ErpProindent show(ErpProindent dent){
		ErpProindent map=proindentService.findById(dent.getIndentId());//根据ID查询
		
		return map;
		
	}
	

	/**
	 * 删除方法
	 * @param express
	 * @return
	 */
	 * @return rows
	 */
	@RequestMapping("/addKinds")
	@ResponseBody
	public int addKinds(ErpPurchase record,String[] kinId,String[] number,HttpSession session){
		int rows =0;//定义参数rows
		//判断前台是否传入ID,有则修改,无则增加
		if(record.getPurcId()!=null && !"".equals(record.getPurcId())){
			rows = erpPurchaseService.update(record);//修改
		}else{
			String time = Tools.getCurDateTime();//获取当前时间
			record.setPurcTime(time);//采购时间   
			ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到人员session
			record.setPurcName(staff.getStaName());//session
			record.setCreater("2");//采购成品为2
			record.setCreatetime(time);//创建时间
			Double a = 0.0;//定义一个空数值
				for(int i=0;i<kinId.length;i++){
					ErpPurchaseDetails eetails2 = new ErpPurchaseDetails();//得到订单详细
					String [] arr = kinId[i].split("~");//分割符号~
					eetails2.setPurcTotalPrice(Double.valueOf(arr[1])*Integer.valueOf(number[i]));
					a = a+Double.valueOf(arr[1])*Integer.valueOf(number[i]);//累加
					record.setPurcTotalPrice(a);;//添加总价格
					String sa = Tools.getDateOrderNo();//得到订单编码格式
					record.setPurcSerial(sa);;//增加订单
				}
				rows= erpPurchaseService.insert(record);//添加到订单表中
					for(int i=0;i<kinId.length;i++){
						ErpPurchaseDetails details = new ErpPurchaseDetails();//订单详细
						String [] arr = kinId[i].split("~");//分割符号~
						details.setPurcTotalPrice(Double.valueOf(arr[1])*(Integer.valueOf(number[i])));//增加总价格,进行数字转换
						details.setPurcTotalNumber(Integer.valueOf(number[i]));//增加数量
						details.setPurcId(record.getPurcId());//增加订单ID
						details.setRowId(arr[0]);//增加货品ID
						rows = erpPurchaseDetailsService.insertSelective(details);//增加到订单详细表中
				}
			}
		return rows;
	}
	/**
	 * 显示采购图
	 * @param date
	 * @return
	 */
	@RequestMapping("/showTuxing")
	@ResponseBody
	public Map<String,Object> showTuxing(String date){

/**
 * 分店销售订单service实现接口
 */
@Service
public class SctockmpServiceImpl implements SctockmpService{
	@Resource
	ErpSctockmpMapper sctockmpDao;//分店销售订单
	@Resource
	ErpSctockmpDetailMapper sctockmpDetailDao;//分店销售订单明细
	@Resource
	ErpSumstockMapper sumstockDao;//分店库存表
	@Resource
	ErpLedgyrMapper ledgyrDao;//分店财务
	@Resource
	ErpAnnexMapper annexDao;//分店表
	@Resource
	ErpAuditMapper auditDao;//审核表

	@Override
	public int addSctockmp(ErpSctockmp sctockmp, List<ErpSctockmpDetail> list) {
		//增加销售订单
		int row1 = sctockmpDao.insertSelective(sctockmp);//订单:增加(可以为空)
		//增加销售订单明细
		int row2 = sctockmpDetailDao.addSctockmpDetailList(list);//订单明细:批量增加销售订单明细
		//如果为零售(则需减库存,增加财务)
		if(sctockmp.getSaleIfWholesale()==0){//如果销售订单对象的是否批发 等于零的时候
			//减库存
			List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();//实例化一个map集合
			for(int i =0;i<list.size();i++){//循环分店销售订单明细集合
		audit.setBusinessId(saleId);//审核赋值-业务ID-订单ID
		audit.setAudSerial(UUID.randomUUID()+"");//赋值-审核编号-随机生产
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到Session中的员工对象
		audit.setAudName(staff.getStaName());//赋值-审核人-员工姓名
		audit.setAudTime(Tools.getCurDateTime());//赋值-审核时间-工具类:得到当前日期时间
		audit.setState(2);//赋值-审核状态-2
		audit.setCreatetime(Tools.getCurDateTime());//赋值-创建时间-工具类:得到当前日期时间
		audit.setCreater(staff.getStaId());//赋值-创建人-员工ID
		audit.setIsva(1);//赋值-是否有效-是
		auditDao.insertSelective(audit);//无返回-审核:增加(可以为空)
		//最后增加订单状态
		return sctockmpDao.updateWholesaleStateAdd(saleId);//订单:审核通过,增加批发状态
	}

	@Override
	public int updateWholesaleStateZero(String saleId,String feedBack,HttpSession session) {
		//增加审核表
		ErpAudit audit = new ErpAudit();//实例化一个审核类
		audit.setBusinessId(saleId);//审核赋值-业务ID-订单ID
		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);//无返回-订单明细:批量增加销售订单明细
	/**
	 * 审核通过,增加批发状态
	 * @param saleId 订单ID
	 * @param session HttpSession
	 * @return 影响行数
	 */
	@RequestMapping("/updateWholesaleStateAdd")
	@ResponseBody  //ajax注解
	public int updateWholesaleStateAdd(String saleId,HttpSession session){
		return sctockmpService.updateWholesaleStateAdd(saleId,session);//订单:审核通过,增加批发状态
	}
	
	/**
	 * 审核打回,更改批发状态
	 * @param saleId 订单ID
	 * @param feedBack 打回原因
	 * @param session HttpSession
	 * @return 影响行数
	 */
	@RequestMapping("/updateWholesaleStateZero")
	@ResponseBody  //ajax注解
	public int updateWholesaleStateZero(String saleId,String feedBack,HttpSession session){
		return sctockmpService.updateWholesaleStateZero(saleId,feedBack,session);//订单:审核失败,根据订单ID修改批发状态为0
	}
	
	/**
	 * 查询所有分店销售订单
	 * @param sctockData 混合数据
	 * @param saleDate 销售时间
	 * @param saleWholesaleState 批发状态
	 * @param annexId 分店ID
	 * @param page 当前页数
	 * @param limit 显示行数
	 * @param session HttpSession
	 * @return 订单集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody  //ajax注解
	public Map<String,Object> findAll(String sctockmpData,String saleDate,Integer saleWholesaleState,String annexId,int page,int limit,HttpSession session){
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");//得到Session中的员工对象
		String roleName = staff.getRoleName();//得到员工对象中的角色名称
		//权限判断
		if(!"管理员".equals(roleName)){//如果员工角色不是‘管理员’
			annexId = staff.getAnnexId();//给分店ID赋值-当前登录人的分店ID
		}
		
		return mes;
	}
	
	
	
	/**
	 * 删除方法
	 * 
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public SsmMessage delete(ErpPactType type){
		//给合同类型是否有效赋值为0无效
		type.setIsva(0);
		//将合同类型id赋值为合同类型id
		type.setPatypeId(type.getPatypeId());
		//int型 合同类型的选择性修改方法
		int rows=pactTypeService.updateByPrimaryKeySelective(type);
		//判断值大于0
		if(rows>0){
			//消息类的消息值赋值为成功
			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;
		
	}
}
/**
 * 
	 * @param session
	 * @return
	 * @throws JsonProcessingException
	 */
	@RequestMapping("/showListAjax")
	@ResponseBody  //ajax的注解
	public List<ErpKinds> showListAjax(){
		
		List<ErpKinds> list = service.findStation();//查询所有商品
		return list;
	}
	
	

	/**
	 * 根据ID查询
	 * @param session
	 * @return
	 * @throws JsonProcessingException
	 */
	@RequestMapping("/findById")
	@ResponseBody  //ajax的注解
	public ErpKinds findById(ErpKinds kinds){
		
		ErpKinds list = service.selectByPrimaryKey(kinds.getKinId());//查询所有商品
		return list;
	}
	/**
	 * 查询单个对象仓库使用方法
	 * @param kinId 商品id
	 * @return 返回药品单个对象
	 */
	@RequestMapping("/selectByPrimaryNewKinId")
	@ResponseBody  //ajax的注解
	public ErpKinds selectByPrimaryNewKinId(String kinId){
		
		return service.selectByPrimaryNewKinId(kinId);
	}
	
	/**
	 * Excel导入
	 * @param file Excel文件
	 * @param session HttpSession
	 * @return 是否成功
	 */
	@RequestMapping("/excelIn")
	@ResponseBody  //ajax的注解
	public Map<String,Object> excelIn(MultipartFile file,HttpSession session){
/**
 * 
 */

/**
 * @version 1.0
 */
@Controller
@RequestMapping("log")
public class LogAction {
	
	@Resource
	public LogService logService;//生产日志
	
	@Resource
	public LogDetailService logDetailService;//生产日志明细
	
	@Resource
	public ProindentDetailService proindentDetailService;//订单明细
	
	@Resource
    }
    
    /**
     * 金额分转元
     * @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){
            return "0." + amount;
        }else{
            return amount.substring(0, amount.length()-2) + "." + amount.substring(amount.length()-2);
        }
    }
    
    /**
     * @title 金额分转元
     * @description 传入一个金额的分进制字符串,返回一个金额的元进制字符串
     * @see 注意:如果传入的参数中不
     * @see 该方法返回的金额字符串格式为<code>00.00</code>,其整数位有且至少有一个,小数位有且长度固定为2
     * @param amount  金额的分进制字符串
     * @return String 金额的元进制字符串
     * @versions 1.0
     */
    public static String moneyFenToYuan2(String money){
		BigDecimal num = new BigDecimal("100"); //建立元转分倍数
		//NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用:¥15,000.48
		try{
			BigDecimal newMoney=new BigDecimal(money).divide(num,2);//相除,保留2位小数
	@ResponseBody
	public int addOrUpdate(ErpAnnex annex,HttpSession session){
		ErpStaff staff=(ErpStaff) session.getAttribute("staff");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		if(staff!=null){
			annex.setCreater(staff.getStaId());
			annex.setCreatetime(sdf.format(new Date()));
		}
		int row =0;
		if(annex.getAnnexId()!=null && !"".equals(annex.getAnnexId())){//修改
			row = service.updateByPrimaryKeySelective(annex);
		}else{//增加
			annex.setAnnexId(UUID.randomUUID()+"");
			annex.setAnnexNumber(UUID.randomUUID()+"");
			annex.setIsva(1);
			annex.setAnnexTime(sdf.format(new Date()));
			row = service.insertSelective(annex);
		}
		return row;
	}
	
	/**
	 * 查找所有分店集合
	 * @return 分店集合
	 */
	@RequestMapping("/showList")
	@ResponseBody
	public List<ErpAnnex> showList(){
		return service.getAnnex();
	}
	
	/**
	 * 初始化加载所有分店统计图
	 * @return 返回map集合
	 */
	@RequestMapping("/showChar")
	@ResponseBody
	public Map<String,Object> showChar(String annexId,String year,String month){		
		Map<String,Object>parMap = new HashMap<String,Object>();//定义一个map集合用于sql查询参数
		parMap.put("annexId", annexId);//分店id主键
		
		if(Tools.isEmpty(year)){
			parMap.put("year", "");//年份
		}else{
			parMap.put("year", "%"+year+"%");//年份
		}
	@ResponseBody
	public SsmMessage login(ErpStaff staff,HttpServletRequest request,HttpSession session,HttpServletResponse response) throws ServletException, IOException{
		System.out.println("进入方法"+staff.getStaEmail()+"               "+staff.getStaPwd());
		ErpStaff rows = staffService.getUser(staff);
		SsmMessage mes = new SsmMessage();
		if(rows!=null){
			session.setAttribute("staff", rows);
			mes.setMes("ok");
			return mes;
		}else{
			System.out.println("妹纸");
			mes.setMes("no");
			return mes;
		}
	}
	
	@RequestMapping("findAllModel")
	public ModelAndView findAllModel(HttpSession session,HttpServletResponse response,HttpServletRequest request) throws IOException{
		ErpStaff staff = (ErpStaff) session.getAttribute("staff");
		if(staff!=null){
			List<ErpModel>list = modelService.findAllModel(staff.getStaEmail());
			List<ErpModel>list2 = modelService.getModel(staff.getRoleId());
			request.setAttribute("model", list);
			request.setAttribute("modelSub", list2);
			ModelAndView view = new ModelAndView("homePage");
			return view; 
		}else{
			return null;
		}
	}

	@ResponseBody
	@RequestMapping("findAll")
	public Map<String, Object>findAll(ErpStaff staff,int page ,int limit){
		Map<String, Object> map = new HashMap<String, Object>();
		System.out.println("搜索框中的值为:"+staff.getRoleName());
		Pages pages = new Pages();
		pages.setCurPage(page);
		pages.setMaxResult(limit);
		staff.setPage(pages.getFirstRows());
		staff.setLimit(limit);
		List<ErpStaff>list = staffService.findAll(staff);
		map.put("count", staffService.findRowCount(staff));
		map.put("data", list);
		map.put("code",0);
		map.put("msg", "");
		return map;
	public ErpProindent showidQualit(String indentId){
		return proindentService.showidQualit(indentId);//质检表查询单个对象
	}
	/**
	 * 生产订单审核
	 * @param indentId 生产订单id
	 * @param state 审核状态
	 * @param feedBack 反馈信息
	 * @return 返回消息类
	 */
	@ResponseBody
	@RequestMapping("/auditPpoindent")
	public SsmMessage auditPpoindent(String indentId,String state,String feedBack){
		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("indentId", indentId);//map集合中存入财务id
		map.put("state", state);//map集合中存入 审核是否通过   state=2 通过 state=0 不通过
		int rows = proindentService.auditPpoindent(map);
		return mes;
	}
}
/**
 * 
 */

		}
		map.put("indentId", indentId);//map集合中存入财务id
		map.put("state", state);//map集合中存入 审核是否通过   state=2 通过 state=0 不通过
		int rows = proindentService.auditPpoindent(map);
		return mes;
	}
}
/**
 * 
 */

/**
		}
		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();
		String fdId = UUID.randomUUID().toString();
		if(fdproId==""){
			ErpFdproform fd = new ErpFdproform();
			String serial = sdf.format(date);
			serial+=random.nextInt(100);
			fd.setFdproId(fdId);
			fd.setFdproSerial(serial);
			fd.setAnnexId(staff.getAnnexId());
			fd.setStaId(staff.getStaId());
			fd.setFdproSumprice(Double.valueOf(zong));
			fd.setFdproTime(String.valueOf(sdf1.format(date)));
			fd.setIsva("1");
			fd.setFdproIsva(0);
			fd.setFdproWarecount(count);
			fdproformService.insertSelective(fd);
			for(int i = 0;i<fdprolistmxCount1.length;i++){
				String dateTime = sdf.format(date);
				dateTime+=random.nextInt(100);
				ErpProlistmxsmall mall = new ErpProlistmxsmall();
				mall.setFdprolistmxId(UUID.randomUUID().toString());
				mall.setFdproId(fdId);
				mall.setKinId(kinId[i]);
				mall.setFdprolistmxNumber(dateTime);
				mall.setFdprolistmxMoney(Double.valueOf(fdprolistmxMoney1[i]));
				mall.setFdprolistmxCount(Integer.valueOf(fdprolistmxCount1[i]));
				mall.setFdprolistmxTime(sdf1.format(date));
				mall.setIsva("1");
				prolistmxsmallService.insertSelective(mall);
			}
			mes.setMes("add");
		}else{
			int rows = prolistmxsmallService.deleteFd(fdproId);
			if(rows>0){
				ErpFdproform fd = new ErpFdproform();
				for(int i = 0;i<fdprolistmxCount1.length;i++){
					String dateTime = sdf.format(date);
					dateTime+=random.nextInt(100);
					ErpProlistmxsmall mall = new ErpProlistmxsmall();
					mall.setFdprolistmxId(UUID.randomUUID().toString());
					mall.setFdproId(fdproId);
	
	/**
	 * 查找所有分店的数量
	 * @return 分店数量
	 */
	@RequestMapping("/findAllSize")
	@ResponseBody
	public int findAllSize(){
		return service.findAllSize(new HashMap<String, Object>());
	}
	
	/**
	 * 查询所有分店
	 * @param page 当前页数
	 * @param limit 显示行数
	 * @param annexData 查询参数
	 * @param annexTime 查询创建时间
	 * @return 产品集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String,Object> findAll(int page,int limit,String annexData,String annexTime){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("firstRows", limit*(page-1));
		map.put("limit", limit);
		map.put("annexData", annexData);
		if(annexTime!=null && !"".equals(annexTime)){
			System.out.println("时间:"+annexTime);
			String str[] = annexTime.split(" "+"-"+" ");
			map.put("annexTime_begin", str[0]);
			map.put("annexTime_end", str[1]);
		}
		
		List<ErpAnnex> data = service.findAll(map);
		int count = service.findAllSize(map);
		
		Map<String,Object> mapResult = new HashMap<String, Object>();
		//layui数据表格需要返回的参数

/**
 * @version 1.0
 */
@Controller
@RequestMapping("log")
public class LogAction {
	
	@Resource
	public LogService logService;//生产日志
	
	@Resource
	public LogDetailService logDetailService;//生产日志明细
	
	@Resource
	public ProindentDetailService proindentDetailService;//订单明细
	
	@Resource
	public ProindentService proindentService;//订单
	
	@RequestMapping("/add")
	@ResponseBody
	
	
	public SsmMessage add(ErpLog log,ErpLogDetail logdeta,String str,String indentId){
		
		SsmMessage mes = new SsmMessage();
		
		String[] sourceStrArray = str.split("&");//字符串分割
		System.out.println(sourceStrArray.length);
		
		double num=0;//总数量
		double quantity=0;//以生成数量

请添加图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springmvc是一种基于Spring框架的MVC(Model View Controller)开发模式的Web开发框架。它能够帮助开发者更好地管理请求和响应,让开发过程更加简洁和灵活。MyBatis是一个优秀的持久层框架,可以与Spring相结合行数据库操作。它能够通过注解或XML配置文件实现数据库的增删改查操作,使开发者能够高效地操作数据库。电商项目是一种在线购物平台,用户可以浏览商品信息、下单购买、查看订单等。Java商城源码是这种电商项目的实现代码,通过使用SpringMVC和MyBatis,能够快速搭建一个完整的电商网站。 SSM框架是指Spring+SpringMVC+MyBatis的组合,是一种常用的JavaWeb开发框架。Spring是一个轻量级的开源框架,提供了很多实用的功能,包括IOC(控制反转)和AOP(面向切面编程)等。SpringMVC是基于Spring的MVC框架,可以实现请求的分发和处理。MyBatis是一个持久层框架,可以与SpringMVC结合使用,完成数据库的操作。Maven是一种软件项目管理工具,可以自动下载和配置项目所需的第三方库和工具。 对于这个电商项目的Java商城源码,使用SSM框架和Maven行开发是一个不错的选择。首先,可以使用Maven来管理项目所需的依赖库,避免手动下载和配置的繁琐过程。其次,使用Spring来提供IOC容器和AOP功能,可以简化开发过程,并且使代码更加易于维护。然后,使用SpringMVC来处理请求和响应,实现网站的跳转和业务逻辑的处理。最后,使用MyBatis来完成与数据库的交互,实现商品信息的增删改查等功能。 综上所述,使用SSM框架和Maven行开发的电商项目Java商城源码,能够快速搭建一个完整的电商网站,实现商品的展示、购买和订单的管理等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值